12월 21, 2025
16 분 읽기

Java 백엔드 개발자 면접 질문: Spring Boot, JPA, API

interview
career-advice
job-search
Java 백엔드 개발자 면접 질문: Spring Boot, JPA, API
Milad Bonakdar

Milad Bonakdar

작성자

Spring Boot, REST API, 마이크로서비스, JPA/Hibernate, 보안, 테스트, 아키텍처 판단을 실무형 질문으로 준비하세요.


소개

Java 백엔드 면접은 프레임워크 이름을 외웠는지보다 안정적인 API를 만들고 운영할 수 있는지를 봅니다. Spring Boot, REST 설계, 영속성, 트랜잭션, 테스트, 보안, 관측성, 마이크로서비스 아키텍처의 선택 기준을 자주 묻습니다.

이 가이드는 개념을 실무 답변으로 연결하도록 돕습니다. 기능이 무엇을 하는지, 언제 쓰는지, 어떤 문제가 생길 수 있는지, 어떻게 테스트하거나 디버깅할지까지 준비하세요. 2026년 기준으로 Java 17+ 환경, Java 21/25 논의, Spring Boot 3/4 프로젝트, OAuth2/JWT 기반 API 보안도 익숙해야 합니다.

이 가이드 활용법

  • 쉬운 Spring Boot와 Java 기본기부터 시작한 뒤, 중간 및 어려운 질문은 소리 내어 연습합니다.
  • 각 답변에 이력서나 포트폴리오의 실제 프로젝트 예시를 하나씩 붙입니다.
  • 선택지가 갈리는 질문에서는 기본으로 고를 방식과 바꿀 신호를 함께 설명합니다.
  • 이력서에 마이크로서비스, JPA, Kafka, Docker, 클라우드 배포를 적었다면 구체적인 장애 대응이나 디버깅 사례를 준비합니다.

Spring Boot 핵심 개념

1. Spring Boot는 무엇이며, 기존 Spring Framework와 어떻게 다른가요?

답변:

  • Spring Framework: 엔터프라이즈 Java 개발을 위한 포괄적인 프레임워크입니다. 설정하려면 상당한 수동 구성(XML 또는 Java 기반)이 필요합니다.
  • Spring Boot: 새로운 Spring 애플리케이션의 설정 및 개발을 간소화하는 Spring Framework의 확장입니다.
    • 자동 구성(Auto-Configuration): 클래스 경로 의존성을 기반으로 Bean을 자동으로 구성합니다.
    • 내장 서버(Embedded Servers): Tomcat, Jetty 또는 Undertow를 포함하므로 WAR 파일을 배포할 필요가 없습니다.
    • 스타터(Starters): 빌드 구성을 단순화하기 위해 선별된 의존성 모음입니다.
    • 규칙에 따른 기본값(Opinionated Defaults): "설정보다 규칙" 접근 방식입니다.

희소성: 일반적 난이도: 쉬움


2. @SpringBootApplication 어노테이션에 대해 설명해주세요.

답변: 이 어노테이션은 세 가지 다른 어노테이션을 결합한 편리한 어노테이션입니다.

  1. @Configuration: 해당 클래스를 Bean 정의의 소스로 표시합니다.
  2. @EnableAutoConfiguration: Spring Boot에게 클래스 경로 설정, 기타 Bean 및 다양한 속성 설정을 기반으로 Bean을 추가하기 시작하도록 지시합니다.
  3. @ComponentScan: Spring에게 현재 패키지 및 하위 패키지에서 다른 컴포넌트, 구성 및 서비스를 찾도록 지시합니다.

희소성: 일반적 난이도: 쉬움


3. 의존성 주입(DI)과 제어 역전(IoC)은 무엇인가요?

답변:

  • IoC: 객체 생성 및 관리 제어가 프로그래머에서 컨테이너(Spring IoC 컨테이너)로 이전되는 원칙입니다.
  • DI: IoC를 구현하는 데 사용되는 디자인 패턴입니다. 객체가 자체 의존성을 생성하는 대신 생성자, Setter 또는 필드를 통해 의존성이 "주입"됩니다.
  • 장점: 결합도 감소, 더 쉬운 테스팅(의존성 모의 객체 사용), 더 나은 유지보수성.

