본인이 작성했던 코드 중 공유하고 싶은 코드를 이유와 함께 마크다운 코드블락을 사용해 올려주세요
언어 상관없음
어떤 로직이든 상관없음
단, 길이가 길지 않은 함수 단위가 좋습니다
연습을 하며 문제를 풀 때 배열의 합을 구하는 과정이 필요한 곳이 많았는데 함수로 만들어 사용했었습니다. 그래서 간편했습니다.
function sumOfArray(arr) {
let result = 0
for (let i = 0; i < arr.length; i++) {
result += arr[i]
}
return result
}
Layered Architecture(계층 아키텍처)에 대해서 설명해 주세요
"n-계층 아키텍처" 라고도 불립니다. 계층 아키텍처는 소프트웨어 시스템이 여러 계층으로 구성되고 각 계층이 특정 목적을 수행하는 소프트웨어 설계 패턴입니다. 레이어는 일반적으로 계층 구조로 구성됩니다.
계층 아키텍처에서 계층을 구성하는 다양한 방식이 있지만 일반적인 방식은 다음과 같습니다.
presentation layer
business-logic layer
data-access layer
data-storage layer
계층 아키텍처의 주요 이점 중 하나는 관심사의 분리를 통해 시스템을 더 쉽게 유지보수 할 수 있게 됩니다. 또한 서로 다른 계층을 독립적으로 개발하고 테스트 할 수 있어 개발 프로세스가 보다 효율적이게 됩니다. 하지만 관리하고 통신하는 레이어가 많아지기 때문에 복잡성과 오버헤드가 추가로 발생할 수 있다는 단점도 있습니다.
Dependency Injection(의존성 주입)의 개념과 함께, 왜 필요한지 작성해 주세요
클래스 또는 함수가 종속성을 직접 만들지 않고 외부 소스에서 받을 수 있도록 하는 소프트웨어 디자인 패턴입니다. 종속성은 기능을 수행하기 위해 클래스 또는 기능에 필요한 개체 또는 서비스입니다.
종속성 주입을 사용하는 이유는 소프트웨어 시스템의 다양한 구성 요소를 분리하여 수정 및 유지 관리를 더 쉽게 만드는 데 도움이 되기 때문입니다. 종속성을 클래스나 함수 내에서 만드는 대신 클래스나 함수에 주입하면 클래스나 함수가 더욱 모듈화되고 테스트하기 쉬워집니다.
class UserService {
constructor(repository) {
this.repository = repository;
}
}
class UserRepository {
constructor() {
this.users = [];
}
}
const repository = new UserRepository();
const service = new UserService(repository);
위의 예제에서 UserService 클래스는 자체 생성이 아니라 생성자를 통해 저장소 종속성을 받습니다. 이를 통해 UserService 클래스는 UserRepository 클래스를 다양한 구현과 함께 사용할 수 있으므로 더 모듈화 되고 테스트 하기 쉽습니다.
종속성 주입은 생성자 주입, 세터 주입, 함수 주입 등 다양한 방법으로 구현이 가능합니다.
4. 본인이 사용하는 언어의 Functional Programming(함수형 프로그래밍) 스펙을 예제와 함께 소개해 주세요
Javascript에서 함수형 프로그래밍의 몇 가지 일반적인 기능들
일급함수, 고차함수, 순수함수가 있습니다.
```js
// 두 숫자를 더하는 순수함수
function add(x, y) {
return x + y;
}
// 함수와 값을 인자로 받는 고차 함수
// 항상 주어진 값을 반환하는 새 함수를 반환
function always(fn, value) {
return function() {
return value;
}
}
// 항상 5를 반환하는 새 함수
const alwaysFive = always(add, 5);
(코드 작성) 다음 스펙을 만족하는 delay 함수를 작성해 주세요 (hint: Promise 사용)
사전과제
본인이 작성했던 코드 중 공유하고 싶은 코드를 이유와 함께 마크다운 코드블락을 사용해 올려주세요
연습을 하며 문제를 풀 때 배열의 합을 구하는 과정이 필요한 곳이 많았는데 함수로 만들어 사용했었습니다. 그래서 간편했습니다.
class UserRepository { constructor() { this.users = []; } }
const repository = new UserRepository(); const service = new UserService(repository);
(코드 작성) 다음 스펙을 만족하는 delay 함수를 작성해 주세요 (hint: Promise 사용)
결과값