Skip to content

Commit

Permalink
Create: [3주차] 3장 shin0112
Browse files Browse the repository at this point in the history
  • Loading branch information
shin0112 authored May 23, 2024
1 parent bee0910 commit 5b503c4
Showing 1 changed file with 59 additions and 0 deletions.
59 changes: 59 additions & 0 deletions chap03/[chap03]신주은.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
## 효과적 면접을 위한 4단계 접근법

### 1단계 문제 이해 및 설계 범위 확정

- 중요한 것
1. 올바른 질문을 하는 것
2. 적절한 가정을 하는 것
3. 시스템 구축에 필요한 정보를 모으는 것

⇒ 면접관에게 질문을 주고 받으며, 요구사항을 구체화해라


### 2단계 개략적인 설계안 제시 및 동의 구하기

- 개략적인 설계안을 제시하고 면접관과 협력하며 진행한다.
- 면접관을 마치 팀원처럼 대해서 설계 과정을 이어나가라
- 화이트보드나 종이에 핵심 컴포넌트를 포함하는 다이어그램을 그려라
- 클라이언트, api, 웹 서버, 데이터 저장소, 캐시, CDN, 메시지 큐 등
- 시스템 규모에 관계된 제약 사항들을 만족하는지 개략적으로 계산하기
- (가능하다면) 시스템의 구체적 사용 사례도 살펴보기 → 에지 케이스 발견

### 3단계 상세 설계

- 이전 단계에서 달성한 것
- 시스템에서 전반적으로 달성해야 할 목표와 기능 범위 확인
- 전체 설계의 개략적 청사진 마련
- 청사진에 대한 면접관의 의견
- 상세 설계에서 집중해야 할 영역
- 설계 대상 컴포넌트 사이의 우선순위 정하기
- 시간 관리도 중요함 → 불필요한 세부 사항에 시간을 쓰지 말라

### 4단계 마무리

- 개선 사항은 언제든 있을 수 있기 때문에, 절대 설계가 완벽하다고 하지 않는다.
- 설계 요약하기
- 오류 발생 시 일어나는 일 따져보기
- 운영 이슈 논의하기 - 모니터링, 로그, 배포
- 미래의 확장 요구 미리 생각해보기
- 시간이 남으면 - 세부적인 개선사항 확인하기

### 정리

- 질문하기 - 스스로를 믿지 말기
- 문제의 요구사항 이해하기
- 정답 및 최선의 답안 같은 것은 없음
- 면접관과 소통해서 사고 흐름을 이해할 수 있도록 하라
- 여러 해법을 함께 제시하기
- 개략적 설계에 면접관이 동의하면, 각 컴포넌트의 세부사항 설명하기 - 가장 중요한 컴포넌트부터 진행하기
- 면접관의 아이디어 이끌어내기
- 포기하지 말기
- 전형적인 면접 문제들에 대비하기
- 진행 중에 막히면, 주저하지 말고 질문하기
- 요구 사항 및 가정들을 분명히 하고 설계하기
- 처음부터 특정 컴포넌트의 세부 사항을 너무 깊게 파지 말기
- 설계얀을 내놓는 순간 면접이 끝나는 것이 아니라, 지속하기

```java
지금은 아키텍처에 대해서 이야기 하지만, 어떠한 질문이나 요구사항을 들었을 때, 면접관에게 질문을 날리며 이해하는 것이 좋다고 느껴진다.
```

0 comments on commit 5b503c4

Please sign in to comment.