Share
Sign In

시스템 설계 면접 공략법

면접관들의 관점

면접관의 피드백을 건설적인 방식으로 처리할 수 있는가
협력에 적합하고, 압박을 잘 헤쳐 나갈 수 있는가
모호한 문제를 건설적으로 해결할 수 있는가
설계의 순수성에 집착한 나머지 tradeoff를 도외시하지는 않는가

4단계 접근법

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

천천히 요구사항과 가정들을 깊이 생각하고 질문하라
올바른 질문을 하는 것, 적절한 가정을 하는 것, 그리고 정보를 모으는 것이 가장 중요하다.
구체적인 기능?
제품 사용자 수
서비스의 성장 속도
기술 스택 …

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

최초 설계안을 제시하고 면접관들과 대화하면서 의견을 구하라
핵심 컴포넌트를 포함하는 다이어그램을 그려라
최초 설계안이 제약사항들을 만족하는지 계산하라. 계산은 소리내서
구체적인 사용 예시도 살펴보자
설계하는 시스템의 규모에 따라 지나치게 세부적인 내용은 하지 말자

3. 상세 설계

설계 대상 컴포넌트 사이의 우선순위를 정하자
사소한 세부사항을 설명하다 시간을 낭비하지 말자
면접관이 요구하는 깊이만큼 설명하자

4. 마무리

모든 설계에는 개선점이 있다. 개선할 점을 보이자
설계를 요약하자
오류가 발생하면 어떻게 되는지 따져보자
메트릭/로그 수집, 모니터링 등 운영 이슈도 논의해보자
미래에 닥칠 확장 요구를 어떻게 대처할 것인지 이야기하자

해야할 것 vs 하지 말아야 할 것

해야할 것

문제의 요구사항을 이해하고 질문을 통해 확인하라
정답은 없고 기업의 규모나 상황에 따라 설계가 달라진다
가능하면 여러 해법을 제시하고, 면접관과 소통하면서 설명하라
면접관의 아이디어를 끌어내라
포기하지 말라

하지 말아야 할 것

전형적인 문제는 대비하자
요구사항이나 가정을 분명히 하자
처음부터 특정 컴포넌트의 세부사항을 깊이 설명하지 말자
막혔다면 힌트를 청하자. 끊임없이 소통하라

시간 배분

시스템 설계는 보통 광범위한 영역을 다루기 때문에 45분이나 한 시간 정도로는 부족할 수도 있따.
1.
문제 이해 및 설계 범위 확정 - 3~10분
2.
개략적인 설계안 제시 및 동의 구하기 - 10~15분
3.
상세 설계 - 10~25분
4.
마무리 - 3~5분