카테고리: 프레임워크 ← 면접 질문 목록으로 돌아가기
JVM이 정확히 무엇이고, 어떤 기능을 하는지 설명해 주세요.
그럼, 자바 말고 다른 언어는 JVM 위에 올릴 수 없나요?
반대로 JVM 계열 언어를 일반적으로 컴파일해서 사용할 순 없나요?
VM을 사용함으로써 얻을 수 있는 장점과 단점에 대해 설명해 주세요.
JVM과 내부에서 실행되고 있는 프로그램은 부모 프로세스 - 자식 프로세스 관계를 갖고 있다고 봐도 무방한가요?
final 키워드를 사용하면, 어떤 이점이 있나요?
그렇다면 컴파일 과정에서, final 키워드는 다르게 취급되나요?
인터페이스와 추상 클래스의 차이에 대해 설명해 주세요.
왜 클래스는 단일 상속만 가능한데, 인터페이스는 2개 이상 구현이 가능할까요?
리플렉션에 대해 설명해 주세요.
의미만 들어보면 리플렉션은 보안적인 문제가 있을 가능성이 있어보이는데, 실제로 그렇게 생각하시나요? 만약 그렇다면, 어떻게 방지할 수 있을까요?
리플렉션을 언제 활용할 수 있을까요?
static class와 static method를 비교해 주세요.
static 을 사용하면 어떤 이점을 얻을 수 있나요? 어떤 제약이 걸릴까요?
컴파일 과정에서 static 이 어떻게 처리되는지 설명해 주세요.
Java의 Exception에 대해 설명해 주세요.
예외처리를 하는 세 방법에 대해 설명해 주세요.
CheckedException, UncheckedException 의 차이에 대해 설명해 주세요.
예외처리가 성능에 큰 영향을 미치나요? 만약 그렇다면, 어떻게 하면 부하를 줄일 수 있을까요?
Synchronized 키워드에 대해 설명해 주세요.
Synchronized 키워드가 어디에 붙는지에 따라 의미가 약간씩 변화하는데, 각각 어떤 의미를 갖게 되는지 설명해 주세요.
효율적인 코드 작성 측면에서, Synchronized는 좋은 키워드일까요?
Synchronized 를 대체할 수 있는 자바의 다른 동기화 기법에 대해 설명해 주세요.
Thread Local에 대해 설명해 주세요.
Java Stream에 대해 설명해 주세요.
Stream과 for ~ loop의 성능 차이를 비교해 주세요,
Stream은 병렬처리 할 수 있나요?
Stream에서 사용할 수 있는 함수형 인터페이스에 대해 설명해 주세요.
가끔 외부 변수를 사용할 때, final 키워드를 붙여서 사용하는데 왜 그럴까요? 꼭 그래야 할까요?
Java의 GC에 대해 설명해 주세요.
finalize() 를 수동으로 호출하는 것은 왜 문제가 될 수 있을까요?
어떤 변수의 값이 null이 되었다면, 이 값은 GC가 될 가능성이 있을까요?
equals()와 hashcode()에 대해 설명해 주세요.
본인이 hashcode() 를 정의해야 한다면, 어떤 점을 염두에 두고 구현할 것 같으세요?
그렇다면 equals() 를 재정의 해야 할 때, 어떤 점을 염두에 두어야 하는지 설명해 주세요.
IoC와 DI에 대해 설명해 주세요.
후보 없이 특정 기능을 하는 클래스가 딱 한 개하면, 구체 클래스를 그냥 사용해도 되지 않나요? 그럼에도 불구하고 왜 Spring에선 Bean을 사용 할까요?
Spring의 Bean 생성 주기에 대해 설명해 주세요.
프로토타입 빈은 무엇인가요?
AOP에 대해 설명해 주세요.
@Aspect는 어떻게 동작하나요?
Spring 에서 Interceptor와 Servlet Filter에 대해 설명해 주세요.
설명만 들어보면 인터셉터만 쓰는게 나아보이는데, 아닌가요? 필터는 어떤 상황에 사용 해야 하나요?
DispatcherServlet 의 역할에 대해 설명해 주세요.
요청이 들어온다고 가정할 때, DispatcherServlet은 한번에 여러 요청을 모두 받을 수 있나요?
@Controller 를 DispatcherServlet은 어떻게 구분 할까요?
JPA와 같은 ORM을 사용하는 이유가 무엇인가요?
영속성은 어떤 기능을 하나요? 이게 진짜 성능 향상에 큰 도움이 되나요?
N + 1 문제에 대해 설명해 주세요.
@Transactional 은 어떤 기능을 하나요?
@Transactional(readonly=true) 는 어떤 기능인가요? 이게 도움이 되나요?
그런데, 읽기에 트랜잭션을 걸 필요가 있나요? @Transactional을 안 붙이면 되는거 아닐까요?
Java 에서 Annotation 은 어떤 기능을 하나요?
별 기능이 없는 것 같은데, 어떻게 Spring 에서는 Annotation 이 그렇게 많은 기능을 하는 걸까요?
Lombok의 @Data를 잘 사용하지 않는 이유는 무엇일까요?
Tomcat이 정확히 어떤 역할을 하는 도구인가요?
혹시 Netty에 대해 들어보셨나요? 왜 이런 것을 사용할까요?
Spring Framework의 기본 개념과 주요 특징에 대해 설명해주세요.
Spring Boot와 전통적 Spring Framework의 차이점은 무엇인가요?
IoC(Inversion of Control)와 DI(Dependency Injection)의 개념 및 이점에 대해 설명해주세요.
Spring Bean의 라이프사이클과 관련 콜백 메서드에 대해 설명해주세요.
@Component, @Service, @Repository의 차이점 및 사용 사례는 무엇인가요?
AOP(Aspect Oriented Programming)를 활용한 공통 관심사 분리 방법에 대해 설명해주세요.
Spring에서 트랜잭션 관리와 @Transactional 어노테이션의 역할에 대해 설명해주세요.
Spring MVC 아키텍처의 구성 요소와 요청 처리 과정을 설명해주세요.
Spring Boot의 자동 구성(Auto-Configuration) 원리에 대해 설명해주세요.
예외 처리를 위한 @ControllerAdvice의 역할과 활용 방법은 무엇인가요?
Spring Security의 기본 개념과 인증/인가 처리 흐름에 대해 설명해주세요.
RESTful API를 Spring에서 구현하는 방법과 모범 사례는 무엇인가요?
Spring Boot Actuator를 통한 애플리케이션 모니터링 방법은 무엇인가요?
Spring Cloud를 활용한 마이크로서비스 아키텍처 구현 전략에 대해 설명해주세요.
Spring에서 메시징 시스템(Kafka, RabbitMQ 등)과의 연동 방법은 무엇인가요?
Spring의 캐싱 추상화(Cache Abstraction)와 캐시 적용 방법에 대해 설명해주세요.
Spring Boot에서 프로파일 관리와 환경별 설정 적용 방법은 무엇인가요?
Spring Bean의 Scope(싱글톤, 프로토타입 등) 차이점과 활용 사례는 무엇인가요?
Spring의 이벤트 발행 및 리스너(Event Listener) 메커니즘에 대해 설명해주세요.
커스텀 어노테이션을 생성하고 이를 Spring에서 활용하는 방법은 무엇인가요?
Spring WebFlux와 Spring MVC의 차이점 및 사용 시나리오는 무엇인가요?
Spring에서 비동기 처리(Asynchronous Processing)를 구현하는 방법에 대해 설명해주세요.
Logback을 이용한 Spring Boot의 로깅 설정과 관리 방법은 무엇인가요?
HttpMessageConverter의 역할과 Spring에서의 메시지 변환 과정을 설명해주세요.
RestTemplate과 WebClient의 차이점 및 사용 사례에 대해 설명해주세요.
@Scheduled 애노테이션을 사용한 스케줄링 작업 구현 방법은 무엇인가요?
Spring Boot Starter의 개념과 주요 Starter들의 역할에 대해 설명해주세요.
Java Config와 XML Config를 통한 Bean 등록 및 설정 방식의 차이점은 무엇인가요?
최신 Spring 버전에서 추가된 기능 및 개선 사항에 대해 설명해주세요.