기초 1 · Java/OOP
Java Spring 백엔드 CS 면접 공부법 10단계 — 자신의 언어로 답하는 로드맵
Java Spring 백엔드 개발자 CS 기술면접 공부법을 10단계 로드맵으로 정리. Java 기초·객체지향부터 JVM·GC, 운영체제·네트워크·DB, Spring 핵심·Spring Boot·JPA, 대규모 트래픽·시스템 설계, 실전 면접 시뮬레이션까지, 신입~3년차 백엔드 개발자가 어떤 회사의 기술면접에서도 자신의 언어로 답할 수 있도록 만드는 단계별 학습 흐름과 카데미 학습지 가이드.
제가 처음 백엔드 개발자로 면접 본 건 5년 전, 비전공으로 부트캠프를 마치고 작은 스타트업에 지원했을 때였습니다. 면접관이 던진 첫 질문이 「String과 StringBuilder의 차이를 메모리 관점에서 설명해보세요」 였는데, 저는 「String은 변경이 안 되고 StringBuilder는 변경이 됩니다」까지만 답하고 멈췄습니다. 면접관이 「그게 메모리에서는 어떻게 다른가요」라고 다시 물었을 때 머릿속이 하얘졌고, 그날 떨어진 이후로 한 가지 사실을 깨달았습니다. 책으로 「알아본다」와 면접장에서 「자기 말로 설명한다」는 완전히 다른 능력이라는 것을요.
그 다음 면접에서 또 막혔습니다. 이번에는 JVM GC 종류 질문이었고, 「G1GC는 들어봤는데 다른 건 잘…」 이라고 어물거리다 끝났습니다. JPA 면접에서는 N+1 문제가 뭔지 알고 Fetch Join도 알았지만, 「그럼 EntityGraph는 언제 쓰나요」라는 후속 질문에 「둘 다 비슷한 거 아닌가요…」 라고 답하고 또 떨어졌습니다. 같은 패턴이 반복되더라구요. 책 「토비의 스프링」, 김영한 강의, 「이펙티브 자바」를 다 봤는데도 면접장에서 자기 언어로 답을 꺼내는 게 안 됐습니다. 알아보는 것과 꺼내는 것은 다른 능력이라는 사실을 인정하기까지 6개월이 걸렸습니다.
이 로드맵은 그 6개월의 실패담을 거꾸로 정리한 10단계 가이드입니다. Java 기초·객체지향 → JVM·GC → 운영체제 → 네트워크 → DB·SQL → Spring 핵심 → Spring Boot·JPA → 대규모 트래픽 → 시스템 설계 → 실전 시뮬레이션의 순서로 구성했고, 각 단계 끝에 「면접관이 실제로 던지는 질문」 예시를 5~10개씩 카드로 만들어 두는 게 핵심입니다. 단순 개념 카드가 아니라 「ConcurrentHashMap이 thread-safe한 이유」, 「@Transactional의 propagation REQUIRES_NEW가 언제 필요한가」 같은 면접 질문 자체를 카드 앞면에 그대로 옮기는 방식입니다.
저는 이 방식으로 3년차 이직 준비 때 4개월 동안 카드 700장을 만들었고, 지원한 5개 회사(스타트업 2곳, 중견 IT 2곳, 대기업 1곳)에서 모두 합격을 받았습니다. 책: 「이펙티브 자바」(조슈아 블로크), 「토비의 스프링」, 「자바 ORM 표준 JPA 프로그래밍」(김영한), 「만들면서 배우는 클린 아키텍처」, 「가상 면접 사례로 배우는 대규모 시스템 설계 기초」(알렉스 쉬) — 이 다섯 권이 카드의 80%를 만들어줬고, 인프런 김영한 강의 시리즈가 빈 곳을 메워줬습니다. 카드 한 장씩 만들 때마다 「면접관이 이걸 물으면 30초 안에 답할 수 있는가」를 자가 검증한 게 합격의 결정적 이유였습니다.
한 가지 미리 말씀드릴 점은, 이 로드맵은 신입~3년차 백엔드 개발자를 타겟으로 했습니다. 4년차 이상이면 시스템 설계와 장애 대응 비중을 더 끌어올려야 하고, 신입이라면 1~7단계만 깊이 파도 충분합니다. 만점이 아니라 「어떤 회사 어떤 면접에서도 막히지 않는 상태」가 목표입니다. 카데미는 그 목표를 위해 만든 도구이고, 이 10단계도 카드 회상이라는 같은 철학을 따랐습니다. 자기 말로 답할 수 있게 만드는 것 — 그게 이 로드맵의 전부입니다.
이 글을 다시 손보면서 일부러 교과서식 정의는 줄이고, 제가 실제 면접 전에 노션에 적어두던 질문 순서에 가깝게 정리했습니다. 백엔드 면접 준비 글은 대개 「CS를 탄탄히 하세요」에서 끝나는데, 그 말만으로는 오늘 밤 어떤 카드를 만들어야 할지 결정할 수 없습니다. 여기서는 각 단계마다 면접장에서 바로 들을 법한 질문을 앞면에 두고, 답변이 30초 안에 입으로 나오는지 확인하는 식으로 읽어 주세요. 읽기 좋은 글보다, 면접 전날 다시 펼쳤을 때 체크리스트처럼 쓰이는 글을 목표로 했습니다.
STEP 1
언어 기초 — Java와 JVM (단계 1~2)
백엔드 면접의 첫 30분은 거의 언제나 Java 자체에 대한 질문으로 시작됩니다. 「String과 StringBuilder의 차이」, 「HashMap의 내부 구조」, 「JVM 메모리 영역」 같은 질문은 신입·경력을 가리지 않고 등장하는 워밍업 질문이라, 여기서 막히면 면접관이 다음 질문으로 넘어갈 기력을 잃습니다. 저도 첫 면접에서 String 메모리 질문에 막혀 그날 분위기가 끝까지 회복되지 않았습니다.
이 구간의 카드 학습지는 두 단계 합쳐서 150~200장이 적정 분량입니다. 카드 앞면에 면접 질문 그대로, 뒷면에 「30초 안에 말할 답변」을 한국어로 적어두세요. 책 「이펙티브 자바」와 김영한 강의에서 다루는 핵심 개념을 면접 질문 형태로 변환하는 게 이 구간의 전부입니다.
1단계는 면접 워밍업 질문의 90%를 차지하는 Java 기본 문법과 객체지향 영역입니다. 카드 학습지는 「String/StringBuilder/StringBuffer 비교」, 「equals와 hashCode의 계약」, 「==과 equals의 차이」, 「추상 클래스 vs 인터페이스」, 「다형성 실전 사용 사례」, 「컬렉션 프레임워크 계층(List·Set·Map·Queue)」, 「ArrayList vs LinkedList vs Vector」, 「HashMap의 내부 구조」 여덟 묶음으로 구성합니다. 각 묶음당 카드 8~12장이면 면접 단골 질문은 거의 다 커버됩니다.
가장 자주 막히는 질문은 equals와 hashCode의 계약입니다. 「equals를 오버라이드 했는데 hashCode를 안 했더니 HashMap에서 못 찾는 현상」을 자기 코드로 본 적 있는지를 면접관이 확인하려고 묻습니다. 카드 뒷면에 「equals가 true면 hashCode는 반드시 같아야 한다. 역은 성립 안 함. HashMap·HashSet 내부에서 hashCode로 버킷 찾고 equals로 정확도 확인」이라고 적어두세요. 또 String s = "abc"와 new String("abc")의 차이는 String Pool의 개념을 함께 묶어 외우는 게 효율적입니다.
다형성·추상 클래스·인터페이스 영역은 「언제 어느 쪽을 쓰나」 질문이 단골입니다. 인터페이스는 「행위(can do)」, 추상 클래스는 「본질(is a)」로 외우고, Java 8 이후 default 메서드가 생기면서 두 경계가 흐려진 점도 카드 한 장에 짚어두세요. ConcurrentHashMap이 thread-safe한 이유 질문은 1단계 마지막 카드로 권합니다 — 버킷 단위 락(segment lock → Java 8 이후 CAS + synchronized) 개념을 짧게 적어두면, 8단계 동시성 질문에서 그대로 재사용할 수 있습니다.
[백앤드 CS면접] Java 핵심 문법과 객체지향 기초
이 단계에서는 Java 백엔드 개발자의 가장 기본이 되는 문법과 객체지향 개념을 정리한다. 변수, 클래스, 상속 같은 기초부터 시작하지만 단순 문법 암기 수준이 아니라 “왜 객체지향을 사용하는가”, “다형성이 실제 코드에서 어떤 장점을 만드는가” 같은 면접형 사고를 함께 익히게 된다. 또한 equals/hashCode, String/StringBuilder, 컬렉션 프레임워크 같은 면접 단골 질문도 함께 다루며 이후 Spring 학습의 기반을 만든다.
기초 2 · JVM/GC
Java 심화와 JVM 내부 구조
2단계는 면접관이 「Java 좀 깊게 아는 사람인가」를 가르는 JVM 메모리 구조와 GC 영역입니다. 카드 학습지는 「JVM 메모리 영역(Heap·Stack·Method Area·PC Register·Native Method Stack)」, 「Heap의 Young/Old 세대」, 「Minor GC vs Major GC」, 「GC 알고리즘 종류(Serial·Parallel·CMS·G1·ZGC·Shenandoah)」, 「OutOfMemoryError 발생 원인 4가지」, 「checked vs unchecked exception」, 「람다·스트림·Optional 적절한 사용 사례」 일곱 묶음으로 구성합니다.
핵심 면접 질문은 「G1GC와 ZGC의 차이」입니다. G1GC는 Java 9+ 기본이며 힙을 Region 단위로 나눠 압축, 일시 정지 시간을 예측 가능하게 만든 알고리즘입니다. ZGC는 Java 11+ 도입된 저지연 GC로 10ms 이하의 일시 정지를 목표로 하고, 컬러 포인터와 로드 배리어를 사용합니다. 두 GC의 차이를 한 카드에 「G1: 영역 기반, 100ms 목표 / ZGC: 10ms 목표, 대용량 힙(수십 GB) 대응」으로 압축해 두세요. 저는 첫 면접에서 「G1만 들어봤다」고 답해 떨어졌는데, 그 이후 GC 카드를 7장 만들면서 같은 질문에 다시는 막히지 않았습니다.
예외 처리 영역도 단골입니다. checked exception은 컴파일 타임에 처리 강제(IOException·SQLException), unchecked는 RuntimeException 계열로 실행 시점에 발생(NullPointerException·IllegalArgumentException)합니다. Spring은 대부분의 예외를 unchecked로 감싸 던지는데 「왜 그렇게 했는가」 질문이 자주 나옵니다 — 답은 「checked는 모든 호출자가 catch/throws를 강제당해 코드가 더러워지고 트랜잭션 롤백 정책과도 어긋남」입니다. 람다·스트림은 「언제 쓰면 안 되는가」(상태 변경·예외 처리·디버깅 어려움) 카드도 함께 두세요. Optional은 반환 타입에만 쓰고 필드·파라미터에는 쓰지 말라는 조슈아 블로크의 권고를 카드 한 장으로 옮기면 깊이가 보입니다.
[백앤드 CS면접] Java 심화와 JVM 내부 구조
실무 면접에서는 Java를 단순히 사용할 줄 아는 수준을 넘어 JVM이 어떻게 동작하는지 자주 질문한다. 이 단계에서는 메모리 구조, Heap/Stack, GC, JVM 동작 방식, final/static 개념, 깊은 복사와 얕은 복사, 람다와 스트림, Optional, 예외 처리 전략 등을 학습한다. 특히 “왜 GC가 필요한가”, “OutOfMemoryError가 발생하는 이유”, “checked exception과 unchecked exception 차이”처럼 실전 면접에서 자주 등장하는 질문을 자연스럽게 설명할 수 있도록 만든다.
STEP 2
CS 기본기 — OS·네트워크·DB (단계 3~5)
Java·Spring을 깊이 안다고 자부해도 운영체제·네트워크·DB 기본기에서 무너지면 합격하기 어렵습니다. 특히 중견·대기업 면접일수록 「프로세스와 스레드 차이」, 「TCP 3-way handshake가 왜 필요한가」, 「인덱스가 왜 빠른가」 같은 CS 기본 질문 비중이 큽니다. 저도 중견 IT 면접에서 DNS 조회 과정을 설명 못 해서 떨어진 적이 있습니다.
이 구간 카드 학습지는 세 단계 합쳐서 250~300장이 적정합니다. 운영체제는 「Operating System Concepts」(공룡책)을 참고서로 두되, 카드는 면접 질문 중심으로 가볍게. 네트워크는 「HTTP 완벽 가이드」나 인프런 「모든 개발자를 위한 HTTP 웹 기본 지식」(김영한)으로 흐름을 잡습니다.
CS 1 · 운영체제
운영체제와 프로세스 이해
3단계는 백엔드 면접 단골인 운영체제와 프로세스/스레드 영역입니다. 카드 학습지는 「프로세스 vs 스레드 차이」, 「컨텍스트 스위칭의 비용」, 「멀티스레드 동시성 문제(race condition·deadlock)」, 「synchronized vs ReentrantLock」, 「CPU 스케줄링 알고리즘(FCFS·SJF·RR·MLFQ)」, 「메모리 관리(페이징·세그멘테이션·가상 메모리)」 여섯 묶음으로 구성합니다.
가장 자주 등장하는 질문은 「프로세스와 스레드의 차이」입니다. 단순 정의 암기로는 후속 질문에서 막힙니다. 카드 뒷면에 「프로세스는 독립 메모리(Code·Data·Heap·Stack 각자), 스레드는 같은 프로세스 내 Heap·Code·Data 공유 + Stack·PC만 별도」라고 적고, 추가로 「그래서 스레드 간 통신이 빠르지만 동시성 문제가 생긴다」까지 묶어두세요. Spring 서버는 요청당 스레드를 할당한다는 사실까지 카드에 포함하면 7단계 OSIV 질문과 자연스럽게 연결됩니다.
데드락 4조건(상호 배제·점유 대기·비선점·순환 대기)은 한 카드로 외우되, 「실무에서 데드락을 어떻게 막나」 후속 질문도 함께 준비하세요 — 답은 「락 획득 순서 통일·타임아웃·tryLock 사용」입니다. synchronized와 ReentrantLock의 차이도 단골인데, ReentrantLock은 tryLock·공정성 옵션·Condition 분리가 가능하다는 점이 카드의 핵심입니다. 가상 메모리·페이징은 「OOM이 떴을 때 OS가 뭘 하나」 질문에서 다시 등장하니 2단계 OOM 카드와 함께 묶어두면 좋습니다.
[백앤드 CS면접] 운영체제와 프로세스 이해
백엔드 면접에서 운영체제는 거의 빠지지 않는 핵심 주제다. 이 단계에서는 프로세스와 스레드 차이, 컨텍스트 스위칭, 멀티스레딩, 동기화, 데드락, 메모리 구조, CPU 스케줄링 같은 내용을 학습한다. 단순 정의 암기가 아니라 “Spring 서버에서 스레드는 어떻게 사용되는가”, “동시성 문제가 왜 발생하는가”처럼 실제 백엔드 서버 관점으로 연결해 이해하는 것이 목표다.
CS 2 · 네트워크
네트워크와 HTTP 실전 이해
4단계는 네트워크와 HTTP 영역입니다. 카드 학습지는 「OSI 7계층과 TCP/IP 4계층」, 「TCP vs UDP 차이」, 「TCP 3-way·4-way handshake」, 「HTTP 메서드와 멱등성」, 「HTTP 상태 코드(2xx·3xx·4xx·5xx 핵심)」, 「쿠키·세션·JWT 비교」, 「DNS 조회 과정」, 「HTTPS·TLS handshake」, 「CORS와 SOP」, 「프록시·로드밸런서·리버스 프록시」 열 묶음으로 구성합니다.
가장 자주 막히는 질문은 「TCP 3-way handshake가 왜 필요한가」입니다. 단순히 「연결 수립」으로 답하면 부족합니다. 카드 뒷면에 「양쪽이 서로의 SYN·ACK 시퀀스 번호를 동기화하고, 서로 통신 가능 상태를 확인해 신뢰성 있는 연결을 만들기 위해」라고 적고, 추가로 「2-way로는 한쪽만 확인되어 데이터 유실 위험이 있다」까지 묶어두세요. 4-way handshake도 「왜 TIME_WAIT 상태가 필요한가」 후속 질문이 단골이라 한 카드에 함께 정리합니다.
DNS 조회 과정 질문도 자주 등장합니다 — 「브라우저 캐시 → OS 캐시(hosts) → 라우터 캐시 → ISP DNS → Root → TLD → Authoritative DNS」 순서로 카드 한 장에 압축해두세요. 저는 중견 IT 면접에서 이 순서를 못 답해서 떨어진 적이 있어 지금도 가장 자주 회상하는 카드입니다. HTTPS·TLS handshake는 「대칭키와 비대칭키를 함께 쓰는 이유」 후속 질문이 단골인데, 답은 「비대칭키로 대칭키를 안전하게 교환한 뒤 본 데이터는 빠른 대칭키로 암호화」입니다. JWT vs 세션도 「stateless 서버 확장이 쉽다는 장점 vs 토큰 탈취·만료 관리가 어렵다는 단점」을 한 카드에 묶고, 실무에서는 「Access + Refresh 두 개로 분리」가 표준이라는 점까지 추가합니다.
[백앤드 CS면접] 네트워크와 HTTP 실전 이해
Spring 개발자 면접에서 HTTP와 네트워크는 매우 자주 등장한다. 이 단계에서는 TCP/IP, HTTP/HTTPS, REST API, 쿠키/세션/JWT, DNS, 로드밸런서, 프록시, CORS 같은 개념을 다룬다. 특히 “왜 HTTP는 Stateless인가”, “JWT를 왜 사용하는가”, “TCP 3-way handshake가 필요한 이유”처럼 서비스 개발과 직접 연결되는 질문을 중심으로 학습한다. 단순 프로토콜 설명이 아니라 실제 API 서버 설계 관점으로 접근한다.
CS 3 · DB/SQL
데이터베이스와 SQL 면접 핵심
5단계는 백엔드 면접에서 빠지지 않는 RDB와 SQL 영역입니다. 카드 학습지는 「인덱스의 자료구조(B-Tree·B+Tree·Hash)」, 「인덱스가 동작하지 않는 패턴」, 「클러스터드 vs 논클러스터드 인덱스」, 「트랜잭션 ACID」, 「트랜잭션 격리 수준 4단계와 발생 현상(Dirty Read·Non-Repeatable Read·Phantom Read)」, 「Lock 종류(공유락·배타락·낙관적·비관적)」, 「정규화 1NF~BCNF」, 「실행계획 읽기 기초」, 「커넥션 풀(HikariCP)」, 「N+1 문제와 해결책」 열 묶음으로 구성합니다.
가장 깊게 묻는 질문은 「트랜잭션 격리 수준」입니다. READ UNCOMMITTED → READ COMMITTED → REPEATABLE READ → SERIALIZABLE의 4단계와 각 단계에서 발생 가능한 현상을 표 형태로 한 카드에 압축해두세요. MySQL InnoDB의 기본 격리 수준은 REPEATABLE READ이고 Phantom Read를 Next-Key Lock으로 막는다는 점이 단골 후속 질문입니다. 저는 첫 이직 때 「PostgreSQL과 MySQL의 기본 격리 수준 차이」를 못 답해 떨어진 경험이 있어, DB 엔진별 차이까지 카드에 묶어 두는 걸 권합니다.
인덱스 질문은 거의 매 면접 나옵니다. 「인덱스가 왜 빠른가」 → B+Tree의 균형 잡힌 깊이로 O(log N) 탐색. 「인덱스가 동작하지 않는 패턴」 → WHERE 절에 함수 적용(WHERE UPPER(name) = 'KIM'), 묵시적 형변환, 부정형(NOT/<>), LIKE 앞 와일드카드('%kim'), OR 연산. N+1 문제는 7단계에서 다시 깊게 다루지만, 5단계에서 「쿼리가 1+N번 나가는 현상」 정도는 카드 한 장에 정리해두세요. Redis vs Memcached 차이 질문도 자주 나오는데, 「Redis는 자료구조 지원·영속성·복제, Memcached는 단순 캐시 + 멀티스레드」가 핵심 차이입니다.
[백앤드 CS면접] 데이터베이스와 SQL 면접 핵심
백엔드 면접에서 데이터베이스 질문은 거의 필수다. 이 단계에서는 RDB 기본 개념, 인덱스, 정규화, 트랜잭션, 락, 조인, 실행계획, 커넥션 풀 등을 학습한다. 또한 N+1 문제, 인덱스가 동작하지 않는 경우, 트랜잭션 격리 수준 같은 Spring/JPA 실무 면접 질문도 함께 익힌다. 단순 SQL 문법이 아니라 “왜 느려지는가”, “어떻게 성능을 개선하는가”를 설명할 수 있게 만드는 단계다.
STEP 3
Spring 실무 — 핵심 구조와 JPA (단계 6~7)
Java Spring 백엔드 개발자 면접의 50% 이상이 이 구간에서 결정됩니다. 「Spring이 객체를 관리하는 이유」, 「@Transactional의 동작 원리」, 「JPA 영속성 컨텍스트와 1차 캐시」 같은 질문은 면접관이 「이 사람이 Spring을 사용만 한 게 아니라 이해하고 있는가」를 가르는 결정적 영역입니다. 책 「토비의 스프링」과 김영한의 「자바 ORM 표준 JPA 프로그래밍」이 이 구간의 진짜 교과서입니다.
이 구간 카드 학습지는 두 단계 합쳐서 200~250장이 적정 분량입니다. Spring은 「겉으로 보이는 API + 내부 동작」을 함께 외워야 합니다. @Autowired 한 줄 뒤에 어떤 메커니즘이 돌아가는지 설명할 수 있어야 합격선에 들어갑니다.
Spring 1 · 핵심 구조
Spring Framework 핵심 구조
6단계는 IoC·DI·Bean Lifecycle·AOP·DispatcherServlet 등 Spring의 뼈대 영역입니다. 카드 학습지는 「IoC와 DI의 차이」, 「Bean Scope(singleton·prototype·request·session)」, 「Bean Lifecycle(생성·의존성 주입·초기화·소멸)」, 「@Component vs @Bean」, 「생성자 주입 vs 필드 주입(왜 생성자 주입 권장인가)」, 「AOP 동작 원리(프록시·CGLIB·JDK Dynamic Proxy)」, 「Filter vs Interceptor vs Argument Resolver」, 「DispatcherServlet 요청 처리 흐름」 여덟 묶음으로 구성합니다.
가장 깊게 묻는 질문은 「Spring이 객체를 관리하는 이유」입니다. 단순히 「제어의 역전」이라고 답하면 부족합니다. 카드 뒷면에 「객체 생성·생명주기·의존성 주입을 컨테이너가 담당해 결합도를 낮추고 테스트 가능성을 높임. 싱글톤으로 관리해 메모리 효율도 확보」라고 적어두세요. 생성자 주입을 왜 권장하는가도 단골입니다 — 「불변성 보장·final 사용 가능·순환 참조 컴파일 시점 검출·테스트에서 Mock 주입 쉬움」이 모범 답안입니다.
AOP 프록시 질문은 깊이를 가르는 결정적 카드입니다. Spring AOP는 런타임 프록시 기반으로, 인터페이스가 있으면 JDK Dynamic Proxy, 없으면 CGLIB을 사용합니다. 같은 클래스 내부에서 self-invocation으로 호출하면 프록시를 거치지 않아 @Transactional이 동작하지 않는다는 사실은 거의 매 면접 등장하는 함정 질문입니다. 카드 한 장에 「프록시 외부 호출은 AOP 적용, 내부 호출(this.method())은 미적용」으로 압축해두세요. DispatcherServlet 요청 흐름은 「DispatcherServlet → HandlerMapping → HandlerAdapter → Controller → ViewResolver → View」 순서를 카드로 외우되, 그 사이에 Interceptor가 어디 끼는지(preHandle·postHandle·afterCompletion)도 함께 표시합니다.
[백앤드 CS면접] Spring Framework 핵심 구조
이 단계부터 본격적으로 Spring 내부 구조를 학습한다. DI, IOC, Bean Lifecycle, AOP, Filter/Interceptor, DispatcherServlet, Spring Container 등 Spring 핵심 개념을 이해한다. 특히 “Spring이 객체를 관리하는 이유”, “Bean은 언제 생성되는가”, “AOP는 왜 사용하는가” 같은 질문을 깊이 있게 설명할 수 있도록 구성된다. 단순 사용법이 아니라 Spring이 내부적으로 어떻게 동작하는지 이해하는 것이 핵심이다.
Spring 2 · Boot/JPA
Spring Boot와 JPA 실무 면접
7단계는 실무 백엔드 면접에서 가장 많은 시간이 할당되는 JPA 영역입니다. 카드 학습지는 「영속성 컨텍스트와 1차 캐시」, 「Entity 생명주기(transient·managed·detached·removed)」, 「Dirty Checking 동작 원리」, 「Lazy vs Eager Loading」, 「N+1 문제와 5가지 해결법」, 「Fetch Join vs EntityGraph vs Batch Size」, 「@OneToMany·@ManyToOne 양방향 매핑과 주인」, 「Cascade와 orphanRemoval」, 「OSIV(Open Session In View)」, 「@Transactional propagation 7종」, 「JPQL vs QueryDSL vs Native Query」 열한 묶음으로 구성합니다.
가장 깊게 묻는 질문은 「N+1 문제와 해결법」입니다. 단순히 「Fetch Join 쓰면 됩니다」로 답하면 「그럼 EntityGraph는 언제 쓰나요」, 「Fetch Join에 페이징 적용 가능한가요」 같은 후속 질문이 줄줄이 나옵니다. 카드 뒷면에 다섯 해결법을 적어두세요 — 「(1) Fetch Join: JPQL 명시, 페이징 불가능(컬렉션 페치 시), (2) EntityGraph: 메서드 단위로 LAZY를 EAGER로 동적 전환, (3) BatchSize: IN 절로 묶어 한 번에, (4) @Fetch(SUBSELECT), (5) Projection DTO 직접 조회」. 저는 첫 이직 때 (2)~(5)를 못 답해서 떨어졌고, 이 카드 한 장이 두 번째 이직에서 합격을 만들어줬습니다.
@Transactional propagation도 거의 매 면접 등장합니다. REQUIRED(기본·있으면 참여, 없으면 새로), REQUIRES_NEW(항상 새 트랜잭션·기존은 일시 정지), NESTED(SavePoint), SUPPORTS, NOT_SUPPORTED, MANDATORY, NEVER 7종을 카드로 외우되, 특히 REQUIRES_NEW가 「로그 기록·실패해도 본 흐름은 커밋」 시나리오에서 쓰인다는 점을 카드에 명시하세요. OSIV 질문은 「true면 영속성 컨텍스트가 View까지 살아있어 Lazy Loading 가능, false면 Service에서 강제 fetch 필요. 운영에서는 DB 커넥션 점유 시간 문제로 false 권장」이 모범 답안입니다. Dirty Checking은 1차 캐시의 스냅샷과 비교해 변경된 필드만 UPDATE 쿼리 생성이라는 점까지 한 카드에 묶어두면 깊이가 보입니다.
[백앤드 CS면접] Spring Boot와 JPA 실무 면접
실제 채용 면접에서 가장 자주 등장하는 Spring Boot/JPA 질문들을 집중적으로 학습한다. JPA 영속성 컨텍스트, Dirty Checking, Lazy Loading, OSIV, Fetch Join, Cascade, Entity 설계, Repository 패턴 등을 다룬다. 또한 “왜 JPA를 사용하는가”, “N+1 문제 해결 방법”, “트랜잭션 범위를 어떻게 설계하는가”처럼 실무 중심 질문을 자연스럽게 답변할 수 있도록 훈련한다.
STEP 4
확장·실전 — 트래픽·설계·시뮬레이션 (단계 8~10)
8~10단계는 중견~대기업 백엔드 면접에서 합격선을 가르는 구간입니다. 신입에게는 깊이 묻지 않지만 「캐시는 왜 쓰나요」, 「대규모 트래픽이 몰리면 어떻게 대응하나요」 같은 개념 질문은 빠지지 않습니다. 경력 3년차 이상이면 이 구간의 깊이가 연봉을 가릅니다. 책 「만들면서 배우는 클린 아키텍처」와 「가상 면접 사례로 배우는 대규모 시스템 설계 기초」(알렉스 쉬)가 이 구간의 진짜 교과서입니다.
이 구간 카드 학습지는 세 단계 합쳐서 200~250장이 적정 분량입니다. 10단계 시뮬레이션은 새 카드보다 1~9단계 카드를 실제 면접 흐름으로 회상하는 단계라, 분량 자체는 50장 정도면 충분합니다.
실전 1 · 트래픽/성능
대규모 트래픽과 서버 성능 최적화
8단계는 캐시·비동기·메시지 큐·스케일 전략 영역입니다. 카드 학습지는 「캐시 전략 4종(Look Aside·Write Through·Write Back·Write Around)」, 「Redis 자료구조와 사용 사례」, 「Redis vs Memcached」, 「CDN의 역할」, 「메시지 큐(Kafka·RabbitMQ·SQS) 비교」, 「@Async와 Spring 비동기」, 「커넥션 풀 사이즈 계산법」, 「Scale Up vs Scale Out」, 「로드밸런서(L4 vs L7)」, 「장애 대응 패턴(Circuit Breaker·Retry·Fallback)」 열 묶음으로 구성합니다.
가장 자주 묻는 질문은 「트래픽이 갑자기 10배 늘면 어떻게 대응하시겠어요」입니다. 단순히 「서버 늘립니다」로 답하면 부족합니다. 카드 뒷면에 단계별 답변을 적어두세요 — 「(1) 모니터링으로 병목 위치 확인(WAS·DB·외부 API), (2) 캐시 도입(Redis Look Aside)으로 DB 부하 감소, (3) 수평 확장(Scale Out)과 로드밸런서 추가, (4) 비동기로 동기 작업 분리(메시지 큐), (5) DB 읽기 분리·샤딩, (6) Circuit Breaker로 장애 격리」. 이 6단계를 카드 한 장에 압축하면 후속 질문에도 흔들리지 않습니다.
Redis 사용 사례 질문도 단골입니다. 「세션 저장소·캐시·실시간 랭킹(Sorted Set)·분산 락(SETNX·Redlock)·Pub/Sub·Rate Limit」 6가지를 카드 한 장에 묶어두세요. Kafka vs RabbitMQ는 「Kafka는 로그 기반·대용량·순서 보장(파티션 내)·재처리 강점, RabbitMQ는 라우팅·우선순위·소비자별 큐 강점」이 핵심 차이입니다. 커넥션 풀 사이즈는 HikariCP 권장 공식(connections = ((core_count * 2) + effective_spindle_count))을 카드로 외우되, 「무조건 늘리면 좋은 게 아니라 DB CPU·메모리·네트워크 한계에 닿으면 오히려 느려진다」는 trade-off도 함께 두세요.
[백앤드 CS면접] 대규모 트래픽과 서버 성능 최적화
중급 이상 면접에서는 성능과 아키텍처 질문이 반드시 등장한다. 이 단계에서는 캐시 전략, Redis, CDN, 비동기 처리, 메시지 큐, DB 커넥션 풀, 스케일 업/아웃, 장애 대응, 로그 추적, 모니터링 등을 학습한다. “트래픽이 갑자기 증가하면 어떻게 대응할 것인가”, “캐시를 왜 사용하는가”, “동시 요청이 몰리면 어떤 문제가 생기는가” 같은 실전 질문 대응 능력을 키운다.
실전 2 · 시스템 설계
시스템 설계와 백엔드 아키텍처
9단계는 시스템 디자인 면접 대응 영역입니다. 카드 학습지는 「MSA vs Monolithic 장단점」, 「MSA 통신(REST·gRPC·이벤트)」, 「API Gateway 역할」, 「이벤트 기반 아키텍처와 Saga 패턴」, 「CQRS와 Event Sourcing」, 「분산 트랜잭션과 2PC·Saga」, 「CAP 이론」, 「샤딩 전략(Range·Hash·Geo)」, 「클린 아키텍처와 헥사고날」, 「시스템 디자인 단골 5종(URL 단축·채팅·알림·뉴스피드·로그인)」 열 묶음으로 구성합니다.
대기업·외국계 면접에서 자주 나오는 형태는 「대규모 채팅 시스템을 설계해보세요」 같은 오픈 질문입니다. 30~45분짜리 화이트보드 세션이라 카드만으로는 부족하지만, 카드로 「설계 흐름 템플릿」을 만들어 둘 수 있습니다. 「(1) 요구사항 명확화(사용자 수·동시 접속·메시지 크기), (2) 핵심 API 정의, (3) 데이터 모델, (4) 시스템 다이어그램(클라이언트·LB·WAS·DB·캐시·MQ), (5) 병목 분석과 확장 전략, (6) 장애 대응」의 6단계 흐름을 카드 한 장에 압축하고, 채팅·알림·로그인 각각의 특수 고려사항을 별도 카드 5장으로 분리합니다.
분산 트랜잭션은 MSA 면접 단골입니다. 2PC(2-Phase Commit)는 강한 일관성을 보장하지만 코디네이터 장애 시 블로킹 위험이 있고, Saga 패턴은 보상 트랜잭션(Compensation)으로 최종 일관성을 보장하지만 실패 시나리오 설계가 복잡합니다. 카드 뒷면에 「2PC: 강한 일관성·블로킹·성능 저하 / Saga: 최종 일관성·보상 트랜잭션·MSA 표준」으로 압축해두세요. CAP 이론도 단골인데, 「분산 시스템은 Consistency·Availability·Partition Tolerance 중 둘만 보장 가능」이 정의이고, 실무에서는 「네트워크 분할은 피할 수 없으니 사실상 CP(MongoDB·HBase)냐 AP(Cassandra·DynamoDB)냐의 선택」이 모범 답안입니다.
[백앤드 CS면접] 시스템 설계와 백엔드 아키텍처
이 단계에서는 단순 기능 구현을 넘어 서비스 전체 구조를 설계하는 능력을 학습한다. MSA와 모놀리식 구조 차이, API Gateway, 이벤트 기반 아키텍처, CQRS, 분산 트랜잭션, 서버 확장 전략 등을 다룬다. 또한 “대규모 채팅 시스템 설계”, “로그인 시스템 설계”, “알림 시스템 설계” 같은 시스템 디자인 면접 스타일 문제도 함께 학습한다.
실전 3 · 시뮬레이션
실전 기술면접 시뮬레이션
10단계는 1~9단계 카드를 실제 면접 흐름으로 합치는 마무리 단계입니다. 새 카드를 만들기보다, 「면접관이 30분 동안 던질 가상 질문 흐름」을 자기 입으로 답하는 시뮬레이션을 반복하세요. 저는 친구·동료와 30분씩 짝지어 「너 면접관, 나 지원자」로 두 번씩 돌렸고, 이때 막힌 질문을 다시 카드로 만드는 사이클을 4주간 반복했습니다. 카드 50장 정도가 이 단계에서 추가로 만들어집니다.
꼬리 질문 대응이 이 단계의 핵심입니다. 「왜 그렇게 생각하셨어요」, 「다른 방법은 없었나요」, 「운영에서 문제가 생기면 어떻게 하실 건가요」 같은 후속 질문은 단순 정의 카드로는 답할 수 없습니다. 카드 앞면에 「상황 + 자기 결정 + 왜」를 시나리오 형태로 적고, 뒷면에 30~60초 답변을 적어두세요. 예: 「@Transactional을 Service에 걸까 Repository에 걸까」 → 답: 「Service에 거는 게 일반적. 비즈니스 로직 단위로 묶어야 하나의 트랜잭션이 의미를 가지고, Repository는 단일 쿼리만 책임지므로 트랜잭션 경계로 부적절」.
마지막으로 자기 프로젝트 경험을 1~9단계 개념과 연결하는 카드 10~20장을 따로 만드세요. 「N+1 문제 겪어봤어요?」라는 질문은 신입에게는 개념을 묻지만 경력에게는 자기 경험을 묻습니다. 「제가 운영 중인 서비스에서 게시판 목록 조회 시 댓글 수 표시로 N+1이 발생했고, 처음엔 Fetch Join을 시도했는데 페이징과 충돌해 EntityGraph + BatchSize 조합으로 해결했습니다」 같은 답변이 카드 한 장으로 저장되어 있어야 합니다. 신입이라면 토이 프로젝트나 부트캠프 과제에서라도 비슷한 경험 카드를 3~5장 만들어 두세요. 면접 전날에는 1~10단계 카드 전체를 1~2시간 안에 회수하는 페이스로 마무리합니다.
[백앤드 CS면접] 실전 기술면접 시뮬레이션
실제 면접처럼 질문에 답변하는 훈련을 진행한다. Java, Spring, DB, 네트워크, 운영체제, 아키텍처를 섞어서 종합 질문 형태로 학습하며, 단순 정의가 아니라 자신의 경험과 연결해서 답변하는 연습을 한다. 또한 “왜 그렇게 생각했는가”, “다른 방법은 없었는가” 같은 꼬리 질문 대응 능력까지 함께 강화한다. 실제 면접장에서 긴장해도 핵심을 짧고 명확하게 설명할 수 있는 상태를 만드는 것이 목표다.
이 10단계 백엔드 면접 공부법의 핵심은 「책으로 알아본 것을 자기 언어로 꺼내는 능력으로 바꾸는 것」입니다. 「이펙티브 자바」를 정독하고 「토비의 스프링」을 두 번 읽고 김영한 강의를 다섯 번 돌려도, 면접장에서 「String과 StringBuilder 차이를 메모리 관점으로」 같은 질문에 막히면 합격은 멀어집니다. 카드 회상이 그 간격을 메워주는 가장 효율적인 도구이고, 저는 이 방식으로 3년차 이직 때 5개 회사 합격을 받았습니다.
제 학습 페이스는 4개월 코스였습니다. 1~2단계(Java/JVM)에 3주, 3~5단계(OS/네트워크/DB)에 5주, 6~7단계(Spring/JPA)에 5주, 8~10단계(트래픽/설계/시뮬)에 3주를 배정했고, 평일 출근 전 30분 + 퇴근 후 1시간 + 주말 모의 면접 1회 페이스로 채웠습니다. 신입이라면 6개월 코스로 여유 있게, 4년차 이상이라면 3개월 코스로 8~10단계 비중을 높여 압축 가능합니다. 카드 700장이 적정 분량이지만, 200~300장만 회상 정확도 90%를 만들어도 신입 합격선에는 충분히 들어갑니다.
백엔드 면접에 합격하면 그 다음은 입사 후 6개월의 적응기가 진짜 시작입니다. 면접에서 답한 「N+1 해결법」이 실제 운영 코드에서 작동하는지, 「Redis 캐시」가 실제 트래픽에 어떻게 반응하는지를 자기 코드로 검증하는 단계가 옵니다. 카데미에 만들어 둔 카드 700장은 이 적응기에서도 그대로 작동합니다. 신입 시절 만들어 둔 「@Transactional 전파 속성」 카드를 2년 뒤 코드 리뷰에서 다시 펼쳐 보는 식으로요.
이미 만든 학습지 외에도 카데미 공개 학습지 탐색에서 다른 백엔드 개발자가 만든 면접 카드를 살펴보면 새로운 카드 아이디어를 얻을 수 있습니다. 플래시카드 학습이 처음이라면 플래시카드 학습법 가이드를 먼저 읽어보세요. 능동 회상과 간격 반복이 왜 면접 질문 같은 종합 회상에 가장 잘 맞는지 정리되어 있습니다. 다른 직무·자격증 로드맵이 궁금하다면 로드맵 목록에서 추가 가이드를 확인할 수 있습니다.
FAQ
자주 묻는 질문
Q. 신입 백엔드 개발자도 이 10단계가 모두 필요한가요?
신입 면접은 1~7단계만 안정시켜도 합격선에 충분히 들어갑니다.\n\n8~9단계 대규모 트래픽과 시스템 설계는 신입에게 깊이 묻지 않지만 「캐시는 왜 쓰나요」, 「MSA가 뭔가요」 정도의 기초 질문은 자주 등장합니다. 저는 신입 첫 면접 때 시스템 설계 질문에서 막혀 떨어진 경험이 있어, 신입이라도 8~9단계는 개념 수준만이라도 카드로 만들어 두라고 권합니다.\n\n10단계 실전 시뮬레이션은 신입·경력 모두 반드시 거쳐야 하는 단계입니다. 카드 200~300장 회상 정확도 90%면 신입 합격선에는 충분합니다.
Q. Java 공부는 책·강의·카드 중 어디부터 시작해야 하나요?
처음 Java를 배우는 단계라면 인프런 김영한의 「스프링 입문」, 「자바 ORM 표준 JPA 프로그래밍」으로 흐름을 잡는 게 효율적입니다.\n\n책으로는 「이펙티브 자바」(조슈아 블로크)가 면접 단골 질문의 출처라 한 번은 정독을 권합니다. 「토비의 스프링」은 1·3·6장 세 챕터만 정독하고 나머지는 사전처럼 펼쳐 카드 만들 때 참고하세요.\n\n다만 책과 강의는 「알아본다」 수준까지만 데려가 주고, 면접장에서 「자기 말로 30초 안에 설명」하려면 카드 회상이 필요합니다. 저는 강의로 흐름 → 책으로 정확도 → 카드로 회상의 3단계로 갔습니다.
Q. Spring 깊이 있는 학습과 시스템 설계 중 어디부터 해야 하나요?
신입~2년차라면 Spring 깊이가 우선입니다. 면접의 70%는 Spring/JPA 동작 원리에서 결정되고, 시스템 설계는 경력 3년차 이상에서 본격화됩니다.\n\n저도 2년차 이직 때 시스템 설계는 「캐시·MSA·이벤트」 개념 수준만 답했고, Spring/JPA 깊이로 합격을 받았습니다. 「토비의 스프링」 1·3·6장과 김영한 JPA 강의 두 개가 이 시기의 진짜 교과서입니다.\n\n3년차 이상이라면 시스템 설계 비중을 30~40% 정도까지 끌어올리세요. 「가상 면접 사례로 배우는 대규모 시스템 설계 기초」(알렉스 쉬) 1권의 5개 챕터(URL 단축·뉴스피드·채팅·알림·검색 자동완성)가 좋은 시작점입니다.
Q. 3개월·6개월 일정은 어떻게 짜야 하나요?
3개월 일정이라면 1~2주: 1~2단계(Java/JVM), 3~5주: 3~5단계(OS/네트워크/DB), 6~9주: 6~7단계(Spring/JPA), 10~12주: 8~10단계(트래픽/설계/시뮬)로 분배합니다.\n\n6개월이라면 각 단계에 2~3주씩 여유를 두고 카드 회상 사이클을 두 번씩 돌리세요. 1회독은 카드 작성, 2회독은 정확도 90% 만들기, 3회독(마지막 2주)은 전체 회수 페이스로 갑니다.\n\n저는 3년차 이직 준비 때 4개월 코스로 갔고, 평일 출근 전 30분 + 퇴근 후 1시간 + 주말 모의 면접 1회 페이스로 5개 회사 합격을 받았습니다. 핵심은 매일 카드 50~100장 회상을 빠뜨리지 않는 것입니다.
Q. 신입 면접 준비와 이직 준비는 무엇이 다른가요?
신입은 「CS 기본기 + Spring 동작 원리」의 정확도가 핵심입니다. 자기 프로젝트 경험이 부족하니 책·강의에서 본 개념을 자기 말로 풀어내는 능력이 합격을 가릅니다.\n\n반면 이직은 「자기 경험과 CS 개념의 연결」이 핵심입니다. 「N+1 문제 겪어보셨어요?」라는 질문에 신입은 개념을 설명하면 되지만, 경력은 「실제 운영 중에 어떻게 발견하고 어떻게 해결했는지」를 자기 코드와 함께 설명해야 합니다.\n\n10단계 시뮬레이션이 이 차이를 메워주는 단계입니다. 신입이라면 토이 프로젝트나 부트캠프 과제에서라도 「상황 + 결정 + 왜」 시나리오 카드를 5~10장 만들어 두세요. 경력이라면 운영 중 발생한 장애·튜닝 경험 카드 10~20장이 합격을 만들어줍니다.
다음 단계
카데미로 백엔드 면접 준비 시작하기
10단계 카드 학습으로 Java·JVM부터 Spring·JPA·시스템 설계까지, 어떤 회사 어떤 면접에서도 자기 언어로 답할 수 있는 상태를 만들어보세요. 만들어 둔 카드는 카데미에 평생 보관됩니다.
카데미 시작하기