3장 : 시스템 설계 면접 공략법

효과적 면접을 위한 4단계 접근법

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

    1. 구체적으로 어떤 기능들을 만들어야 하나 ?

    2. 제품 사용자 수는 얼마나 되나 ?

    3. 회사의 규모는 얼마나 빨리 커지리라 예상하나 ? 석 달, 여섯 달, 일년 뒤의 규모는 얼마가 되리라 예상하는가 ?

    4. 회사가 주로 사용하는 기술 스택은 무엇인가 ? 설계를 단순화하기 위해 활용할 수 있는 기존 서비스로는 어떤 것들이 있는가 ?

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

    1. 설계안에 대한 최초 청사진을 제시하고 의견을 구하라. 면접관을 마치 팀원인 것처럼 대하라.

    2. 화이트보드나 종이에 핵심 컴포넌트를 포함하는 다이어그램을 그려라. 클라이언트(모바일/웹), API, 웹 서버, 데이터 저장소, 캐시, CDN, 메시지 큐 같은 것들이 포함될 수 있다.

    3. 이 최초 설계안이 시스템 규모에 관계된 제약사항들을 만족하는지를 개략적으로 계산해 보라. 계산 과정은 소리 내어 설명하라.

  3. 상세 설계

    1. 시스템에서 전반적으로 달성해야 할 목쵸와 기능 범위 확인

    2. 전체 설계의 개략적 청사진 마련

    3. 해당 청사진에 대한 면접관의 의견 청취

    4. 상세 설계에서 집중해야 할 영역들 확인

  4. 마무리

    1. 면접관이 시스템 병목구간, 혹은 좀 더 개선 사능한 지점을 찾아내라 주문할 수 있다.

    2. 여러분이 만든 설계를 한 번 다시 요약해주는 것도 도움이 될 수 있다.

    3. 오류가 발생하면 무슨 일이 생기는지(서버 오류, 네트워크 장애 들) 따져보면 흥미로울 것이다.

    4. 운영 이슈도 논의할 가치가 충분하다.

    5. 미래에 닥칠 규모 확장 요구에 어떻게 대처할 것인지도 흥미로운 주제다.

    6. 시간이 좀 남았다면, 필요하지만 다루지 못했던 세부적 개선사항들을 제안할 수 있다.

  • 해야 할 것

    • 질문을 통해 확인하라. 스스로 내린 가정이 옳다 믿고 진행하지 말라.

    • 문제의 요구사항을 이해하라.

    • 정답이나 최선의 답안 같이 없다는 점을 명심하라.

    • 면접관이 여러분이 사고 흐름을 이해할 수 있도록 하라.

    • 가능하다면 여러 해법을 함께 제시하라. 개략적 설계에 면접관이 동의하면, 각 컴포넌트의 세부사항을 설명하기 시작하라. 가장 중요한 컴포넌트부터 진행하라.

    • 면접관의 아이디어를 이끌어 내라. 좋은 면접관은 여러분과 같은 팀원처럼 협력한다.

    • 포기하지 말라.

  • 하지 말아야 할 것

    • 전형적인 면접 문제들에도 대비하지 않은 상태에서 면접장애 가지 마라.

    • 요구사항이나 가정들을 분명히 하지 않은 상태에서 설계를 제시하지 말라.

    • 처음부터 특정 컴포넌트의 세부사항을 너무 깊이 설명하지 말라. 개략적 설계를 마친 뒤에 세부사항으로 나아가라

    • 진행 중에 막혔다면, 힌트를 청하기를 주저하지 말라.

    • 다시 말하지만, 소통을 주저하지 말라. 침묵 속에 설계를 진행하지 말라.

    • 설계안을 내놓는 순간 면접이 끝난다고 생각하지 말라. 면접관이 끝났다고 말하기 전까지는 끝난 것이 아니다. 의견을 일찍 그리고 자주 구하라.

Last updated