희소성: 매우 일반적 난이도: 중간


4. Spring Boot 스타터는 무엇인가요? 예를 들어주세요.

답변: 스타터는 애플리케이션에 포함할 수 있는 편리한 의존성 설명자 세트입니다. 프로젝트를 일관되고 지원되는 관리되는 전이적 의존성 세트로 빠르게 시작하고 실행하는 데 필요한 모든 의존성을 포함합니다.

  • 예시:
    • spring-boot-starter-web: 웹 애플리케이션 구축용 (Tomcat 및 Spring MVC 포함).
    • spring-boot-starter-data-jpa: Hibernate와 함께 Spring Data JPA 사용용.
    • spring-boot-starter-test: 테스팅용 (JUnit, Mockito 포함).
    • spring-boot-starter-security: Spring Security용.

희소성: 일반적 난이도: 쉬움


5. Spring Actuator는 무엇인가요?

답변: Spring Boot Actuator는 애플리케이션을 모니터링하고 관리하는 데 도움이 되는 프로덕션 지원 기능을 제공합니다.

  • 엔드포인트: /health(앱 상태), /metrics(메모리, CPU 사용량), /info(앱 정보), /env(환경 속성)와 같은 엔드포인트를 노출합니다.
  • 용도: 운영팀이 프로덕션 환경에서 마이크로서비스의 상태를 확인하는 데 매우 중요합니다.

희소성: 일반적 난이도: 중간


마이크로서비스 및 아키텍처

6. 모놀리식 아키텍처에 비해 마이크로서비스의 장점은 무엇인가요?

답변:

  • 확장성: 개별 서비스는 수요에 따라 독립적으로 확장될 수 있습니다.
  • 기술 독립성: 서로 다른 서비스는 작업에 가장 적합한 서로 다른 기술(Java, Go, Python)을 사용할 수 있습니다.
  • 결함 격리: 한 서비스의 실패가 전체 시스템을 중단시키지 않습니다.
  • 독립적인 배포: 팀은 서비스를 독립적으로 배포하여 더 빠른 릴리스 주기(CI/CD)를 가능하게 합니다.

희소성: 일반적 난이도: 중간


7. API 게이트웨이는 무엇인가요? 왜 사용해야 하나요?

답변: API 게이트웨이는 시스템에 대한 단일 진입점 역할을 하는 서버입니다. 클라이언트로부터 모든 API 호출을 받은 다음 해당 마이크로서비스로 라우팅합니다.

  • 기능: 요청 라우팅, 구성 및 프로토콜 변환.
  • 공통 관심사: 인증, SSL 종료, 속도 제한, 캐싱, 로깅.
  • 예시: Spring Cloud Gateway, Netflix Zuul, Kong.

희소성: 매우 일반적 난이도: 중간


8. 서비스 디스커버리(Eureka)에 대해 설명해주세요.

답변: 마이크로서비스 환경에서 서비스 인스턴스는 동적 IP 주소를 갖습니다. 서비스 디스커버리는 서비스가 서로를 찾기 위한 메커니즘입니다.

  • Eureka 서버: 서비스 레지스트리 역할을 합니다.
  • Eureka 클라이언트: 마이크로서비스는 시작 시 Eureka 서버에 자체 등록하고 하트비트를 보냅니다.
  • 디스커버리: 서비스 A가 서비스 B를 호출해야 할 때 Eureka에 서비스 B의 주소를 요청합니다.

희소성: 일반적 난이도: 중간


9. 서킷 브레이커 패턴은 무엇인가요?

답변: 서킷 브레이커 패턴은 애플리케이션이 실패할 가능성이 높은 작업을 반복적으로 실행하려고 시도하는 것을 방지합니다(예: 다운된 서비스 호출).

  • 상태:
    • 닫힘(Closed): 요청이 정상적으로 흐릅니다.
    • 열림(Open): 실패한 서비스가 복구될 수 있도록 요청이 즉시 차단됩니다(빠른 실패).
    • 반열림(Half-Open): 서비스가 복구되었는지 테스트하기 위해 제한된 수의 요청만 허용됩니다.
  • 도구: Resilience4j (권장), Hystrix (더 이상 사용되지 않음).

