시스템 설계 면접 : 모호한 문제를 풀기 위해 협력하여 해결책을 찾아내는 과정의 시뮬레이션
= 설계 기술 시연, 설계 과정에서 내린 결정들에 대한 방어 능력, 피드백을 건설적인 방식으로 처리할 자질 여부
- 협력에 적합한 사람인지
- 압박이 심해도 잘 헤쳐나가는지
- 모호한 문제를 건설적으로 해결할 능력이 있는지
- 좋은 질문을 던질 능력이 있는지
1단계 - 문제 이해 및 설계범위 확정 (3-10분)
- 답부터 들이밀지 말고, 깊은 생각과 질문을 통해 요구사항과 가정들을 분명히 하라
- 올바른 질문 / 적절한 가정 / 정보 모으기
- 올바른 질문이란, 요구사항을 정확히 이해하는 데 필요한 질문
- 구체적으로 만들어야 할 기능
- 제품 사용자 수
- 회사 규모 성장세
- 기술스택
2단계 - 개략적인 설계안 제시 및 동의 구하기 (10-15분)
- 면접관과 협력하여 진행하라
- 설계안 초안을 제시하고 의견을 구하라
- 핵심 컴포넌트 포함하는 다이어그램을 그려라
- 최초 설계안이 시스템 규모에 관련된 제약사항들을 만족하는지 개략적으로 계산하라
3단계 - 상세 설계 (10-25분)
- 면접관과 설계 대상 컴포넌트 사이의 우선순위를 정하라
4단계 - 마무리 (3-5분)
- 설계에서 시스템 병목구간, 혹은 개선 가능한 지점을 찾아내라
- 내가 한 설계를 요약하자
- 오류가 발생하면 무슨 일이 생기는지 따져보자
- 운영 이슈 논의 (메트릭 수집 방법, 모니터링, 로그, 시스템 배포에 관한 사항)
- 규모 확장 요구에 어떻게 대처할 것인지 논의
면접에서 해야 할 것
- 질문으로 확인하라
- 요구사항은 확실하게 이해
- 정답, 최선의 답안은 없다
- 사고의 흐름을 면접관에게 이해시켜라
- 가능하면 여러 해법 제시하라
- 포기하지 말라
면접에서 하지 말아야 할 것
- 요구사항, 가정을 분명히 하기 전 설계 제시하지마라
- 소통을 주저하지 말라
- 특정 컴포넌트 세부 사항을 너무 깊이 설명하지마라