책 내용 요약
효과적 면접을 위한 4단계 접근법
1. 문제 이해 및 설계 범위 확정
- 질문에 대한 답을 말할 때 가장 중요한 것은 속도가 아니라 이해도이다. 요구사항과 가정을 분명히 하고, 그에 맞추어 깊이 생각하고 질문과 답을 해야 한다.
- 구체적으로 어떤 기능을 만들어야 하는지, 제품의 사용자 수는 얼마나 되는지, 회사의 성장 예상치는 어떤지, 회사가 주로 사용하는 기술 스택은 무엇인지, 설계를 단순화하기 위해 활용할 수 있는 기존 서비스로는 어떤 것들이 있을지 등을 질문해보면 좋다.
2. 개략적인 설계안 제시 및 동의 구하기
- 개략적인 설계안을 제시한 후 면접관의 동의를 얻는 단계이다.
- 설계안에 대한 최초 청사진을 제시하고 의견을 구하라.
- 화이트보드나 종이에 핵심 컴포넌트를 포함하는 다이어그램을 그려라.
- 최초 설계안이 제약사항들을 만족하는지 개략적으로 계산하라.
- 가능하다면 시스템의 구체적 사용 사례도 살펴보라. 미리 발견하지 못한 에지 케이스도 발견할 수 있다.
- API 엔드포인트, 데이터베이스 스키마 등 까지 포함해야 하는지는 면접관의 의견에 따라 다를 수 있다.
3. 상세 설계
1~2 단계에서 다음과 같은 것들을 달성해 둔 상태이다.
- 시스템에서 전반적으로 달성해야 할 목표와 기능 범위 확인
- 전체 설계의 개략적 청사진 마련
- 해당 청사진에 대한 면접관의 의견 청취
- 상세 설계에서 집중해야 할 영역들 확인
이제 면접관과 해야 할 일은 설계 대상 컴포넌트 사이의 우선순위를 정하는 것 이다. 그리고 어떨 때에는 집중할 만한 컴포넌트가 정해져있기도 한다. 단축 URL 생성기 설계에 관한 면접이었을 경우에는 해시 함수의 설계를 구체적으로 물어볼 수 있을 것이며, 채팅 시스템에 관한 면접이었을 경우에는 지연시간을 줄이는 방법에 대해 물어볼 수도 있다.
추가로 면접에서 사소한 세부사항을 설명하느라 시간을 과도하게 소모하는 것도 바람직하지 못한 행동이다.
4. 마무리
해야 할 것
- 스스로 내린 가정이 옳다 믿고 진행하지 말고, 질문을 통해 확인할 것.
- 문제의 요구사항을 이해할 것.
- 정답이나 최선의 답안을 도출하기보다는 요구사항을 정확히 이해했는지 확인할 것.
- 무작정 풀어나가기보다는 면접관과 대화하며 풀어나갈 것.
- 가능하다면 여러 해법을 제시할 것.
- 개략적 설계에 면접관이 동의한다면 각 컴포넌트의 세부사항을 설명하고, 가장 중요한 컴포넌트부터 진행할 것.
- 면접관의 아이디어를 이끌어낼 것.
- 포기하지 말 것.
하지 말아야 할 것
- 전형적인 면접 문제에 대비하지 못한 채 면접장에 가지 말 것.
- 요구사항이나 가정을 분명히 하지 않은 상태에서 설계를 제시하지 말 것.
- 처음부터 특정 컴포넌트에 집중해 설명하기보다는 개략적으로 큰 그림을 설명한 뒤 세부사항으로 나아갈 것.
- 진행 중에 막혔다면 힌트 요청에 주저하지 말 것.
- 침묵 속에 설계를 진행하지 말고 소통을 할 것.
- 면접관이 끝났다고 하기 전 까지는 의견을 일찍, 자주 구할 것.
시간 배분
보통 시간 배분은 추정치로 다음과 같이 구성된다.
- 문제 이해 및 설계 범위 확정: 3분 ~ 10분
- 개략적 설계안 제시 및 동의 구하기: 10분 ~ 15분
- 상세 설계: 10분 ~ 25분
- 마무리: 3분 ~ 5분
Reference
- 가상 면접 사례로 배우는 대규모 시스템 설계 기초 1 | 3. 시스템 설계 면접 공략법
'[2026] System design & CS' 카테고리의 다른 글
| [가상 면접 사례로 배우는 대규모 시스템 설계 기초] 4. 처리율 제한 장치의 설계 (작성 중) (0) | 2026.02.21 |
|---|---|
| [가상 면접 사례로 배우는 대규모 시스템 설계 기초] 2. 개략적인 규모 추정 (0) | 2026.02.16 |
| [가상 면접 사례로 배우는 대규모 시스템 설계 기초] 1. 사용자 수에 따른 규모 확장성 (내용 정리 / 핵심 키워드 / 토론 주제) (1) | 2026.02.10 |