3. 시스템 설계 면접 공략법
서평
3장을 처음 읽었을 때 생각이 든 건, 사실 해당 내용은 평소에 시스템을 설계할 때 어떻게 접근할 지 겪을 때 주로 고민하는 내용이라고 생각했습니다.
회사마다 시스템이 다르고, 이를 여러 사람들이랑 같이 만들어야 합니다. 그렇기 때문에 분야가 프론트엔드, 백엔드 등으로 다양하게 나누고 회사에서 채용합니다. 회사 내부에서 시스템을 설계할 때 협업을 해야하는 경우가 많습니다. 이 때 같이 일하는 사람들끼리 시스템을 접근하는 방법에 따라서 쉽게도 어렵게도 해결할 수도 있습니다. 매번 정말 좋은 방법으로만 해결할 수는 없지만, 책에서 나오는 방법을 통해서 구체적으로 문제를 접근할 수 있다고 생각합니다.
문제 이해 및 설계 범위 확정: 요구사항 및 가정 이해 및 모호함 제거, 깊이 생각하고 질문함.
개략적인 설계안 제시 및 동의 구하기: 요구사항에 맞는 시스템 컴포넌트 설계 및 제약사항 만족 여부 파악
상세 설계: 시스템에서 달성해야 할 목표 및 기능 범위 파악, 청사진(Blueprint) 마련, 면접 담당자(팀원) 의견 청취
마무리: 병목 지점(Bottlenack) 파악, 설계에 대한 요약, 오류 발생 시 영향 범위 제시, 운영 이슈(지표 수집, 로그 설계, 배포 등), 규모 확장 요구, 기타 개선 사항
같이 일하는 과정을 면접에서 시스템 설계로 책은 표현합니다. 짧은 시간 내에 면접을 담당하는 실무자(이하, 면접 담당자)는 면접자가 같이 일하기 적합한 사람인 지 판단하기 위한 다양한 방법을 사용합니다. 방법 중에서 시스템 설계 면접은 효율적인 방법 중 하나라고 생각합니다. 면접 시간은 제한이 있고 이 안에 가장 효율적인 방법으로 면접자는 문제를 풀어야 합니다. 실무에서 겪었던 상황들과 배운 것들을 종합적으로 판단하여 풀면서 면접자는 평소에 갖고 있던 습관들이 나올 수 있습니다. 이를 보면서 면접 담당자는 같이 일할 사람인 가를 면밀하게 판단할 수 있습니다. 해당 장은 두 사람 모두에게 좋은 영향을 줄 수 있는 방법들을 제시합니다. 책에서는 시스템 면접 설계를 다음과 같이 이야기 합니다.
시스템 설계 면접은 두 명의 동료가 모호한 문제를 풀기 위해 협력하여 그 해결책을 찾아내는 과정에 대한 시뮬레이션
해당 접근 방법을 이후 장에서 각각 아키텍처와 관련된 면접 내용을 설명할 때 구성됩니다.
시스템 면접 시 고려할 부분
해야 할 것
질문을 통해 확인하라. 스스로 내린 가정이 옳다 믿고 진행하지 말라.
문제의 요구사항을 이해하라.
정답이나 최선의 답안 같은 것은 없다는 점을 명심하라.
면접관이 여러분의 사고 흐름을 이해할 수 있도록 하라.
면접관과 소통하라.
가능하다면 여러 해법을 함께 제시하라.
개략적 설계와 면접관이 동의하면, 각 컴포넌트의 세부사항을 설명하기 시작하라. 가장 중요한 컴포넌트부터 진행하라.
면접관의 아이디어를 이끌어 내라. 좋은 면접관은 여러분과 같은 팀원처럼 협력한다.
포기하지 말라. (Don’t give up!)
하지 말아야 할 것
전통적인 면접 문제들에도 대비하지 않은 상태에서 면접장에 가지 말라.
요구사항이나 가정들을 분명히 하지 않은 상태에서 설계를 제시하지 말라.
처음부터 특정 컴포넌트의 세부사항을 너무 깊이 설명하지 말라. 개략적 설계를 마친 뒤에 세부사항으로 나아가라.
진행 중에 막혔다면, 힌트를 청하기를 주저하지 말라.
다시 말하지만, 소통을 주저하지 말라. 침묵 속에 설계를 진행하지 말라.
설계안을 내놓는 순간 면접이 끝났다고 생각하지 말라. 면접관이 끝났다고 말하기 전까지는 끝난 것이 아니다. 의견을 일찍, 그리고 자주 구하라.
시간 배분
문제의 범위나 면접관의 요구사항에 따라 시간을 다르게 써야 할 수 있다.
45분 기준
문제 이해 및 설계 범위 확정: 3
10분(5*20%*)개략적인 설계안 제시 및 동의 구하기: 10
15분(*2033%*)상세 설계: 10
25분(*2055%*)마무리: 3
5분(510%)
Last updated