희소성: 매우 일반적 난이도: 어려움


데이터베이스 및 JPA

10. JPA와 Hibernate는 무엇인가요?

답변:

  • JPA (Java Persistence API): Java 객체와 관계형 데이터베이스 간의 데이터 액세스, 지속성 및 관리를 위한 사양입니다. 인터페이스일 뿐입니다.
  • Hibernate: JPA 사양의 가장 인기 있는 구현입니다. ORM (Object-Relational Mapping) 도구입니다.

희소성: 일반적 난이도: 쉬움


11. Hibernate에서 N+1 Select 문제에 대해 설명해주세요.

답변: N+1 문제는 데이터 액세스 프레임워크가 기본 SQL 쿼리를 실행할 때 검색할 수 있었던 동일한 데이터를 가져오기 위해 N개의 추가 SQL 문을 실행할 때 발생합니다.

  • 시나리오: Author 목록 가져오기(1개의 쿼리). 반복하고 author.getBooks()에 액세스(각 작성자당 1개의 쿼리, N개의 쿼리).
  • 해결 방법: JPQL에서 Join Fetch 사용 (SELECT a FROM Author a JOIN FETCH a.books) 또는 엔티티 그래프를 사용하여 관련 엔티티를 단일 쿼리에서 즉시 로드합니다.

희소성: 매우 일반적 난이도: 중간


12. @Entity, @Table@Column의 차이점은 무엇인가요?

답변:

  • @Entity: 클래스가 엔티티이고 데이터베이스 테이블에 매핑됨을 지정합니다.
  • @Table: 선택 사항입니다. 매핑에 사용할 데이터베이스 테이블의 이름을 지정합니다. 생략하면 클래스 이름이 사용됩니다.
  • @Column: 선택 사항입니다. 필드 또는 속성이 매핑될 열의 세부 정보를 지정합니다. 생략하면 필드 이름이 사용됩니다.

희소성: 일반적 난이도: 쉬움


보안 및 테스팅

13. Spring Boot 애플리케이션을 어떻게 보호하나요?

답변: 기본은 Spring Security이고, 애플리케이션 유형에 맞는 보안 모델을 설명해야 합니다. 좋은 답변은 인증, 권한 부여, 토큰 검증, 운영상 보호 장치를 분리해서 말합니다.

  • 인증(Authentication): OAuth2/OIDC, 세션 로그인, 서비스 간 자격 증명 등으로 API 호출자가 누구인지 확인합니다.
  • 권한 부여(Authorization): 역할, scope, @PreAuthorize 같은 메서드 보안, SecurityFilterChain 규칙으로 허용된 작업을 제한합니다.
  • JWT/OAuth2 리소스 서버: 상태 비저장 API에서는 토큰 내용을 그대로 믿지 말고 bearer token의 issuer, 만료, 서명, scope를 검증합니다.
  • API 하드닝: HTTPS, 명확한 CORS 설정, 브라우저 세션의 CSRF 보호, 안전한 에러 응답, rate limit, 민감 작업 감사 로그를 적용합니다.

희소성: 일반적 난이도: 중간


14. Mockito에서 @Mock@InjectMocks의 차이점은 무엇인가요?

답변:

  • @Mock: 클래스/인터페이스의 모의 객체를 생성합니다. 실제 동작은 없으며 when(...).thenReturn(...)을 사용하여 동작을 정의합니다.
  • @InjectMocks: 클래스의 인스턴스를 생성하고 @Mock (또는 @Spy) 어노테이션으로 생성된 모의 객체를 이 인스턴스에 주입합니다. 테스트 중인 클래스에 사용됩니다.

희소성: 일반적 난이도: 중간


15. Spring Boot에서 트랜잭션을 어떻게 처리하나요?

답변: @Transactional 어노테이션을 사용합니다.

  • 메커니즘: Spring은 클래스/메서드 주위에 프록시를 만듭니다. 메서드 실행 전에 트랜잭션을 시작하고 메서드가 반환된 후 커밋합니다. RuntimeException이 발생하면 트랜잭션을 롤백합니다.
  • 전파(Propagation): 트랜잭션이 기존 트랜잭션과 관련되는 방식을 구성할 수 있습니다 (예: REQUIRED, REQUIRES_NEW).

