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

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

사전과제 제출 #42

Open yongseok-dev opened 1 year ago

yongseok-dev commented 1 year ago

사전과제

  1. 본인이 작성했던 코드 중 공유하고 싶은 코드를 이유와 함께 마크다운 코드블락을 사용해 올려주세요

    <script>
      const urlId = document.location.href.split('#')[1]
      switch (urlId) {
        case 'link1':
          location.href="~"    
          break;
        case 'link2':
          location.href="~"
          break;
      }    
    </script>

    js를 사용한 링크 랩핑 코드, 나에게 당장 필요한 것을 잘 만들어 보는 것이 중요한 것 같다.

  2. Layered Architecture(계층 아키텍처)에 대해서 설명해 주세요

    1. 계층 아키텍처: 역할을 분리한다.
  3. Dependency Injection(의존성 주입)의 개념과 함께, 왜 필요한지 작성해 주세요

    1. 의존성 주입(Dependency Injection): 애플리케이션의 구성 요소가 자신이 사용할 외부 자원을 자신의 생성자나 메서드를 통해 전달받는 것
    2. 필요성: 사용하는 것을 명확하게 함 중복을 감소, 다른 것을 불러오는 전역적 이슈 해결
  4. 본인이 사용하는 언어의 Functional Programming(함수형 프로그래밍) 스펙을 예제와 함께 소개해 주세요

    1. JavaScript 에서 함수형 프로그래맹 스펙으로는 다음과 같은 고차함수가 있습니다.
      • Map, forEach, reduce, filter, every, some
  5. (코드 작성) 다음 스펙을 만족하는 delay 함수를 작성해 주세요 (hint: Promise 사용)

    
    type SomeFunctionReturnString = () => string

function delay(f: SomeFunctionReturnString, seconds: number): Promise { return new Promise((resolve, reject) => { setTimeout(function () { try { const res = f(); resolve(res); } catch (error) { reject(error); } }, 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));



5. 강의를 통해서 기대하는 바, 또는 얻고 싶은 팁을 적어주세요
- 실무에서 고려해야할 요소들에 대한 관점 얻기
- 함수형 프로그래밍을 프로젝트에 적용하기
- NestJS 스러운 코드 작성하기