Mock Test 1
- 코드 주인을 찾아라!
- 디렉토리마다 코드 주인 정보는 JavaScript 객체로 주어짐
- 객체는 1 이상 5 이하 깊이를 가지는 디렉토리 구조를 다룸
- 하위 디렉토리를 가지지 않는 디렉토리들만 코드 주인을 가짐
- 예) 아래 예시에서
services
폴더는 코드 주인 가지지 않음
- 계산할 디렉토리는 폴더 구분자
/
를 사용하는 문자열로 주어짐
- 예)
services/toss-card
는 service
디렉토리 하위의 toss-card
디렉토리를 가리킴
- 인자로 주어진 문자열은 코드 주인이 존재하는 디렉토리만 가리킴
const codeOwnersMap = {
"script": ["배수진"],
"services": {
"business-ledger": ["고찬균", "배수진"],
"toss-card":["채주민", "유재섭"],
"payments":["유재섭"],
}
}
solution(codeOwnersMap, 'script')
solution(codeOwnersMap, 'services/business-ledger')
solution(codeOwnersMap, 'services/payments')
Solution
function solution(codeOwnersMap, directory) {
const separatorIndex = directory.indexOf('/');
if (separatorIndex === -1) {
return codeOwnersMap[directory];
}
const firstDir = directory.slice(0, separatorIndex);
const restDirs = directory.slice(separatorIndex + 1);
return solution(codeOwnersMap[firstDir], restDirs);
}
Mock Test 2 (서술형)
- 프론트엔드 개발을 하다 보면 "Action-Reducer 패턴"에 대해 만나게 됨
- "Action-Reducer 패턴"이란 무엇인지 작성하기
- Action-Reducer 패턴의 장점에 대해 작성하기
- Action-Reducer 패턴을 이용하여 비지니스 문제를 해결한 경험 작성하기
My Answer
- Action-Reducer 패턴은 데이터가 변하는 Action이 발생했을 때 Reducer 함수가 Action 타입에 따라서 dispatch를 다르게 실행시켜서 데이터를 업데이트 시키고, 업데이트된 데이터를 보여주는 패턴을 말합니다.
- Action-Reducer 패턴을 사용하면 데이터의 흐름이 단방향이어서, 데이터를 저장하는 스토어와 데이터를 보여주는 뷰의 의존성이 약하다는 장점이 있습니다.
- Aribnb 클론 코딩시 비동기 처리할 때 reducer함수를 사용했습니다. 비동기 처리 결과에 따라 다른 타입의 액션을 생성하여 그 액션에 대한 dispatch함수를 실행시켰습니다. 이렇게 했더니 reducer 함수의 반환값에 따라 비동기 처리를 기다리는 동안의 로딩 상태나 비동기 처리 결과를 바로 얻을 수 있어서 편리했습니다.
Revised Answer
- 변화가 일어나면 Action(type에 대한 정보를 가진 객체)을 만들고 (각 액션에 맞게 미리 정의해둔) Reducer가 새로운 상태를 만들어서 store를 업데이트합니다. 그리고 store를 구독하고 있는 컴포넌트(View)에 상태변화가 적용됩니다.
- 데이터 흐름이 단방향입니다. action을 dispatch할 때마다, history가 남아서 에러를 찾기 편하다고 합니다.