백엔드 신입 면접 대비 - Spring

Jay Lee·2022년 12월 26일
0

Interview

목록 보기
7/7

💡 IoC 컨테이너와 DI에 대해 설명해주세요

우선 제어의 역전(Inversion of Control)이란 모든 객체에 대한 제어권을 개발자가 아닌 프레임워크가 가지는 것을 의미합니다. 스프링에서는 IoC 컨테이너가 제어권을 가지고 객체의 생명주기 관리와 의존성 주입(DI)을 수행합니다.

DI(의존성 주입)이란 객체를 직접 생성하여 사용하지 않고 각 클래스 간의 의존 관계를 빈 설정 정보를 바탕으로 컨테이너가 자동으로 연결해 주는 것을 의미합니다. 이를 통해 객체간의 결합도를 줄일 수 있습니다.
의존성 주입에는 생성자 주입, 필드 주입, Setter 주입 세가지 방법이 있습니다.


💡 Spring MVC의 구조에 대해서 설명해주세요


💡 Spring Framework와 Spring Boot의 차이점을 설명해주세요.


💡 서블릿(Servlet)에 대해 설명해주세요.

클라이언트에 요청을 처리하고, 그 결과를 반환하는 Servlet 클래스의 구현 규칙을 지킨 자바 웹 프로그래밍 기술입니다. Spring MVC에서 Controller로 이용되며, 사용자의 요청을 받아 처리한 후에 결과를 반환합니다.

💡 JPA에서 (N+1) 문제와 발생하는 이유 그리고 해결하는 방법을 설명해주세요.

N+1이란 1번의 쿼리를 날렸을 때 의도하지 않은 N번의 쿼리가 추가적으로 실행되는 것을 의미합니다.
해결 방법에는 여러 방법이 있지만 가장 많이 사용되는 방법은 Fetch Join을 사용해 해결하는 방법입니다.
N+1 문제가 발생하는 이유는 연관관계를 가진 엔티티를 조회할 때 한 쪽 테이블만 조회하고 연결된 다른 테이블은 따로 조회하기 때문인데,
Fetch Join을 사용하면 미리 두 테이블을 Join하여 한 번에 모든 데이터를 가져오기 때문에 N+1문제를 애초에 막을 수 있습니다.

profile
Data Engineer

0개의 댓글