티스토리 뷰

반응형

이번에 살펴볼 내용은 효과적 시스템 설계 면접 공략법입니다. 총 네 가지 단계 나누어 접근합니다. 첫번째로는 문제 이해 및 설계 범위 확정, 두번째로는 개략적인 설계안 제시 및 동의 구하기, 세번째는 상세 설계, 4단계는 마무리 단계입니다. 크게 흐름을 보자면 추상에서 구체로 들어가고 구체에서 추상으로 다시 나오는 방법입니다.

좀 더 상세하게 설명하자면, 각 단계에서는 면접관의 동의를 구하거나 질문이 오갈 수 있습니다. 추상에서 구체로 넘어가기 전에 면접관들의 동의를 구하고 또는 질문을 통해 앞으로 나아갈 구체적인 방향 가닥을 잡습니다. 그리고 구체 단계에서는 개략적인 설계를 제시하고, 좀 더 심도있는 이야기로 넘어가기전에 동의를 구하고 더 깊은 구체 단계로 나아가게 됩니다. 이 단계에서는 개략적인 설계에 대해 각 컴포넌트에 대한 이야기를 하게 됩니다. 그리고 마무리로는 깊은 구체 이야기에서 다시 추상적으로 빠져나와서 면접의 인상을 결정짓습니다. 이 단계가 크게 4단계로 나뉘며, 45분 혹은 1시간 가량의 인터뷰의 모양입니다. 이 에 대해 앞으로 더 이야기 해보겠습니다.

먼저 첫번째 문제 이해 및 설계 범위 확정에 대해 이야기 해보겠습니다. 인터뷰는 막연하게 나올 수 있습니다. 불편을 느끼는 것도 당연하나, 수백 명, 수천 명이 엔지니어로 참여한 개발 제품을 한시간 안 에 설계하기란 불가능합니다. 여기서 인터뷰의 중점은 지원자의 설계 능력의 기술적 측면을 평가하는 자리일 거라 생각하지만 사실은 그 이상입니다. 지원자가 협력에 적합한 사람인지, 압박이 심한 상황도 잘 헤쳐나갈 수 있는 자질이 있는지, 모호한 문제를 건설적으로 해결할 능력이 있는지 등을 살펴볼 수 있습니다.

시스템 설계 면접을 볼때에는, 초등학교 때 문제가 나오면 손을 번쩍 들어 1등으로 답변하는 거라 생각하면 착오입니다. 요구사항을 완전히 이해하지 않고 답을 내놓는 행위는 아주 부정적인 신호(red flag)입니다. 면접은 퀴즈쇼가 아니며, 정답 따위는 없습니다.

다음과 같이 질문하여야합니다. 구체적으로 어떤 기능인가요? 제품 사용자 수는 몇 인가요? 회사의 규모는 얼마나 빨리 커지리라 에상하나요? 회사가 주로 사용하는 기술 스택은 무엇인가요? 설계를 단순화하기 위해 활용할 수 있는 기존 서비스로는 어떤 것들이 있는가요?

PPT에 있는 대화 예제를 참조하십시오.

 

질문과 대화가 끝났다면 이제 구체로 넘어가는 단계입니다. 개략적인 설계안을 제시하고 동의를 얻는 단계입니다. 이 단계는 더 상세적인 구체로 넘어가기 위해 면접관의 동의를 얻으면 좋습니다. 화이트보드나 종이에 핵심 컴포넌트를 포함하는 다이어 그램을 그리십시오. 최초 설계안이 시스템 규모에 관계덴 제약사항들을 만족하는지 개략적으로 계산하십시오. 계산 과정은 소리 내어 설명하십시오. 아울러 이런 개략적 추정이 필요한지는 면접관에게 미리 물어보십시오. 

 

2단계에서 개략적인 설계안을 제시하고 동의를 구하였다면, 시스템에서 전반적으로 달성해야 할 목표와 기능 범위 확인, 전체 설계의 개략적 청사진 마련, 해당 청사진에 대한 면접관의 의견 청취, 상세 설계에서 집중해야 할 영역들 확인이 끝났다는 것입니다.

이제는 설계해야할 대상 컴포넌트 사이의 우선순위를 정해야합니다. 면접관이 여러분이 집중했으면 하는 영역을 알려주기도 하며, 특히 선임급 개발자 면접이라면, 시스템의 성능 특성에 대한 질문을 던질 것이고, 그 경우 질문 내용은 시스템의 병목 구간이나 자원 요구량 추정치에 초점이 맞춰져 있을 것입니다. 특정 알고리즘에 대해 너무 많이 이야기하는 것은 바람직 하지 않습니다. 시간을 너무 많이 쓰는데다, 여러분이 규모 확장 가능한 시스템을 설계할 능력이 있다는 것을 입증하는데는 도움이 되지 않습니다. 

 

마무리 단계에서는 면접관이 시스템의 병목구간이나 좀 더 개선 가능한 지점을 찾아내라 주문할 수 도 있습니다. 여러분의 설계가 완벽하다거나 개선할 부분이 없다는 답은 하지 않도록 합니다. 개선할 점은 언제나 있게 마련이다. 비판적 사고능력을 보이고 좋은 인상을 남길 기회입니다. 그리고, 여러분이 만든 설계를 다시 요약해주는 것도 도움이 될 수 있습니다. 여러 해결책을 제시한 경우에는 특히 중요합니다. 오류가 발생하면 무슨일 이 생기는지 따져봐도 흥미로울 것입니다. 운영 이슈도 논의할 가치가 충분합니다. 메트릭은 어떻게 수집하고 모니터링은 어떻게 할 것입니까? 로그는, 시스템은 어떻게 배포할 것입니까 에 대해 이야기 해볼만 합니다. 미래에 닥칠 규모 확장 요구에 어떻게 대처할 것인지도 흥미로운 주제입니다.

PPT에서 해야할 것과 하지말아야할 것 등을 확인해보면 좋습니다. 

 

마지막으로 시간배분입니다.

- 문제 이해 및 설계 범위 확정 3분~10분
-개략적 설계안 제시 및 동의 구하기 10분~15분
-상세설계: 10분~25분
-마무리: 3분~5분

 

감사합니다.

반응형