면접준비

[기술면접 정리] 백엔드

yuuuuna0 2023. 7. 19. 17:36

1. WAS(Web Application Server) 와 WS(Web Server) 차이

WAS: 비즈니스 로직을 넣을 수 있음 -> Tomcat, PHP, ASP 등 => 동적 컨텐츠 제공

WS: 비즈니스 로직을 넣을 수 없음 -> Apache, Nginx => 정적 컨텐츠

 

2. 서블릿(Servlet)이란

동적 웹 페이지를 만들 때 요청과 응답의 흐름을 간단한 메소드 호출만으로 체계적으로 다룰 수 있게 해주는 자바 기반의 웹 프로그래밍 기술spring MVC의 Controller로 이용되며, 사용자의 요청을 받아 처리한 후 결과를 반환합니다.

 

3. Spring framework란 : 자바 개발을 편리하게 해주는 오픈소스 프레임워크

- 경량 컨테이너로서 자바 객체를 직접 관리

- 제어의 역전을 통해 어플리케이션의 결합을 느슨하게 만들어줌

- 의존성 주입을 지원

 

4. RequestBody, RequestParam, ModelAttribute 의 차이

RequestBody: 클라이언트가 전송하는 JSON 형태의 HTTP body 내용을 컨버터를 통해 Java Object로 변환시켜주는 역할

RequestParam: 1개의 HTTP 요청 파라미터를 받기 위해 사용됨

ModelAttribute: HTTP body의 내용과 HTTP 파라미터의 값들을 생성자, getter, setter를 통해 주입하기 위해 사용

 

5. Spring MVC : MVC은 각 레이어간 기능을 구분하는데 중점을 둔 디자인 패턴입니다.

Model : 데이터 관리 및 비즈니스 로직을 처리하는 부분(DAO,DTO,Service 등)

View : 비즈니스 로직 처리 결과가 유저 인터페이스에 표현되는 구간 (html, jsp, thymeleaf등이나  Rest API로 서버가 구현된다면 Json응답으로 구성됨)

Controller : 사용자의 요청을 처리하고 model과 view를 중개하는 역할

 

6. Spring MVC 흐름

DispatcherServlet: 클라이언트에게 요청을 받아 응답까지 MVC 처리과정을 통제

HandlerMapping: 클라이언트의 요청 url을 어떤 Controller가 처리할지 결정

HandlerAdapter: HandlerMapping에서 결정된 핸들러 정보로 해당 메소드를 직접 호출해주는 역할

ViewResolver: Controller의 처리 결과(데이터)를 생성할 view를 결정

 

1. 클라이언트 url을 통해 요청 전송

2. 디스패처 서블릿은 핸들러맵핑을 통해 해당 url에 맞는 controller를 찾음

3. 디스패처 서블릿은 핸들러어댑터로 요청 전달

4. 핸들러 어댑터에서 컨트롤러로 요청 전달

5. 컨트롤러는 비즈니스 로직 처리 후 반환할 뷰의 이름을 반환

6. 디스패처 서블릿은 뷰 리졸버를 통해 반환할 뷰를 찾음

7. 디스패처 서블릿은 컨트롤러에서 뷰에 전달할 데이터를 추가

8. 데이터가 추가된 뷰 반환

 

7. 제어의 역전(IoC: Inversion of Control)이란 : 모든 객체에 대한 제어권을 개발자가 아닌 IoC 컨테이너에 넘기는 것을 말합니다. 

스프링에서는 IoC 컨테이너에 객체들을 생성하면 객체끼리 의존성을 주입하는 역할을 하고 컨테이너에 등록한 객체들을 '빈'이라 합니다.

 

8. 의존성 주입(DI: Dependency Injection)이란: 필요한 객체를 직접 생성하는 것이 아닌 외부로부터 객체를 받아서 사용하는 것으로 객체간 결합도를 줄이고 코드의 재사용성을 높일 수 있습니다. 가장 권장하는 방법은 생성자를 통한 주입방법입니다.

 

9. 스프링에서 빈을 등록하는 방법

1. @Component 어노테이션을 사용하는 것입니다 @Controller, @Service, @Repository는 모두 @Component를 포함합니다.

2. 설정 클래스를 따로 만들어 @Configuration 어노테이션을 붙이고 해당 클래스 안에서 빈으로 등록할 메소드를 만든 뒤 @Bean 어노테이션을 붙여줍니다.

 

10. DAO, DTO,BO에 대해 설명하시오

DAO: DB 데이터에 접근을 위한 객체 (Repository, Mapper) -> CRUD작업을 하나씩 분할 해 놓은 것

DTO: 계층간 데이터 교환을 하기 위해 사용하는 객체

BO: 여러 DAO를 활용해 비즈니스 로직을 처리하는 객체 (Service) -> 단위작업