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

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

사전과제 제출 #24

Open devsince2021 opened 1 year ago

devsince2021 commented 1 year ago
  1. 본인이 작성했던 코드 중 공유하고 싶은 코드를 이유와 함께 마크다운 code block 을 사용해 올려주세요 언어 상관없음 어떤 로직이든 상관없음 단, 길이가 길지 않은 함수 단위가 좋습니다 해당 code block 에 올려주세요

  2. Layered Architecture(계층 아키텍처)에 대해서 설명해 주세요 뷰 / 비즈니스 / 데이터 등 각자의 역할에 맞게 층을 나누고 해당 계층에서는 해당 로직만 수행

  3. Dependency Injection(의존성 주입)의 개념과 함께, 왜 필요한지 작성해 주세요

    • 사용할 모듈을 외부 레퍼런스로 가져다 사용하는 것이 아닌, 인자로 받아서 사용하는 개념
    • 사용하는 모듈과 사용될 모듈의 의존성 제거, 같은 인터페이스라면 어떤 구현체라도 사용가능
  4. 본인이 사용하는 언어의 Functional Programming(함수형 프로그래밍) 스펙을 예제와 함께 소개해 주세요

  5. (코드 작성) 다음 스펙을 만족하는 delay 함수를 작성해 주세요 (hint: Promise 사용) type SomeFunctionReturnString = () => string

    function delay(f: SomeFunctionReturnString, seconds: number): Promise { // 해당 함수 내부를 구현해 주세요 return new Promise((resolve) => { setTimeout(() => { resolve(f()) }, seconds * 1000) }) };

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

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

    delay(success, 2) // 2초 뒤에 successfully done 로그 .then((res) => console.log(res)) .catch((e) => console.log(e));

    delay(fail, 2) // 2초 뒤에 failed 로그 .then((res) => console.log(res)) .catch((e) => console.log(e));