Split View: 기술 면접 준비 플레이북 — 코딩·시스템 설계·행동 면접까지
기술 면접 준비 플레이북 — 코딩·시스템 설계·행동 면접까지
- 들어가며 — 면접은 실력과 별개의 기술이다
- 면접관은 무엇을 보는가
- 코딩 면접 — 문제가 아니라 패턴을 공부하라
- 시스템 설계 면접 — 5단계 프레임
- 직무별 단골 질문
- 행동 면접 — STAR와 스토리 은행
- 8주 역산 계획
- 떨어졌을 때
- 참고 자료
들어가며 — 면접은 실력과 별개의 기술이다
실력이 뛰어난데 면접에서 계속 떨어지는 사람이 있고, 실력이 평범한데 면접을 잘 통과하는 사람이 있습니다. 불공평해 보이지만, 여기엔 구조적인 이유가 있습니다. 면접은 실력을 측정하는 불완전한 프록시이고, 그 프록시 자체가 연습 가능한 기술이기 때문입니다.
이 글은 1편에서 그린 직무별 지식 지도를 면접장에서 증명하는 방법을 다룹니다. 면접의 네 가지 유형 — 코딩, 시스템 설계, 도메인 심층, 행동 면접 — 각각의 평가 신호와 준비법, 직무별 단골 질문, 그리고 8주 역산 계획으로 구성했습니다.
면접관은 무엇을 보는가
준비법에 들어가기 전에, 채점자의 루브릭부터 이해해야 합니다. 면접관이 수집하는 것은 정답 여부가 아니라 신호(signal) 입니다.
- 문제 해결 과정: 모호한 문제를 어떻게 구조화하는가. 요구사항을 확인하는 질문을 던지는가.
- 의사소통: 생각을 소리 내어 말하는가(think aloud). 막혔을 때 침묵하는가, 상태를 공유하는가.
- 트레이드오프 감각: "이 방법은 빠르지만 메모리를 더 씁니다" 같은 문장이 나오는가.
- 협업 가능성: 힌트를 받았을 때 방어적인가, 흡수하는가.
이 관점 하나만 바꿔도 준비의 방향이 달라집니다. 완벽한 정답을 암기하는 것이 아니라, 좋은 신호를 일관되게 내보내는 습관을 만드는 것이 목표입니다.
코딩 면접 — 문제가 아니라 패턴을 공부하라
코딩 면접 준비의 가장 흔한 실수는 문제를 수백 개 푸는 것입니다. 문제는 무한하지만 패턴은 유한합니다. 빈출 패턴은 대략 열다섯 개 안쪽입니다.
- 투 포인터 / 슬라이딩 윈도우 — 배열·문자열의 구간 문제
- 해시맵 — 빈도, 중복, 두 수의 합 계열
- BFS/DFS — 그래프·트리 탐색, 섬 개수 세기 계열
- 이진 탐색 — 정렬된 공간에서의 탐색, "최소의 최대" 계열
- 힙 — 상위 K개, 스트리밍 중앙값
- 동적 계획법 — 부분 문제 정의가 핵심 (배낭, 최장 부분 수열)
- 스택 — 괄호 짝, 단조 스택
- 백트래킹 — 순열·조합 생성
효율적인 학습 순서는 이렇습니다. ①패턴 하나를 고르고 ②그 패턴의 대표 문제 3~5개를 풀며 ③풀 때마다 "이 문제의 어떤 특징이 이 패턴을 부르는가"를 언어화합니다. 이 언어화가 면접장에서 "슬라이딩 윈도우가 떠오른 이유는 연속 구간의 최적화 문제이기 때문입니다"라는 강력한 신호로 변환됩니다.
연습 시 반드시 지킬 것 두 가지. 시간을 재고(실전은 20~35분), 소리 내어 설명하면서 푸세요. 조용히 잘 푸는 능력과 말하면서 푸는 능력은 다른 근육입니다. 복잡도 분석(시간·공간)은 코드를 다 쓴 뒤가 아니라 접근을 설명할 때 미리 말하는 습관을 들이세요.
시스템 설계 면접 — 5단계 프레임
"URL 단축기를 설계하세요" 같은 문제 앞에서 얼어붙는 이유는 지식 부족보다 진행 순서의 부재인 경우가 많습니다. 다음 5단계 프레임이 표준입니다.
- 요구사항 명확화 (5분) — 기능 요구사항(무엇을 하는가)과 비기능 요구사항(규모, 지연, 가용성)을 분리해 질문합니다. "쓰기와 읽기 중 어느 쪽이 많은가요?"는 거의 항상 좋은 질문입니다.
- 어림 계산 (5분) — 일일 사용자, QPS, 저장량을 자릿수 수준으로 추정합니다. 정확한 숫자가 아니라 "이 규모면 단일 DB로는 안 되겠다"는 판단이 목적입니다.
- API와 데이터 모델 (5분) — 핵심 엔드포인트 서너 개와 테이블/키 구조를 스케치합니다.
- 상위 설계 (10~15분) — 클라이언트 → 로드밸런서 → 서비스 → 저장소의 큰 그림을 그리고, 각 화살표에서 무슨 일이 일어나는지 설명합니다.
- 심화와 트레이드오프 (10~15분) — 면접관이 찌르는 지점(병목, 장애, 확장)을 깊게 팝니다. 캐시 무효화, 샤딩 키 선택, 일관성 수준이 단골 주제입니다.
여기서 차별화되는 것은 지식의 나열이 아니라 트레이드오프의 언어입니다. "캐시를 두면 읽기 지연은 줄지만 무효화 복잡성이 생깁니다. 이 서비스는 읽기가 압도적이므로 감수할 가치가 있습니다"처럼, 선택마다 대가를 명시하고 요구사항으로 정당화하는 화법을 연습하세요. 재시도와 멱등성 같은 분산 시스템 단골 주제는 이 블로그의 결제 멱등성 글이 좋은 예습 자료입니다.
직무별 단골 질문
1편의 다섯 직무 기준으로, 도메인 심층 면접의 단골 질문을 추렸습니다.
AI/LLM 엔지니어
- RAG와 파인튜닝은 각각 언제 선택하는가? (지식 갱신 빈도·비용·데이터량 기준으로)
- 환각(hallucination)을 프로덕션에서 어떻게 줄이는가? (근거 강제, 인용, 평가 셋)
- LLM 기능의 품질을 어떻게 회귀 테스트하는가?
플랫폼/DevOps/SRE
- 배포 직후 p99 지연이 튀었다. 어떻게 진단하는가? (롤백 판단 → 메트릭 → 트레이스 순의 사고 과정)
- 파드가 CrashLoopBackOff다. 첫 세 명령은? (
kubectl describe,logs --previous, 이벤트 확인) - SLO를 어떻게 정하고, 에러 버짓이 소진되면 무엇을 하는가?
보안 엔지니어
- JWT를 어디에 저장할 것인가, 그리고 왜? (localStorage와 쿠키의 공격면 비교)
- OAuth 2.0에서 authorization code 플로우에 PKCE가 왜 필요한가?
- 로그인 기능의 위협 모델을 그려보라. (크리덴셜 스터핑, 세션 고정, 열거 공격)
데이터 엔지니어
- 대용량 조인이 느리다. 접근 순서는? (실행 계획 → 파티셔닝/버켓팅 → 브로드캐스트 조인 판단)
- 늦게 도착하는 이벤트를 스트리밍 집계에서 어떻게 처리하는가? (워터마크, 지연 허용 창)
- 멱등한 백필을 어떻게 설계하는가?
프론트엔드
- 브라우저에 URL을 입력하면 무슨 일이 일어나는가? (깊이 조절이 가능한 만능 질문)
- LCP가 나쁜 페이지를 어떻게 진단·개선하는가?
- 리액트에서 불필요한 리렌더링을 어떻게 찾고 줄이는가?
각 질문의 답을 암기하기보다, 이 사이트의 도구들 — 쿠버네티스 놀이터, SQL 놀이터, 인증·보안 실습실, 리눅스 명령어 퀴즈 — 로 직접 실험하며 "겪은 이야기"로 만들어 두는 것이 훨씬 강력합니다.
행동 면접 — STAR와 스토리 은행
행동 면접(behavioral interview)을 즉흥으로 대응하는 것은 코딩 문제를 처음 보고 푸는 것과 같습니다. 준비물은 스토리 은행입니다.
STAR 구조 — 상황(Situation), 과제(Task), 행동(Action), 결과(Result)로 이야기를 짭니다. 흔한 실수 두 가지: 상황 설명이 절반을 넘는 것(30초 안에 끝내세요), 그리고 행동의 주어가 "우리"인 것(면접관이 알고 싶은 것은 당신이 한 일입니다).
여섯 가지 스토리를 준비하세요 — ①어려운 기술 문제를 해결한 경험 ②동료와 의견이 충돌한 경험 ③실패하거나 실수한 경험 ④주도적으로 뭔가를 개선한 경험 ⑤마감 압박 아래의 우선순위 결정 ⑥설득에 실패했지만 배운 경험. 각 스토리에 숫자(지연 40% 감소, 온콜 알림 주당 30건→5건)를 붙이면 신뢰도가 뛰어오릅니다.
의견 충돌 스토리에서 면접관이 보는 것은 승패가 아니라 자아와 아이디어를 분리하는 능력입니다 — 이 주제는 논쟁은 자아에 관한 것 편에서 깊게 다뤘습니다. "제가 옳았고 결국 관철했다"보다 "상대의 제약을 이해하고 함께 세 번째 안을 찾았다"가 시니어의 신호입니다.
8주 역산 계획
면접일로부터 역산한 표준 플랜입니다. 주당 10시간 기준이며, 상황에 맞게 늘리고 줄이세요.
- 8~7주 전: 지원 직무의 지식 지도 점검, 구멍 난 기본기 보수. 이력서를 STAR 소재가 드러나게 다듬기.
- 6~5주 전: 코딩 패턴 집중기 — 하루 1~2문제, 패턴별로. 시스템 설계 프레임을 3개 문제로 리허설.
- 4~3주 전: 직무 심층 질문 + 스토리 은행 작성. 모의 면접 최소 2회(동료 또는 AI 면접관 — 3편에서 프롬프트를 소개합니다).
- 2주 전: 약점 패턴만 반복. 지원 회사의 기술 블로그·아키텍처 공부(역질문 소재).
- 1주 전: 새 문제 금지, 복습만. 수면 리듬 정돈 — 기억력의 비밀 편에서 봤듯 수면은 응고화의 시간입니다.
- 면접 당일: 아침에 가벼운 문제 1개로 워밍업. 각 면접 마지막의 역질문 2~3개 준비("이 팀의 온콜은 어떤 모습인가요?"는 어디서나 통합니다).
떨어졌을 때
마지막으로 가장 중요한 이야기. 면접 탈락은 실력 판정이 아니라 한 번의 표본 추출입니다. 같은 실력으로도 문제 운, 면접관 성향, 그날의 컨디션에 따라 결과가 갈립니다. 탈락 후 할 일은 세 가지뿐입니다 — 기억나는 질문을 즉시 기록하고, 막혔던 지점을 스토리 은행과 패턴 목록에 반영하고, 다음 지원을 계속하는 것. 자신감은 어디에서 오는가 편에서 다뤘듯, 자신감은 시도의 축적에서 나옵니다. 면접도 정확히 그렇습니다.
참고 자료
The Tech Interview Playbook — Coding, System Design, and Behavioral
- Introduction — The Interview Is a Skill Separate from the Job
- What the Interviewer Actually Grades
- Coding Interviews — Study Patterns, Not Problems
- System Design — The 5-Step Frame
- Staple Questions by Role
- Behavioral Interviews — STAR and the Story Bank
- The 8-Week Countdown Plan
- When You Get Rejected
- References
Introduction — The Interview Is a Skill Separate from the Job
Some excellent engineers keep failing interviews; some average ones pass easily. It looks unfair, but there is a structural reason: an interview is an imperfect proxy for skill, and the proxy itself is a trainable skill.
This article covers how to prove the knowledge mapped in part 1 inside the interview room. It is organized around the four interview types — coding, system design, domain deep-dive, and behavioral — the signals each one grades, the staple questions per role, and an 8-week countdown plan.
What the Interviewer Actually Grades
Before the prep methods, understand the grader's rubric. What interviewers collect is not correctness — it is signal.
- Problem-solving process: how you structure an ambiguous problem; whether you ask clarifying questions about requirements.
- Communication: whether you think aloud; when stuck, whether you go silent or share your state.
- Trade-off sense: whether sentences like "this approach is faster but uses more memory" appear.
- Collaborativeness: when given a hint, whether you get defensive or absorb it.
This single shift of perspective changes the direction of your preparation. The goal is not to memorize perfect answers but to build the habit of consistently emitting good signals.
Coding Interviews — Study Patterns, Not Problems
The most common mistake in coding prep is grinding hundreds of problems. Problems are infinite, but patterns are finite — the frequent ones number about fifteen.
- Two pointers / sliding window — subarray and substring problems
- Hash maps — frequency, duplicates, two-sum family
- BFS/DFS — graph and tree traversal, island counting family
- Binary search — searching sorted spaces, "minimize the maximum" family
- Heaps — top-K, streaming median
- Dynamic programming — defining subproblems is the crux (knapsack, longest subsequence)
- Stacks — bracket matching, monotonic stacks
- Backtracking — generating permutations and combinations
The efficient study loop: pick one pattern, solve 3–5 representative problems of that pattern, and after each one verbalize which feature of the problem calls for that pattern. That verbalization converts directly into a strong interview signal: "sliding window came to mind because this is an optimization over contiguous ranges."
Two non-negotiables while practicing: time yourself (real rounds are 20–35 minutes) and explain aloud while solving. Solving quietly and solving while talking are different muscles. Make a habit of stating time and space complexity when you present the approach — not after the code is done.
System Design — The 5-Step Frame
Freezing in front of "design a URL shortener" usually comes not from missing knowledge but from missing a sequence. This 5-step frame is the standard.
- Clarify requirements (5 min) — separate functional (what it does) from non-functional (scale, latency, availability). "Is this read-heavy or write-heavy?" is almost always a good question.
- Back-of-envelope estimates (5 min) — daily users, QPS, storage, to an order of magnitude. The goal is not precision but judgments like "at this scale a single database will not do."
- API and data model (5 min) — sketch three or four core endpoints and the table/key structure.
- High-level design (10–15 min) — draw client → load balancer → services → storage, and explain what happens along each arrow.
- Deep dives and trade-offs (10–15 min) — go deep where the interviewer probes: bottlenecks, failures, scaling. Cache invalidation, shard key choice, and consistency levels are the staples.
What differentiates candidates is not an inventory of components but the language of trade-offs: "a cache cuts read latency but adds invalidation complexity; this service is overwhelmingly read-heavy, so it is worth it." Practice justifying every choice against the requirements. For the perennial distributed-systems topics — retries and idempotency — this blog's payment idempotency piece is good pre-reading.
Staple Questions by Role
Keyed to the five roles of part 1, these are the domain deep-dive staples.
AI/LLM engineer
- When do you choose RAG vs. fine-tuning? (by knowledge-refresh frequency, cost, data volume)
- How do you reduce hallucination in production? (grounding, citations, eval sets)
- How do you regression-test the quality of an LLM feature?
Platform/DevOps/SRE
- p99 latency spiked right after a deploy — how do you diagnose? (the thought sequence: rollback decision → metrics → traces)
- A pod is in CrashLoopBackOff. Your first three commands? (
kubectl describe,logs --previous, check events) - How do you set an SLO, and what happens when the error budget is spent?
Security engineer
- Where do you store a JWT, and why? (comparing the attack surfaces of localStorage vs. cookies)
- Why does the authorization code flow need PKCE in OAuth 2.0?
- Threat-model a login feature. (credential stuffing, session fixation, enumeration)
Data engineer
- A large join is slow — what is your order of attack? (execution plan → partitioning/bucketing → broadcast join judgment)
- How do you handle late-arriving events in streaming aggregation? (watermarks, allowed lateness)
- How do you design an idempotent backfill?
Frontend
- What happens when you type a URL into the browser? (the universal question with adjustable depth)
- How do you diagnose and improve a page with bad LCP?
- How do you find and reduce unnecessary re-renders in React?
Rather than memorizing answers, turn these into lived stories by experimenting with this site's tools — the Kubernetes playground, SQL playground, auth & security lab, and Linux command quiz.
Behavioral Interviews — STAR and the Story Bank
Improvising a behavioral interview is like solving a coding problem cold. The preparation artifact is a story bank.
The STAR structure — Situation, Task, Action, Result. The two common failure modes: letting the situation eat half your time (finish it in 30 seconds), and narrating actions with "we" (the interviewer wants to know what you did).
Prepare six stories — ① a hard technical problem you solved ② a disagreement with a colleague ③ a failure or mistake ④ something you proactively improved ⑤ a prioritization call under deadline pressure ⑥ a time you failed to persuade but learned. Attach numbers to each (latency down 40%, on-call alerts from 30 to 5 per week) and credibility jumps.
In the disagreement story, what the interviewer grades is not who won but your ability to separate ego from ideas — a theme covered in depth in most arguments are about ego. "I was right and eventually pushed it through" reads junior; "I understood their constraint and we found a third option together" reads senior.
The 8-Week Countdown Plan
A standard plan counted back from interview day, assuming ~10 hours a week. Stretch or compress to fit.
- Weeks 8–7: audit the knowledge map for your target role and patch fundamental gaps. Rewrite the résumé so STAR material surfaces.
- Weeks 6–5: coding pattern block — 1–2 problems a day, organized by pattern. Rehearse the system design frame on three problems.
- Weeks 4–3: role deep-dive questions + write the story bank. At least two mock interviews (a peer or an AI interviewer — prompts in part 3).
- Week 2: repeat weak patterns only. Study the target company's tech blog and architecture (fuel for your reverse questions).
- Week 1: no new problems, review only. Fix your sleep rhythm — as the secrets of memory showed, sleep is when consolidation happens.
- Interview day: warm up with one light problem in the morning. Prepare 2–3 reverse questions for the end of each round ("what does on-call look like on this team?" works everywhere).
When You Get Rejected
Finally, the most important part. A rejection is not a verdict on your ability — it is one sample draw. With identical skill, outcomes swing on problem luck, interviewer style, and the day's condition. After a rejection there are only three things to do: write down every question you remember immediately, feed the sticking points back into your story bank and pattern list, and keep applying. As where confidence comes from argued, confidence is built from accumulated attempts. Interviews are exactly that.