1. 본인이 작성했던 코드 중 공유하고 싶은 코드를 이유와 함께 마크다운 code block 을 사용해 올려주세요
async getDogsDistance({ id }) {
const result = [];
const distance = await this.cacheManager.get(id);
for (let i = 0; i < Object.keys(distance).length; i++) {
const tmp = new AroundDogOutput(); //객체 타입 리턴 받기 위해 새로운 타입 지정
(tmp.dogId = Object.keys(distance)[i]),
(tmp.distance = Object.values(distance)[i]);
result.push(tmp);
}
return result;
}
사이드프로젝트로 진행했던 작업 중 일부입니다. redis에 저장되어 있는 객체값을 호출해서 새로운 output 타입에 담아 return 하는 함수입니다.
2. Layered Architecture(계층 아키텍처)에 대해서 설명해 주세요
책임과 성격이 다른 것을 크게 그룹으로 만들어 분리해두는 것
유사한 관심사들을 layer로 나눠서 수직적으로 배열한 것
보통 웹 기반의 엔터프라이즈 애플리케이션은 3개의 계층을 갖는다고 해서 3계층 애플리케이션이라고도 합니다.
Presentation Layer : 웹 기반의 UI를 만들어내고 그 흐름을 관리하는 계층
Service Layer : 비즈니스 로직을 담고 있는 계층
DataAccess Layer : 백엔드의 DB나 레거시 시스템과 연동하는 인터페이스 역할을 하는 계층
(Infrastructure 계층)
이렇게 계층을 나누어 분리하는 이유는 유지 보수할 때 다른 계층에 있는 부분을 수정하지 않아도 되기에 편리하기 때문입니다.
3. Dependency Injection(의존성 주입)의 개념과 함께, 왜 필요한지 작성해 주세요
DI(Dependency Injection) 의존성 주입은 Tight Coupling(강한 결합)을 Loose Coupling(느슨한 결합)으로 전환 시키는 방법이며, 제어의 역전(Inversion of Control)의 기술중 하나입니다.
DI(Dependency Injection) 의존성 주입에 총 3가지의 방법이 존재하며 이 중 Constructor Inject(생성자 주입)이 많은 Design pattern에서 권장됩니다.
의존성주입을 사용하는 이유는 코드의 재사용성을 높여주고 테스트에 용이하며 종속성이 감소하기 때문에 변경 및 수정사항에 민감하지 않는다는 장점이 있습니다. 또한 결합도는 낮추면서 유연성과 확장성을 향상 시킬 수 있으며 객체간의 의존관계를 직접 설정할 수 있습니다.
4. 본인이 사용하는 언어의 Functional Programming(함수형 프로그래밍) 스펙을 예제와 함께 소개해 주세요
객체를 중심으로 사고하고 프로그램을 작성하는 객체지향 프로그래밍과 달리 함수형 프로그래밍은 데이터를 함수로 연결하는 것을 중심으로 사고하고 프로그래밍을 하는 것을 뜻합니다. 함수형 프로그래밍은 선언형 프로그래밍과 순수 함수를 이용해 문제를 해결하는 프로그래밍 패러다임입니다. 선언형 프로그래밍과 순수 함수 덕에 코드가 간결해지고, 유지보수와 가독성이 크게 증가한다는 장점을 가지고 있습니다.
순수 함수를 활용한 함수형 프로그그래밍 예제
const ret = [1,3,6,8,12]
.reduce((max,num) => num > max ? num : max, 0)
console.log(ret) //12
순수 함수란 출력이 입력에만 의존하는 것을 의미하기 때문에 위의 예제와 같이 순수 함수들을 블록처럼 쌓아 로직을 구현하고 고차 함수를 통해 재사용성을 높인 프로그래밍을 함수형 프로그래밍 언어라고 합니다.
5. (코드 작성) 다음 스펙을 만족하는 delay 함수를 작성해 주세요 (hint: Promise 사용)
1. 본인이 작성했던 코드 중 공유하고 싶은 코드를 이유와 함께 마크다운 code block 을 사용해 올려주세요
사이드프로젝트로 진행했던 작업 중 일부입니다. redis에 저장되어 있는 객체값을 호출해서 새로운 output 타입에 담아 return 하는 함수입니다.
2. Layered Architecture(계층 아키텍처)에 대해서 설명해 주세요
책임과 성격이 다른 것을 크게 그룹으로 만들어 분리해두는 것 유사한 관심사들을 layer로 나눠서 수직적으로 배열한 것 보통 웹 기반의 엔터프라이즈 애플리케이션은 3개의 계층을 갖는다고 해서 3계층 애플리케이션이라고도 합니다.
Presentation Layer : 웹 기반의 UI를 만들어내고 그 흐름을 관리하는 계층 Service Layer : 비즈니스 로직을 담고 있는 계층 DataAccess Layer : 백엔드의 DB나 레거시 시스템과 연동하는 인터페이스 역할을 하는 계층 (Infrastructure 계층)
이렇게 계층을 나누어 분리하는 이유는 유지 보수할 때 다른 계층에 있는 부분을 수정하지 않아도 되기에 편리하기 때문입니다.
3. Dependency Injection(의존성 주입)의 개념과 함께, 왜 필요한지 작성해 주세요
DI(Dependency Injection) 의존성 주입은 Tight Coupling(강한 결합)을 Loose Coupling(느슨한 결합)으로 전환 시키는 방법이며, 제어의 역전(Inversion of Control)의 기술중 하나입니다. DI(Dependency Injection) 의존성 주입에 총 3가지의 방법이 존재하며 이 중 Constructor Inject(생성자 주입)이 많은 Design pattern에서 권장됩니다. 의존성주입을 사용하는 이유는 코드의 재사용성을 높여주고 테스트에 용이하며 종속성이 감소하기 때문에 변경 및 수정사항에 민감하지 않는다는 장점이 있습니다. 또한 결합도는 낮추면서 유연성과 확장성을 향상 시킬 수 있으며 객체간의 의존관계를 직접 설정할 수 있습니다.
4. 본인이 사용하는 언어의 Functional Programming(함수형 프로그래밍) 스펙을 예제와 함께 소개해 주세요
객체를 중심으로 사고하고 프로그램을 작성하는 객체지향 프로그래밍과 달리 함수형 프로그래밍은 데이터를 함수로 연결하는 것을 중심으로 사고하고 프로그래밍을 하는 것을 뜻합니다. 함수형 프로그래밍은 선언형 프로그래밍과 순수 함수를 이용해 문제를 해결하는 프로그래밍 패러다임입니다. 선언형 프로그래밍과 순수 함수 덕에 코드가 간결해지고, 유지보수와 가독성이 크게 증가한다는 장점을 가지고 있습니다.
순수 함수란 출력이 입력에만 의존하는 것을 의미하기 때문에 위의 예제와 같이 순수 함수들을 블록처럼 쌓아 로직을 구현하고 고차 함수를 통해 재사용성을 높인 프로그래밍을 함수형 프로그래밍 언어라고 합니다.
5. (코드 작성) 다음 스펙을 만족하는 delay 함수를 작성해 주세요 (hint: Promise 사용)
결과값