처음이라 뭐가 뭔지도 모르는 사람을 위해. 무엇을 연습할지(주제 지도)와 어떻게 푸는지(풀이법)부터 잡습니다. 정답을 외우는 책이 아니라, 어떤 문제가 나와도 풀어가는 법을 손에 쥐는 책입니다.
코딩테스트는 준비하는데 설계 면접은 어디서부터 봐야 할지 모릅니다. 1장이 그것부터 풀어줍니다.
아무 문제나 풀면 시간만 낭비합니다. 실제로 나오는 주제만 골라 지도로 묶었습니다.
설계 면접엔 외울 정답이 없습니다. 좋은 답이 어디로 가는지, 어떻게 말해야 하는지를 보여줍니다.
문제마다 새로 헤매지 않게, 처음 보는 문제도 똑같이 풀어가는 4단계를 손에 쥐여줍니다.
면접관은 완성된 정답을 원하지 않습니다. 막막한 요구사항 하나를 던지고, 당신이 그걸 어떻게 쪼개고 어디를 먼저 짚는지를 봅니다. 코딩테스트가 “돌아가는 코드”를 본다면, 이건 “생각하는 순서”를 봅니다.
그래서 준비의 핵심은 “답을 많이 아는 것”이 아니라 “푸는 순서를 몸에 익히는 것”입니다. 그 순서를 3장에서 4단계로 정리합니다.
주니어 백엔드 설계 면접은 결국 네 갈래로 모입니다. 아무 문제나 풀지 말고, 이 네 갈래의 대표 문제부터 잡으세요. 면접에서 마주치는 대부분이 이 안에 있습니다.
모델링 · 가장 자주 나오는 갈래
동시성 · 단골 압박 질문
조회 · 확장
상태 · 스케줄
처음 보는 문제 앞에서 머리가 하얘지지 않으려면, 매번 똑같이 밟는 순서가 있어야 합니다. 어떤 설계 문제든 이 4단계 위에 올려놓고 시작하세요.
“무엇을, 누가, 얼마나”를 한 줄로. 모호하면 면접관에게 되묻습니다.
이 문제가 진짜 묻는 한 가지를 고릅니다. 곁가지는 과감히 미룹니다.
제일 순진한 설계를 먼저 그립니다. 완벽하지 않아도 됩니다.
그 설계가 어디서 무너지는지 짚고, 한 단계만 올립니다.
“공연 좌석 예약을 설계해보세요. 날짜로 검색하면 그 날 예약 가능한 좌석이 나와야 합니다.”
“날짜를 고르면 그 날 빈 좌석 목록, 하나 골라 예약.” 결제나 회원 가입은 지금 묻는 게 아니니 접어둡니다. 한 줄로 좁혔습니다.
이 문제가 진짜 묻는 건 화면도 API도 아니고, 같은 좌석을 날짜별로 어떻게 표현하느냐입니다. 여기만 풀면 나머지는 따라옵니다.
제일 순진하게: 좌석 테이블에 “예약됨” 칸 하나. 조회는 그 칸이 비어 있는 좌석만. 일단 그려 봅니다.
막힌 지점은 “날짜”입니다. 그러면 좌석(고정)과 예약(날짜별 사건)을 나눠 줍니다. 한 단계만 올렸습니다.
여기서 멈추면 딱 합격선입니다. 그리고 진짜 면접관은 한 발 더 들어옵니다. “두 사람이 같은 좌석을 동시에 누르면요?” 당황하지 마세요. 4단계로 돌아가면 됩니다. 막히는 곳(동시 예약)을 짚고, 한 단계 올리면(UNIQUE 제약과 트랜잭션) 됩니다. 풀어가는 방법이 같으니까요. 이게 외운 답이 아니라 풀이법을 익혔을 때 생기는 힘입니다.
이 지도와 4단계 풀이법이면 처음 보는 문제도 스스로 풀어갑니다. 그리고 옆에서 시니어가 당신의 답을 같이 깎아주면, 그 속도는 훨씬 빨라집니다. 그게 그릿입니다.