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

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

사전과제 제출 #50

Open Lim-jungwoo opened 1 year ago

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

    char    *ft_strdup(char *str) {
    if (str == NULL)
        return NULL;
    int     strLen = strlen(str);
    char    *ret = malloc(sizeof(char) * (strLen + 1));
    if (ret == NULL)
        return NULL;
    for (int i = 0; i < strLen; i++) {
        ret[i] = str[i];
    }
    ret[strLen] = 0;
    return (ret);
    }
    • 공유하고 싶은 이유 : C언어를 처음 시작할 때 동적 할당을 이해하고 작성했던 코드입니다. 자주 사용했던 기능이라서 기억에 가장 남습니다.
  2. Layered Architecture(계층 아키텍처)에 대해서 설명해 주세요

  1. Dependency Injection(의존성 주입)의 개념과 함께, 왜 필요한지 작성해 주세요
  1. 본인이 사용하는 언어의 Functional Programming(함수형 프로그래밍) 스펙을 예제와 함께 소개해 주세요
  1. (코드 작성) 다음 스펙을 만족하는 delay 함수를 작성해 주세요 (hint: Promise 사용)

type SomeFunctionReturnString = () => string

function delay(f: SomeFunctionReturnString, seconds: number): Promise<string> {
    return new Promise<string>((success, fail) => {
        setTimeout(() => {
            try {
                success(f());
            } catch (e) {
                fail(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));
  1. 강의를 통해서 기대하는 바, 또는 얻고 싶은 팁을 적어주세요