Jun4928 / wanted-pre-onboarding-challenge-BE-task-JAN.2023

JAN.2023 wanted 프리온보딩 챌린지 BE 사전과제
29 stars 36 forks source link

사전과제 제출 #29

Open nuobasic opened 1 year ago

nuobasic commented 1 year ago
  1. 본인이 작성했던 코드 중 공유하고 싶은 코드를 이유와 함께 마크다운 code block 을 사용해 올려주세요 함수형으로 짜여진 코드가 없어서 공유를 못합니다.

  2. Layered Architecture(계층 아키텍처)에 대해서 설명해 주세요 레이어드 아키텍처 패턴은 정확히 한 패턴에 몇개의 어떤 레이어가 있어야 하는지를 명시하지 않지만, 가장 보편적인 레이어드 아키텍처 패턴은 4개의 레이어로 구성되어있습니다. presentation, business, persistence, database있습니다. -Presentation layer: UI, 브라우저에서의 유저와의 통신 로직을 다룸. -Business layer: 요청에 따른 비즈니스 로직을 다룸. -Persistence layer: DAO(Data Access Object) , ORM과 관련된 데이터베이스에 접근해서 데이터를 저장, 수정하는 함수 로직을 다룸. -Database layer: 데이터가 다 저장되어있는 곳. 데이터베이스. 핵심 원칙은 한 계층의 모든 요소는 오직 같은 계층에 존재하는 다른 요소나 계층상 "아래"에 위치한 요소에만 의존한다는 것입니다.

  3. Dependency Injection(의존성 주입)의 개념과 함께, 왜 필요한지 작성해 주세요 -개념: 의존성 주입이란 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴으로, 인터페이스를 사이에 둬서 클래스 레벨에서는 의존관계가 고정되지 않도록 하고 런타임 시에 관계를 동적으로 주입하여 유연성을 확보하고 결합도를 낮출 수 있게 해줍니다. 의존성이란 한 객체가 다른 객체를 사용할 때 의존성이 있다고 합니다. -필요 이유:Test가 용이해지고, 코드의 재활용성을 높여주며, 객체 간의 의존성(종속성)을 줄이거나 없엘 수 있고, 객체 간의 결합도이 낮추면서 유연한 코드를 작성할 수 있습니다.

  4. 본인이 사용하는 언어의 Functional Programming(함수형 프로그래밍) 스펙을 예제와 함께 소개해 주세요

    let arr = [1, 2, 3, 4, 5];
    let map = arr.map(function (x) {
    return x * 2;
    });
    console.log(map);
  5. (코드 작성) 다음 스펙을 만족하는 delay 함수를 작성해 주세요 (hint: Promise 사용)

    
    type SomeFunctionReturnString = () => string;

function delay(f: SomeFunctionReturnString, seconds: number): Promise { return new Promise((resolve, reject) => { setTimeout(() => { try { resolve(f()); } catch (err) { reject(err); } }, seconds * 1000); }); }

const success = () => { return "successfully done"; };

const fail = () => { throw new Error("failed"); };

delay(success, 2) .then((res) => console.log(res)) .catch((e) => console.log(e));

delay(fail, 2) .then((res) => console.log(res)) .catch((e) => console.log(e));

결과값
$ ts-node delay.ts
successfully done
Error: failed

6. 강의를 통해서 기대하는 바, 또는 얻고 싶은 팁을 적어주세요
함수형적 사고와 실무에서 어떻게 사용되는지 알고 싶습니다.