설계 인터뷰 전략

inhalin·2022년 5월 2일
0

인터뷰 소프트 스킬

Ask lots of questions

  • 보통은 "유투브를 설계해보세요" 같은 아주 모호한 질문이 들어옴
  • 이에 대한 재질문을 많이 할 것
    • 설계 요구 조건 - 지연 시간, 기용성, 예산, etc.
    • 유투브의 어느 부분을 설계하기를 원하는건지 등
  • 면접관이 궁금해하는게 뭔지 더 자세하게 질문하기

Think out loud

  • 10분동안 아무말 없이 속으로만 생각하는 것 금지..
  • 다른 전략들의 장단점 등 면접관은 내가 무슨 생각하고 있는지 말해야 알 수 있음
  • 말하다보면 오히려 면접관에게 힌트를 얻을 수 있음

Working Backwards

  • 고객 경험에서 시작해서 거꾸로 설계하기
  • 내가 잘 아는 기술 -> 요구사항 맞추기보다,
  • 고객 요구사항 파악 -> 조건 충족하는 기술 사용 순서가 더 이상적
  • 고객이 누구인지, 유즈케이스, 서비스의 어떤 부분에 초점을 맞춰 설계할 것인지, 세부 요구사항 파악, 기술적인 부분 외에 비즈니스적인 관점(어떻게 수익을 낼지)도 생각하기

요구 조건 정의

Defining scaling requirements

  • 시스템 규모
    • 사용자 규모는 수백명? 수백만명? -> 수평 스케일링 여부
    • 사용자 방문 횟수, 처리율
  • 데이터 규모
    • 제공하는 동영상의 수가 수백개? 수백만개? 수억개?
    • 데이터 처리, 저장에 분산 시스템 사용 여부
  • 처리 속도
    • 캐싱, CDN이 필요할지
  • 항상 요구조건을 충족하는 가장 간단한 솔루션 찾기

Defining availability requirements

  • 용인 가능한 지연시간은 어느정도인지
  • 미션 크리티컬 시스템이면 가용성 높게 설계, SPOF 유의

They might not tell you

  • 정확한 요구사항 말 안해주면 그냥 working backwards 하면서 최적의 솔루션 생각해보기
  • 경영자처럼 생각하기, 사업 관점에서 생각하기
  • 시스템 설계 전에 내 생각의 근거를 면접관이 설득되도록 설명하기

설계 전략

Think out loud

  • 면접 중에 소리내서 말하기(중요해서 반복)
  • 요구사항 명료화하고 조건 충족하는 솔루션 말하면서 설계하기
  • 내 사고방식을 면접관에게 보여주는 것이 중요!

Sketching out your design

  • 고수준 설계 스케치하기
  • 클라이언트 -> 웹 서버 -> 캐시 -> 디비 와 같이 역순으로 진행
  • 면접관이 설계에 동의하면 더 상세한 내용으로 살 붙이기
  • 답변 중간에 잠깐씩 멈추면서 면접관의 의견 듣기
    • 주로 아직 생각해보지 않은 문제에 대해 묻거나 도움을 줌

Be honest

  • 항상 솔직하게 답하기
  • 모르는거 아는척 하는게 제일 최악
  • 대신, 모른다고 인정하고 다른 해결책 찾으려는 노력을 보여야함
  • 포기하지 않고 스스로, 또 협력해서 해결책을 찾는 사람을 원함

Defending your design

  • 설계가 끝난 후에는 자신의 설계 방어할 수 있어야 함
  • 설계에 구멍이 있을때 어떻게 대응하는지를 보려는 것
  • 단, 방어적으로 굴지 말 것
  • 매사에 방어적이고 까칠하며 협력하거나 피드백을 개방적으로 받아들이지 못하는 태도는 큰 문제가 됨
  • 피드백을 돌려주는 전략 취하기
    • 어떻게 개선할지, 어떻게 최적화할지, 어떻게 단순화할지 등등
  • Don't be a jerk.

0개의 댓글