Java 면접 질문 모음
한눈에 보기
언어 기초와 OOP, JVM과 메모리, 컬렉션, 동시성, Java 8 이후 기능, Spring 연계까지 Java 개발자 면접 단골 질문 60여 개를 영역별로 정리하고 꼬리 질문 대비 요령을 담았다.
최종 업데이트 2026.09.17
Java 개발자 면접에서 반복적으로 출제되는 질문을 언어 기초부터 스프링(Spring) 연계 기초까지 여섯 개 영역으로 정리한 문서다. Java 직군 면접은 문법 지식보다 JVM 동작 원리, 컬렉션 내부 구현, 동시성 문제 해결 경험처럼 "왜 그렇게 동작하는가"를 파고드는 경향이 강하다. 각 질문에 대해 정의를 한 문장으로 말한 뒤 내부 동작과 실무 주의점까지 이어서 답하는 연습을 권한다.
언어 기초와 OOP
기초 영역이지만 equals와 hashCode의 계약, 불변 객체 설계처럼 실무 코드 품질과 직결된 질문이 많이 나온다.
- Java가 플랫폼 독립적이라고 하는 이유를 컴파일과 실행 과정과 함께 설명해 주세요.
- 기본 타입(Primitive Type)과 참조 타입(Reference Type)의 차이는 무엇인가요?
- 오토박싱(Autoboxing)과 언박싱이 무엇이고, 어떤 성능 문제를 일으킬 수 있나요?
- equals와 hashCode를 함께 재정의해야 하는 이유를 설명해 주세요.
- String이 불변(Immutable)으로 설계된 이유는 무엇인가요?
- String, StringBuilder, StringBuffer의 차이와 각각의 사용 시점을 설명해 주세요.
- 오버로딩(Overloading)과 오버라이딩(Overriding)의 차이는 무엇인가요?
- 추상 클래스(Abstract Class)와 인터페이스(Interface)의 차이와 선택 기준을 설명해 주세요.
- 접근 제어자 네 가지의 범위를 설명해 주세요.
- static 키워드의 의미와, static 멤버를 남용하면 안 되는 이유를 설명해 주세요.
- final 키워드를 변수, 메서드, 클래스에 붙였을 때 각각 어떤 의미인가요?
- 불변 객체를 만드는 방법과 불변 객체의 장점을 설명해 주세요.
JVM과 메모리
JVM(Java Virtual Machine) 영역은 Java 면접의 핵심 관문이다. 가비지 컬렉션 질문은 세대별 구조, GC 알고리즘 종류, 튜닝 경험 순으로 깊어진다.
- JVM의 구조(클래스 로더, 런타임 데이터 영역, 실행 엔진)를 설명해 주세요.
- JDK, JRE, JVM의 차이는 무엇인가요?
- 힙(Heap)과 스택(Stack) 영역에는 각각 무엇이 저장되나요?
- 가비지 컬렉션(Garbage Collection)의 동작 원리를 설명해 주세요.
- 힙이 Young 영역과 Old 영역으로 나뉘어 있는 이유는 무엇인가요?
- Minor GC와 Major GC(Full GC)의 차이와, Full GC가 성능 문제를 일으키는 이유를 설명해 주세요.
- G1 GC는 기존 GC와 어떤 점이 다른가요?
- Stop-the-World란 무엇이고, 왜 줄여야 하나요?
- 클래스 로딩 과정(로딩, 링킹, 초기화)을 설명해 주세요.
- JIT(Just-In-Time) 컴파일러의 역할을 설명해 주세요.
- OutOfMemoryError가 발생했을 때 어떻게 원인을 분석하시겠어요?
- 강한 참조 외에 Soft, Weak 참조는 언제 사용하나요?
컬렉션과 제네릭
컬렉션 영역에서는 HashMap의 내부 구현이 단골 질문이다. Java 8에서 트리로 전환되는 최적화까지 답하면 좋은 평가를 받는다.
- ArrayList와 LinkedList의 내부 구조 차이와 연산별 성능을 비교해 주세요.
- HashMap의 내부 동작 원리를 설명해 주세요.
- HashMap에서 해시 충돌이 발생하면 어떻게 처리되나요? Java 8에서 바뀐 점도 함께 설명해 주세요.
- HashMap과 HashTable, ConcurrentHashMap의 차이는 무엇인가요?
- HashSet은 내부적으로 어떻게 중복을 걸러내나요?
- TreeMap은 어떤 자료구조로 구현되어 있고, HashMap과 언제 다르게 선택하나요?
- Comparable과 Comparator의 차이를 설명해 주세요.
- Iterator 순회 중 컬렉션을 수정하면 왜 ConcurrentModificationException이 발생하나요?
- 제네릭(Generics)을 사용하는 이유는 무엇인가요?
- 제네릭의 타입 소거(Type Erasure)란 무엇이고, 어떤 제약을 만드나요?
- 와일드카드에서 extends와 super의 차이를 설명해 주세요.
동시성
동시성 영역은 백엔드 직군에서 특히 깊게 파고든다. synchronized로 시작해서 락 프리 기법과 스레드 풀 설정 근거까지 이어지는 흐름을 대비하자.
- Java에서 스레드를 생성하는 방법에는 어떤 것들이 있나요?
- 스레드의 생명주기(상태 전이)를 설명해 주세요.
- synchronized 키워드의 동작 방식과 메서드, 블록 단위 적용의 차이를 설명해 주세요.
- volatile 키워드는 무엇을 보장하고, 무엇을 보장하지 못하나요?
- 가시성(Visibility) 문제와 원자성(Atomicity) 문제의 차이를 설명해 주세요.
- AtomicInteger 같은 Atomic 클래스는 락 없이 어떻게 스레드 안전을 보장하나요? CAS(Compare-And-Swap)와 함께 설명해 주세요.
- synchronized와 ReentrantLock의 차이는 무엇인가요?
- 데드락(Deadlock)이 발생하는 코드 예시를 들고, 예방하는 방법을 설명해 주세요.
- 스레드 풀(Thread Pool)을 사용하는 이유와 ExecutorService의 주요 설정 값을 설명해 주세요.
- Callable과 Runnable의 차이, 그리고 Future의 역할을 설명해 주세요.
- ThreadLocal은 어떤 상황에서 사용하고, 스레드 풀 환경에서 왜 주의해야 하나요?
Java 8 이후 기능
람다와 스트림은 실무 코드에서 매일 쓰이는 만큼, 문법보다 지연 평가와 병렬 스트림의 함정 같은 동작 원리를 묻는 경우가 많다.
- 람다 표현식(Lambda Expression)과 함수형 인터페이스(Functional Interface)의 관계를 설명해 주세요.
- 스트림(Stream) API의 특징과 컬렉션 순회와의 차이를 설명해 주세요.
- 스트림의 중간 연산과 최종 연산의 차이, 그리고 지연 평가(Lazy Evaluation)를 설명해 주세요.
- 병렬 스트림(Parallel Stream)을 쓰면 항상 빨라지나요? 주의할 점은 무엇인가요?
- Optional의 용도와 잘못된 사용 예를 들어 주세요.
- 인터페이스의 default 메서드는 왜 도입되었나요?
- 메서드 참조(Method Reference)의 종류를 설명해 주세요.
- Java 8의 날짜 API(java.time)가 기존 Date, Calendar의 어떤 문제를 해결했나요?
- CompletableFuture는 Future와 비교해서 어떤 점이 개선되었나요?
- 레코드(Record)는 어떤 문제를 해결하기 위해 도입되었나요?
- Java 21의 가상 스레드(Virtual Thread)는 기존 플랫폼 스레드와 어떻게 다른가요?
Spring 연계 기초
신입 면접에서 Spring은 프레임워크 사용법보다 IoC, AOP 같은 핵심 개념을 Java 언어 지식과 연결해서 설명할 수 있는지를 본다.
- 제어의 역전(IoC)과 의존성 주입(Dependency Injection)이란 무엇인가요?
- 의존성 주입 방식 세 가지(생성자, 세터, 필드) 중 생성자 주입이 권장되는 이유는 무엇인가요?
- 스프링 빈(Bean)의 생명주기를 설명해 주세요.
- 빈의 기본 스코프가 싱글턴인데, 싱글턴 빈에 상태를 두면 왜 위험한가요?
- AOP(Aspect-Oriented Programming)란 무엇이고, 스프링에서는 어떻게 구현되나요?
- 스프링의 프록시 기반 AOP에서 같은 클래스 내부 메서드 호출에 어드바이스가 적용되지 않는 이유를 설명해 주세요.
- @Transactional 어노테이션의 동작 원리를 설명해 주세요.
- @Component, @Service, @Repository, @Controller의 차이는 무엇인가요?
- 스프링 MVC에서 요청이 처리되는 과정을 DispatcherServlet 중심으로 설명해 주세요.
- 스프링 부트(Spring Boot)가 기존 스프링과 비교해 무엇을 편하게 해 주나요?
- JPA에서 영속성 컨텍스트(Persistence Context)의 역할을 설명해 주세요.
- JPA의 N+1 문제란 무엇이고 어떻게 해결하나요?
답변 연습 팁
Java 면접은 한 주제를 깊게 파고드는 꼬리 질문이 특징이므로 다음과 같이 대비하면 좋다.
- HashMap, GC, synchronized 세 주제는 어디까지 파고들어도 답할 수 있게 내부 구현 수준까지 정리해 둔다.
- "Java 8 이후 무엇이 달라졌나요"라는 질문에 버전별 대표 기능 한두 개씩을 바로 말할 수 있게 준비한다.
- 프로젝트에서 동시성 문제나 성능 문제를 겪고 해결한 사례가 있다면 해당 질문의 답변에 붙여 말한다. 이론과 경험이 연결된 답변이 가장 강하다.
면접 질문 모음에서 같이 읽기
면접 질문 모음 문서 전체 보기이 개념, 내 코드에서는 어떻게 물어볼까요
데브핏(DevFit)에 채용공고 URL을 붙여 넣고 레포지토리를 연결하면, 내가 쓴 커밋에서 예상 질문과 어필 포인트를 만듭니다. 하루 10회까지 무료입니다. 합불 판정이나 지원자 랭킹은 만들지 않고, 최종 판단은 사람이 합니다.
공고 넣고 시작하기