상세 컨텐츠

본문 제목

[System Design Interview] 3장 시스템 설계 면접 공략법

대규모 설계 기초

by Wanderer Kim 2023. 6. 12. 21:50

본문

728x90

시스템 설계 면접이란?

  • 두 명의 동료가 모호한 문제를 풀기 위해 협력하여 그 해결책을 찾아내는 과정에 대한 시뮬레이션.
  • 평가 요소
    • 기술적 능력
    • 협업 적합성
    • 압박이 심한 상황도 잘 헤쳐 나갈 자질
    • 모호한 문제를 건설적으로 해결할 능력
    • 좋은 질문을 던질 능력
  • 부정적 신호
    • 설계의 순수성에 직착하여 타협적 결정을 도외시 함
    • 완고함
    • 편협함

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

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

  • 바로 답을 말하지 말고, 속도를 늦춰라. 깊이 생각하고 질문하여 요구사항과 가정들을 분명히 하라.
    • 구체적으로 어떤 기능들을 만들어야 하나?
    • 제품 사용자 수는 얼마나 되나?
    • 회사의 규모는 얼마나 빨리 커지리라 예상하나?
    • 회사가 주로 사용하는 기술 스택은 무엇인가? 설계를 단순화하기 위해 활용할 수 있는 기존 서비스로는 어떤 것들이 있는가?

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

  • 설계안에 대한 최초 청사진을 제시하고 의견을 구하라.(면접관을 마치 팀원처럼 대하라.)
  • 화이트보드나 종이에 핵심 컴포넌트를 포함하는 다이어그램을 그려라.
  • 최초 설계안이 시스템 규모에 관계된 제약사항들을 만족하는지를 개략적으로 계산해 보라.(계산 과정은 소리 내어 설명하라.)

3단계 상세 설계

  • 면접관과 설계 대상 컴포넌트 사이의 우선순위를 정하는 것.
    • 대부분의 경우 특정 시스템 컴포넌트들의 세부사항을 깊이 있게 설명하는 것을 원한다.
  • 면접 시에는 시간 관리에도 특별히 주의를 기울여야 한다.
    • 면접관에게 긍정적 신호를 전달하는 데 집중해야 한다. 불필요한 세부사항에 시간을 쓰지 말라.
      • 예) 페이스북에서 뉴스 피드의 순위를 매기는 데 사용되는 Edge-Rank 알고리즘에 대해 이야기하는 것은 바람직하지 않다.

4단계 마무리

  • 마지막 세션에서는 설계 결과물에 대해서 몇 가지 후속 질문을 던질 수도 있고, 스스로 추가 논의를 진행하도록 할 수도 있다.
  • 면접관이 시스템 병목구간, 혹은 좀 더 개선 가능한 지점을 찾아내라 주문할 수 있다. 거기다 대고 설계가 완벽하다거나 개선할 부분이 없다는 답은 하지 않도록 하자.
  • 만든 설계를 한번 다시 요약해주는 것도 도움이 될 수 있다. 여러 해결책을 제시한 경우에는 특히 중요하다.
  • 오류가 발생하면 무슨 일이 생기는지 따져보는 것도 좋다.
  • 운영 이슈도 논의할 가치가 중분하다.
  • 미래에 닥칠 규모 확장 오구에 어떻게 대처할 것인지도 좋다.
  • 시간이 남는다면 필요하지만 다루지 못했던 세부적 개선사항들을 제안 할 수 있다.
반응형

관련글 더보기

댓글 영역