한국에서 웹 개발자로 취업을 하는 경우 가장 많이 사용하는 프레임워크가 spring이다.
채용자리를 찾다보면 자바와 스프링을 사용할 줄 아는 사람을 뽑는다는 곳을 가장 많이 보게 된다.
정부표준프레임워크로도 사용되고, 국내에서 워낙 자바를 많이 사용하다 보니 스프링은 거의 자바 웹 개발자에게는 필수 처럼 되어 있다. 스프링은 프로그램의 복잡함에 반해서 만들어진 경량급 프레임워크라고 하지만 처음 개념을 배우면이게 왜 복잡하지 않다는 것인지, 무엇이 가벼운 것인지 이해가 되지 않는 나와 비슷한 사람도 많지 않을까 생각해 본다!
개발을 배우면서 취업을 하기 위해 배우지만, 어려워서 보고 싶지 않은 애증의 스프링.
그래도 면접을 준비하기 위해서 알고 있어야 하는 주요 질문 위주로 정리를 해 보고자 한다.
- 프레임워크를 사용하는 이유는 무엇인가?
- 왜 스프링 프레임워크가 개발의 대세가 된 것인가?
- Spring의 특징은 무엇인가?
- DI와 AOP에 대해 설명하시오
- POJO는 무엇인가?
- maven에 대해 설명하시오
- mybatis의 역할은 무엇인가?
- Spring MVC 구성요소에 대해 설명하시오
- Spring 기본 환경 설정 파일 및 기능 설명하시오
프레임워크를 사용하는 이유는 무엇인가?
개발자는 각각의 실력이나 코딩 방법 등 차이가 큰 편이다.
그렇다 보니 개발자 구성에 따라 프로젝트의 결과 차이가 많이 생겨서 이러한 것을 극복하기 위해서 프레임워크를 사용하는 것이다.
구조가 있고, 그 구조 안에 개발자가 코드를 추가하는 형태로 개발을 하는 방식이 프레임워크를 사용한 개발로 일정한 품질이 보장되는 결과물을 얻을 수 있기에 프레임워크를 사용하는 것이다.
왜 스프링 프레임워크가 개발의 대세가 된 것인가?
스프링은 하드웨어적인 구성이 필요없는 경량프레임워크이고, 일반적인 java 클래스와 인터페이스를 이용하는 구조를 사용해서 진입 장법이 낮아서 개발자들이 접근이 쉬웠다고 한다. 그리고, 기본 구조를 흔들지 않고, 여러 종류의 프레임 워크를 혼용해서 사용 할 수 있다.
스프링은 처음에 이해해야 하는 부분은 많지만 결과적으로 코드의 양이 줄어서 개발 생산성이 높고, XML 설정 등을 이용하여 유지보수를 하기 때문에 효율적이다.
Spring의 특징은 무엇인가?
POJO 기반 : 자바 코드를 이용해서 객체를 구성하는 방식을 그대로 스프링에서 사용할 수 있음
의존성 주입 : 메소드나 객체의 호출을 개발자가 아닌 외부에 의해서 결정 함
AOP의 지원 : 보안, 로그, 같은 횡단 관심사를 모듈로 분리하여 공통 기능을 재사용 하도록 돕는 기법 지원
트랜잭션의 지원: 트랜젝션의 처리를 애노테이션이나 XML로 설정할 수 있음
DI와 AOP에 대해 설명하시오
DI(Dependency Injection)는 의존성 주입으로 의존적인 객체를 직접 생성하거나 제어하는 것이 아니라 제어의 역행(Ioc)으로 특정 객체에 필요한 객체를 외부에서 결정해서 연결 시키는 것을 의미한다. 이러한 의존성 주입을 스프링은 프레임워크에서 처리하여 개발자는 자신의 코드에 필요한 객체는 스프링을 통해서 주입받는 구조로 작성된다.
DI는 생성자를 통한 주입과 set 메소드를 이용한 주입으로 구분 가능하다.
AOP(Aspect Oriented Programing) 관점 지향 프로그래밍, 횡단 관심사의 분리를 허용하여 모듈성을 증가시키는 목적, 대부분의 시스템이 공통으로 가지는 보안, 로그 같은 횡단 관심사를 분리해서 제작하는 것을 말한다.
POJO는 무엇인가?
POJO(Plain Old Java Object)는 오래된 방식의 간단한 자바 오브젝트라는 말로, 스프링 전의 프레임워크 등이 무거운 객체를 만드는 것에 반발해서 사용하게 된 용어이다.
스프링은 객체 간의 관계를 구성할 때 별도의 API를 사용하지 않는 POJO(Plain Old Java Object) 구성으로 제작이 가능하다.
maven에 대해 설명하시오
maven은 프로젝트 관리 도구로 프로젝트의 모든 단계에 사용하는 개발 도구이지만, 가장 많이 사용되는 용도는 프로젝트에 필요한 라이브러리를 자동으로 관리해주는 빌드 도구이다. 필요한 라이브러리 jar파일을 자동으로 다운 받을 수 있다.
Java 기반 프로젝트의 라이프사이클 관리를 위한 빌드 도구로 컴파일과 빌드를 동시에 수행 등 다양한 기능을 한다.
참고로, 잘 모르겠다면 상세하게 설명된 블로그를 보고 오는 것을 추천!
[Java/Spring] - Spring STS, Maven 메이븐이란?
mybatis의 역할은 무엇인가?
mybatis는 개발자가 지정한 SQL, 저장프로시저, 매핑을 지원하는 프레임워크.
이러한 연결 프로그램으로 인해 프로그램 소스코드에서 SQL 문장을 분리하여 별도의 XML 파일로 저장하고 이 둘을 서로 연결 시켜주는 방식으로 작동한다.
Spring MVC 구성요소에 대해 설명하시오
Dispatcherservlet
- 클라이언트의 요청을 전달 받아 컨트롤러에게 요청을 전달하고 컨트롤러가 리턴할 결과 값을 view에게 전달하여 알맞은 응답을 하도록 하는 것
- 클라이언트의 요청을 중앙에서 처리하는 스프링 MVC의 핵심 구성 요소
- web.xml에 한개 이상의 DispatcherServlet을 설정한다.
HandlerMapping
- 클라이언트의 요청 URL을 어떤 컨트롤러가 처리할지를 결정
Controller
- 클라이언트의 요청을 처리한 뒤 그 결과를 DispatcherServlet에게 알려준다.
ModelAndView
- 컨트롤러가 처리한 결과 정보 및 뷰 선택에 필요한 정보를 담아 놓는 세트
ViewResolver
- 컨트롤러의 처리 결과를 생성할 뷰를 결정
View
- 컨트롤러에서 리턴 받은 처리 결과를 화면에 출력한다.
Spring 기본 환경 설정 파일 및 기능 설명하시오
[파일] root-context.xml : 공통빈을 설정하는곳, view 제외 빈 설정(Dao 등)
[파일] appServlet 폴더 내의 servlet-context.xml
servlet 요청과 관련된 객체 정의 파일
view페이지 경로 및 파일명 지정
bean 설정(베이스 패키지 하위 모든 어노테이션 스캔하여 빈 등록 등)
[파일] web.xml : 환경설정 부분, 배포 서술자,
서블릿 이름을 설정하고, 패턴을 설정한다. (.do 패턴 등)
filter를 활용하여 encodingFilter 를 추가하여 한글이 깨지지 않도록 설정하기도 한다.
각 에러 코드별 error-page를 설정할 수 있다.
웹 애플리케이션 요청 시 시작파일을 지정할 수 있다. <welcome-file-list>
[파일] pom.xml : Maven 설정 파일 / 필요한 라이브러리 다운 받는 경우 사용
참고로 상세하게 폴더와 보고 싶은 경우 아래 링크 블로그 글 참고하기!
[IT 개발자 면접 준비] - Spring MVC 프로젝트 템플릿 구조(면접 참고)
REST 서비스가 무엇인가?
Representational State Transfer 자원을 이름으로 구분하여 정보를 주고 받는 것
네트워크 상에서 클라이언트와 서버 사이의 통신 방법 중 하나이다.
XML 파일로 된 웹페이지를 읽어 원하는 정보를 수집하는 기능으로 해당 페이지의 URI만 알면 웹 브라우저로 읽어 정보를 얻을 수 있다.
프로그램을 배우고 스프링프레임워크를 활용하여 프로그램을 구현해 보고 DI & AOP가 뭐라고는 외워서 알고 있는 면접자들이 많다보니 자바+ 스프링 개발자를 채용하는 면접을 가면 개념을 제대로 알고 있는지 계속해서 꼬리의 꼬리를 잡는 질문을 하는 경우가 있다.
짧게 대답할 수 있도록 개념을 외우는 것도 중요하지만, 제대로 어떻게 구현되는 것인지 스프링에 대해서 제대로 이해를 하는 것을 추천한다.
'IT 개발자 면접 준비' 카테고리의 다른 글
JAVA 8 새로 추가된 기능! 개발자 면접 대비 (0) | 2021.05.12 |
---|---|
모델 2 방식과 스프링 MVC (개발자 면접 단골 질문) (0) | 2019.06.13 |
Spring MVC 프로젝트 템플릿 구조(면접 참고) (0) | 2019.06.12 |
JAVA 개발자, 기초 개념 면접 질문 모음 (0) | 2019.06.12 |
IT 개발자 기본 면접 질문 (0) | 2019.06.05 |
댓글