-
[가상면접 사례로 배우는 대규모 시스템 설계 기초] 3장. 시스템 설계 면접 공략법📕 book/가상 면접 사례로 배우는 대규모 시스템 설계 기초 2025. 12. 25. 13:07
🔍 시스템 설계 면접이 있는 이유??
모호한 문제를 풀기 위해서 해결책을 찾아내는 과정에 대한 시뮬레이션
- 정해진 결말도 정답도 없다!
설계 기술을 시연하는 자리이고 설계 과정에서 내린 결정들에 대한 방어 능력을 보이는 자리이다.
- 면접관의 피드백을 건설적인 방식으로 처리할 자질이 있음을 보이는 자리
👨💼 면접관의 입장
- 일차적 목표는 능력을 평가하는 것
면접관이 시스템 설계 면접에서 찾고자 하는 것은 무엇일까?
- 지원자가 협력에 적합한 사람인지
- 압박이 심한 상황도 잘 헤쳐 나가는 자질이 있는지
- 모호한 문제를 건설적으로 해결할 능력이 있는지
- 설계의 순수성에 집착하여
트레이드 오프를 도외시하고 과도한 엔지니어링을 하는지
🚶♂️ 효과적 면접을 위한 4단계 접근법
1️⃣ 문제 이해 및 설계 범위 확정
시스템 설계 면접 과정에서는 생각 없이 바로 답을 내는 것은 좋지 않다.
요구사항을 완전히 이해하지 않고 답을 내놓는 행위는 엄청난 부정적 신호이다.
속도를 늦춰라 ⭐
- 깊이 생각하고 질문하여 요구사항과 가정들을 분명히 하라
엔지니어가 가져야 할 가장 중요한 기술 중 하나는 올바른 질문을 하는 것, 적절한 가정을 하는 것, 시스템 구축에 필요한 정보를 모으는 것이다.
- 질문을 던졌을 때 면접관은 질문에 대한 답을 내놓거나 스스로 어떤 가정을 하기를 주문할 것이다.
- 후자의 경우는 그 가정을 화이트보드나 종이에 적어두어야 한다.
요구사항을 정확히 이해하기 위해 해볼 수 있는 질문들
- 구체적으로 어떤 기능을 만들어야 하나?
- 제품 사용자 수는 얼마나 되나?
- 회사의 규모는 얼마나 빨리 커질까?
- 회사가 주로 사용하는 기술 스택은 무엇인가?
2️⃣ 개략적인 설계안 제시 및 동의 구하기
이 단계에서는 개략적인 설계안을 제시하고 면접관의 동의를 얻는 것에 초점을 두어야 한다.
- 면접관과 협력하여 진행
💡 설계안에 대한 최초 청사진을 제시하고 의견을 구하라
- 면접관을 마치 팀원인 것처럼 대하라
- 훌륭한 면접관들은 지원자들과 대화하고 설계 과정에 개입하는 것을 즐긴다.
🎨 화이트보드나 종이에 핵심 컴포넌트를 포함하는 다이어그램을 그려라
- 클라이언트, API, 웹 서버, 데이터 저장소, 캐시, CDN, 메시지 큐 등
🧑🏫 최초 설계안이 시스템 규모에 관계된 제약사항들을 만족하는지 개략적으로 계산해 보라.
3️⃣ 상세 설계
이 단계까지 왔다면 시스템에서 달성해야 할 목표와 기능 범위를 확인했을 것이고 전체 설계의 개략적 청사진도 준비가 되었고 상세 설계에서 집중해야 할 영역들을 확인했을 것이다.
이제 면접관과 해야 할 일은 설계 대상 컴포넌트 사이의 우선순위를 정하는 것이다.
면접관이 집중했으면 하는 영역을 알려주기도 시스템 병목 구간이나 자원 요구량 추정치에 초점이 맞춰진 시스템 성능 특성에 대한 질문을 할 수도 있다.
🤖 대부분의 경우 면접관은 특정 시스템 컴포넌트들의 세부사항을 깊이 있게 설명하는 것을 원한다.
ex) 단축 URL 생성기 설계- 해시 함수의 설계를 구체적으로 설명하는 것
ex) 채팅 시스템- 어떻게 하면 지연시간을 줄이고 사용자의 온 / 오프라인 상태를 표시할 것인지
⏱️ 불필요한 세부사항에 시간을 쓰지 말아라
- 사소한 세부사항을 설명하느라 능력을 보일 기회를 놓칠 수 있다.
4️⃣ 마무리
마무리 단계에서는 면접관은 설계 결과물에 대해 후속 질문들 던질 수도 있고 스스로 추가 논의를 진행하도록 할 수 있다.
면접관이 시스템 병목 구간, 혹은 더 개선 가능한 지점을 찾아내라고 할 수 있다.
- 개선할 점은 언제나 있다.
- 설계가 완벽하다거나 개선할 부분이 없다는 답은 하지 말자.
설계를 다시 요약을 한 번해주는 것도 도움이 될 수 있다.
- 면접관의 기억을 환기
✅ 해야할 것과 하지말아야 할 것
해야 할 것 하지 말아야 할 것 질문을 통해 확인하라. 스스로 내린 가정이 옳다 믿고 진행하지마라 전형적인 면접 문제들에 대비하지 않은 상태에서 면접장에 가지마라 문제의 요구사항을 이해하라 요구사항이나 가정을 분명히 하지 않은 채 설계를 제시하지 마라 정답이나 최선의 답안은 없다는 것을 명시 처음부터 특정 컴포넌트의 세부사항을 너무 깊게 설명하지 마라 면접관과 소통하여 사고 흐름을 이해할 수 있도록 하라 진행중 막혔다면 힌트 청하기를 주저하지 마라 여러 해법을 가능하면 함께 제시 소통을 주저하지 마라. 침묵 속에 설계를 진행하지 마라 개략적 설계에 면접관이 동의하면 중요한 컴포넌트부터 세부사항을 설명하기 시작하라 설계안을 내놓는 순간 면접이 끝났다고 생각하지 마라 면접관의 아이디어를 이끌어 내라. 같은 팀원처럼 협력 포기하지 마라 🔖 배운 점 정리 및 궁금한 점 정리
❗ 면접에 참여하기 전
그동안 여러 면접을 많이 참여해봤지만 내 입장에서만 면접을 준비하고 차마 면접관의 입장을 생각해본 경험이 많이 없는 것 같았다.
면접관이 직무에서 원하는 것은 무엇이고 내가 니즈에 충족한 사람임을 보여주기 위해서 어떤 것들을 어필해야 할지 어떤 질문들이 들어올지 한 번쯤 생각해보는 연습도 해보면 좋을 것 같다는 생각을 하게 되었다.
🙋♂️ 면접 과정
면접관에게 쫄지말자.
같은 팀원이라고 생각하고 계속해서 의견을 물어보고 질문하고 결정하자.
내가 모르는 것이라고 포기하지 말자.
포기하는 것이 더 최악이다.
📚 Ref.
'📕 book > 가상 면접 사례로 배우는 대규모 시스템 설계 기초' 카테고리의 다른 글
[가상면접 사례로 배우는 대규모 시스템 설계 기초] 6장. 키:값 저장소 설계 (1) 2025.12.25 [가상면접 사례로 배우는 대규모 시스템 설계 기초] 5장. 안정 해시 설계 (0) 2025.12.25 [가상면접 사례로 배우는 대규모 시스템 설계 기초] 4장. 처리율 제한 장치의 설계 (0) 2025.12.25 [가상면접 사례로 배우는 대규모 시스템 설계 기초] 2장. 개략적인 규모 추정 (0) 2025.12.25 [가상면접 사례로 배우는 대규모 시스템 설계 기초] 1장. 사용자 수에 따른 규모 확장성 (0) 2025.12.25