희소성: 일반적 난이도: 중간


고급 주제

16. Spring Cloud Config는 무엇인가요?

답변: Spring Cloud Config는 분산 시스템에서 외부화된 구성에 대한 서버 측 및 클라이언트 측 지원을 제공합니다.

  • Config 서버: 모든 환경에서 애플리케이션에 대한 외부 속성을 관리하는 중앙 위치입니다. Git, SVN 또는 Vault로 지원할 수 있습니다.
  • 장점: 애플리케이션을 재배포하지 않고도 구성을 변경할 수 있습니다 (@RefreshScope 사용).

희소성: 흔하지 않음 난이도: 중간


17. Spring Bean에서 SingletonPrototype 스코프의 차이점을 설명해주세요.

답변:

  • Singleton (기본값): Spring IoC 컨테이너당 Bean의 인스턴스가 하나만 생성됩니다. 캐시되어 재사용됩니다.
  • Prototype: Bean이 요청될 때마다 새 인스턴스가 생성됩니다.
  • 기타: Request, Session (웹 인식 스코프).

희소성: 일반적 난이도: 쉬움


18. Java에서 Checked 예외와 Unchecked 예외의 차이점은 무엇인가요?

답변:

  • Checked 예외: Exception에서 상속받습니다 (RuntimeException 제외). 컴파일러는 예외를 처리(try-catch)하거나 선언(throws)하도록 강제합니다. 예시: IOException, SQLException. 복구 가능한 조건을 나타냅니다.
  • Unchecked 예외: RuntimeException에서 상속받습니다. 컴파일러는 예외를 처리하도록 강제하지 않습니다. 예시: NullPointerException, IllegalArgumentException. 프로그래밍 오류를 나타냅니다. Spring의 @Transactional은 기본적으로 unchecked 예외에 대해서만 롤백합니다.

희소성: 일반적 난이도: 쉬움


19. Java에서 가비지 컬렉션은 어떻게 작동하나요?

답변: 가비지 컬렉션(GC)은 더 이상 도달할 수 없는 객체가 차지하는 메모리를 자동으로 회수하는 프로세스입니다.

  • 세대별 가설: 대부분의 객체는 빨리 사라집니다.
  • 힙 구조: Young Generation (Eden, Survivor 공간) 및 Old Generation.
  • Minor GC: Young Gen을 정리합니다. 빠릅니다.
  • Major/Full GC: Old Gen을 정리합니다. 느리고 "Stop-the-world" 일시 중지를 유발할 수 있습니다.
  • 알고리즘: G1GC (최신 Java의 기본값), ZGC, Shenandoah (낮은 지연 시간).

희소성: 일반적 난이도: 어려움


20. Java 스트림은 무엇인가요?

답변: Java 8에 도입된 스트림은 객체 컬렉션을 처리하는 기능적 접근 방식을 제공합니다.

  • 기능: 선언적, 파이프라이닝, 내부 반복.
  • 작업:
    • 중간(Intermediate): filter, map, sorted (지연).
    • 종료(Terminal): collect, forEach, reduce (처리를 트리거).
  • 병렬 스트림(Parallel Streams): 여러 스레드를 사용하여 데이터를 병렬로 처리할 수 있습니다 (.parallelStream()).

희소성: 일반적 난이도: 중간

Newsletter subscription

실제로 효과가 있는 주간 커리어 팁

최신 인사이트를 받은 편지함으로 직접 받아보세요

채용 담당자에게 눈에 띄고 꿈의 직장을 얻으세요

ATS를 통과하고 채용 담당자에게 깊은 인상을 주는 AI 기반 이력서로 커리어를 변화시킨 수천 명의 사람들과 함께하세요.

지금 만들기 시작

이 게시물 공유

75% ATS 거부율을 극복하세요

4개 중 3개의 이력서는 사람의 눈에 닿지 않습니다. 우리의 키워드 최적화는 통과율을 최대 80%까지 높여 채용 담당자가 실제로 당신의 잠재력을 볼 수 있도록 합니다.