본문 바로가기

명사 美 비격식 (무리 중에서) 아주 뛰어난[눈에 띄는] 사람[것]

Personal/Employment

신입개발자 면접질문 - 백엔드

WAS와 WS의 차이?
WAS는 동적으로 비즈니스 로직을 넣을 수 있으나, WS는 정적으로 비즈니스 로직을 넣을 수 없습니다.

Spring Framework란?
자바개발을 편리하게 해주는 오픈소스 프레임워크입니다.
라이프사이클, 객체를 관리합니다.
IoC 제어의 역전, 어플리케이션의 느슨한 결합과
DI 각 의존성을 주입하고, 
AOP 트랜잭션이나 로깅 보안과 같은 공통기능을 분리해 관리합니다.

@RequestBody, @RequestParam, @ModelAttribute의 차이
@RequestBody는 JSON형태의 내용을 JAVA Object로 변환, 
@RequestParam은 1개의 파라미터를 받을때, 
@ModelAttribute는 파라미터값들을 생성자, getter, setter를 통해 주입하기 위해 사용합니다.

Spring Boot와 Spring Framework의 차이?
Spring은 프로젝트 초기에 환경설정을 해야하지만 Spring Boot는 내장톰캣과 설정의 많은 부분이 자동화되어 편하게 스프링을 활용할 수 있도록 돕습니다.

Spring MVC란?
MVC는 Model, View, Controller의 약자입니다.
각 레이어간 기능을 구분하는데 중점을 둔 디자인패턴입니다.
Model은 dao, dto, service등 데이터를 관리하고, 
View는 처리결과를 통해 유저인터페이스가 표현되며
Controller는 사용자의 요청을 처리하고 Model과 View를 중개하는 역할을 합니다.

MVC의 흐름?
클라이언트의 요청을
DispatcherServlet이 요청을 분석해 어떤 컨트롤러가 해당요청을 처리해야하는 지 결정합니다.
DispatcherServlet이 보낸 요청으로 HandlerMapping이 적절한 컨트롤러를 찾아 반환합니다.
Controller가 필요한 데이터를 모델에 요청하고 비즈니스 로직을 수행해 Model 반환값으로 ViewResolver를 사용해 뷰의 위치를 찾고 데이터를 전달합니다.
생성된 응답이 클라이언트에게 전송되어 화면에 표시됩니다.

IoC란?
객체에 대한 생성, 라이프사이클 등 제어권을 개발자가 아닌 컨테이너에게 넘긴것을 말합니다. 스프링에서는 이를 bean이라 합니다.

스프링에서 bean을 등록하는 방법?
@Component 어노테이션을 사용하거나
@Configuration 클래스안에서 빈으로 등록할 메소드에 @Bean을 붙여줍니다.

DI란?
필요한 객체를 직접생성하지않고 외부로부터 객체를 받아서 사용하는것입니다

AOP란?
로직내 공통 관심사항을 분리해 각각을 모듈화하는 것을 말합니다.


HTTP METHOD란?
get, post, put, delete가 있습니다.
get은 브라우저에 기록되어 캐시가 가능하며 정보를 요청할때, 
post는 브라우저에 기록되지않으며 캐시가 불가능하며 정보를 업데이트를 하기 위해 사용됩니다.

HTTP상태코드는?
주요코드로는 200, 404, 503이있습니다.
200은 성공, 404는 알려지지않은 URL, 503은 과부하가 걸린 서버일 경우 발생합니다.

CI/CD란?
서비스 빌드부터 배포까지의 과정을 자동화하는 과정입니다.
jenkins가 자동으로 빌드하도록 설계한 경험

Spring Filter와 Interceptor란?
Dispatcher Servlet에 요청이 전달되기전/후에 url패턴에 맞는 요청을 부가처리 할 수있는 기능을 제공합니다.

Lombok이란?
메소드를 컴파일하는 과정에 개입해 추가코드를 만들어냅니다.

Servlet이란?
자바웹을 만들기위한 기술로 클라이언트의 요청을 처리하고 그 결과를 반환하는 자바 웹 프로그래밍 기술입니다.
클라이언트가 url을 입력하면 HTTP Request가 Servlet Container로 전송되 HttpServletRequest, HttpServletResponse객체를 생성해 web.xml을 기반으로 요청한 url에 맞는 서블릿을 찾아 service메소드를 호출해 get, post여부에 따라 doGet(), doPost()를 호출한뒤 응답이 끝나면 HttpServletRequest, HttpServletResponse 두 객체를 소멸시킵니다.

VO와 BO, DAT, DTO란?
DAO는 데이터에 접근을 위한 객체,
BO는 service, DAO를 활용해 로직을 처리하는 객체, 
DTO는 controller, 각계층간 데이터교환을 위한 객체, 
VO는 실제데이터만 저장하는 객체를 말합니다.

대용량 트래픽에서 장애발생시 대응?
스케일업을 통해 하드웨어 스펙을 향상
스케일 아웃을 통해 서버를 여러대 추가해 향상시킵니다.

Restful API란?
Restful API는 HTTP통신 설계규칙을 잘 지켜 개발한 Restful한 api입니다.Rest 설계규칙은 URI는 정보의 자원만 표현하며 자원의 상태와 행위는 HTTP Method에 명시하는 것을 말합니다.

프레임워크와 라이브러리의 차이?
프레임워크는 전체적인 흐름을, 
개발자는 그안에서 라이브러리에 대한 흐름의 주도권을 쥐고있습니다. 이때 개발자의 제어권을 프레임워크에게 넘김으로써 개발에 집중하는 것을 제어의 역전 IoC라 합니다.

절차지향프로그래밍과 객체지향프로그래밍?
절차지향프로그래밍은 물과같이 순차적인 처리를 중시하며 대표적으로 C언어가 있습니다.
객체지향프로그래밍은 객체로 캡슐화, 상속, 다향성 등으로 모델링하여 진행하는 기법으로 대표적으로 Java가 있습니다.

동적쿼리란?
실행시 특정 조건이나 상황에 따라 쿼리 문장이 변경되어 실행되는 쿼리문을 말합니다.