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

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

사전과제 제출! #17

Open Jung-Off opened 1 year ago

Jung-Off commented 1 year ago
  1. 본인이 작성했던 코드 중 공유하고 싶은 코드를 이유와 함께 마크다운 code block 을 사용해 올려주세요

    getChatRoomInfo(roomName: string): string[] {
    const tmp: string[] = [];
    this.rooms.get(roomName).users.forEach((e) => {
      tmp.push(e.intra);
    });
    return tmp;
    }

    전체 채팅방을 임시 배열에 담아서 return해주는 코드

  2. Layered Architecture(계층 아키텍처)에 대해서 설명해 주세요 각 계층은 어플리케이션 내에서의 특정 역할과 관심사(화면 표시, 비즈니스 로직 수행, DB작업 등) 별로 구분된다. 이는 Layered Architecture의 강력한 기능인 '관심사의 분리' 를 의미한다. 특정 계층의 구성요소는 해당 계층에 관견된 기능만 수행한다. 이런 특징은 높은 유지보수성과 쉬운 테스트

  3. Dependency Injection(의존성 주입)의 개념과 함께, 왜 필요한지 작성해 주세요 개념 : 객체가 의존하는 또 다른 객체를 외부에서 선언하고 이를 주입받아 사용하는 것! 장점 1 : 의존성이 줄어든다. 장점 2: 재사용성이 높은 코드가 된다 장점 3: 테스트하기 좋은 코드가 된다. 장점 4: 가독성이 높어진다!

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

    var condition = function(x) { return x % 2 === 0; }
    var ex = function(array, cond) {
    return array.filter(cond);
    };
    ex(arr, condition);

    condition이라는 변수를 인자로 받아서 조건에 맞는 arr배열 내의 값을 return 하는 순수함수 입니다.

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

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

    결과값

    $ ts-node delay.ts
    successfully done
    Error: failed
  6. 강의를 통해서 기대하는 바, 또는 얻고 싶은 팁을 적어주세요 주기적으로 공부를 하는 시간을 가지게 되어서 유익한 지식함량의 시간이 되었으면 좋겠다!