디스토피아

신입 개발자 기술면접 대비 질문답변 정리 2 본문

유머·감동

신입 개발자 기술면접 대비 질문답변 정리 2

늘그랬듯이 2023. 7. 10. 01:57
반응형

 

 

--------------  DB ---------------

 

1. DML의 종류

SELECT, INSERT, UPDATE, DELETE

 

2. DDL의 종류

CREATE, DROP, ALTER, TRUNCATE

 

3. SELECT구문 수행 순서

FROM > WHERE > GROUP BY > HAVING > SELECT > ORDER BY

 

4. 조인이란

두 개 이상의 테이블을 서로 연결하여 데이터를 검색할 때 사용하는 방법

5. 조인을 왜 사용하나

여러 테이블의 데이터를 조합하여 처리하기 위해

 

6. inner join과 outer join

inner join : 조인이 되는 킷값을 기준으로 교집합

outer join : 정상적으로 조인 조건을 만족하지 못하는 행들을 보기 위해 사용된다. 즉 어ᄄᅠᆫ 집합을 기분으로 해서 조인되는 다른 집합과의 연결에 실패했더라도 그 결과를 추출하는 조인을 말한다.

 

7. equal join과 non-equal join

EQUI JOIN : 조인 조건식에 ‘=’을 사용한다.

NON-EQUI JOIN : '='연산자 이외의 비교 연산자를 사용하는 것

 

8. outer join의 종류

1. LEFT OUTER JOIN

2. RIGHT OUTER JOIN

3. FULL OUTER JOIN

 

9. natural join이란

두 테이블 간의 동일한 이름을 갖는 모든 컬럼들에 대해 등가조인(EQUI JOIN)을 수행한다.

 

10. self조인이란

하나의 테이블 내에서 같은 테이블의 다른 컬럼 값을 참조하고 있을 때 이를 셀프 조인을 활용하여 원하는 데이터를 얻게 해주는 역할

 

11. self조인 사용 이유

자신의 테이블을 참조하기 위해서

 

12. 유니온과 조인의 차이점

UNION : 합집합. 중복을 제거하지 않는다.

JOIN : 교집합. 중복을 제거한다.

 

13. subquery란

SELECT문 안에 또다시 SELECT문이 있는 쿼리문이ᅟᅡᆮ.

 

14. 기본 select부터 join, subquery를 이용한 select구문 작성하는 것은 손코딩(A4용지에 펜으로 작성)할 수 있게 연습할 것

 

15. 오라클에서 사용해본 객체 종류

TABLE : 데이터 담고 있는 객체

VIEW : 하나 이상의 테이블 연결해서 마치 테이블인 것처럼 사용하는 객체

INDEX : 테이블에 있는 데이터를 바르게 찾기 위한 객체

SYNONYM : 데이터베이스 객체에 대한 별칭을 부여한 객체

SEQUENCE : 일련번호 채번을 할 때 사용되는 객체

FUNCTION : 특정 연산을 하고 값을 반환하는 객체

PROCEDURE : 함수와 비슷하지만 값을 반환하지 않는 객체

PACKAGE : 용도에 맞게 함수나 프로시저 하나로 묶어 놓은 객체

 

16 제약조건이란 무엇인가

테이블에 부적절한 자료가 입력되는 것을 방지하기 위해서 여러 가지 규칙을 적용해 놓는 것

 

17. 제약조건의 사용 이유

데이터베이스 데이터의 정확성을 유지하기 위한 목적

 

18. 제약조건의 종류 및 간단한 설명

1. NOT NULL : 해당 컬럼에 NULL값이 들어오지 못하게 함

2. UNIQUE : NULL은 허용하나 중복은 불가능함

3. PRIMARY KEY : NULL, 중복 불가능

4. FOREIGN KEY : 참조하는 테이블 칼럼의 데이터만을 허용

5. CHECK : 데이터의 값의 범위나 조건을 설정하여 조건에 해당되는 데이터만 허용

6. DEFAULT : 아무런 데이터를 입력하지 않았을 경우 지정한 데이터가 자동으로 입력

 

19. 테이블에 왜 primary key를 설정하는지

일관성 없는 데이터가 반복적으로 쌓이는 것을 방지하기 위해

 

20. foreign key 제약조건은 무엇이며 왜 사용하는지

FOREIGN KEY : 참조하는 테이블 칼럼의 데이터만을 허용

중복된 데이터가 없으면서도 문제없이 데이터를 저장, 관리하기 위해

 

21. 트랜젝션이란 <-- 이거 정말 중요

데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다.

 

22. 트랜젝션과 쓰레드의 차이 <-- 쌩뚱맞게 전혀 연관 없는 질문도 간혹 나오는데, 명확히 알고 있으면 충분히 답변 가능

쓰레드 : 프로세스 내에서 실제로 작업을 수행하는 주체를 의미한다. 모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행한다. 또한 두 개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스 라고 한다.

트랜젝션 : 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다.

 

 

23. view란 무엇인가

하나 이상의 테이블이나 다른 뷰의 데이터를 볼 수 있게 하는 데이터베이스 객체이다.

 

24. view를 사용하는 목적

보안 강화와 QUERY 단순화를 위해

 

25. index란 무엇인가

데이터베이스 테이블에 잇는 데이터르 ㄹᄈᆞᆯ리 찾기 위한 용도의 데이터베이스 객체

 

26. index의 장점과 단점

장점 : 검색과 정렬 속도를 향상시킨다.

단점 : DB변경작업이 잦으면 성능이 저하된다.

 

27. index의 종류

1. B-TREE 인덱스 : 실시간으로 데이터 입력과 수정이 일어나는 환경에 많이 사용함

2. BITMAP 인데스 : 데이터 값의 종류가 적고 동일한 데이터가 많을 경우에 많이 사용함

 

28. 프로시져란, 함수란, 패키지란 <- 이거 세개 묶어서 공부하기

프로시저 : 특정 작업을 수행 하는, 이름이 있는 PL/SQL BLOCK이다. 필요할 때마다 호출, 사용하여 작업 효율을 늘릴 수 있다.

함수 : 호출 시 FUNCTION 내에 작성한 쿼리를 수행해서 특정 값을 반환하는데 사용

패키지 : 변수, 상수, 서브프로그램드으이 항목을 묶어놓은 객체

 

29. 트리거란

특정 테이블에 DML문이 수행되었을 때, 데이터베이스에서 자동으로 동작하도록 작성된 프로그램






----------------- 화면 내용 ------------------

 

1. javascript와 jquery 차이

자바스크립트 : javaScript는 Netscape.inc가 개발한 스크립팅 언어이다. 상소 작용 효과를 생성하고 다양하나 검증 작업과 관련하여 HTML페이지에 임베드 할 수 잇는 마이크로 시스템.

제이쿼리 : jQuery는 HTML의 클라이언트 측 스크립팅을 단순화 하는 javaScript의 경량 크로스 브라우저 라이브러리입니다.

 

2. jquery의 장점

- 자바스크립트보다 훨씬 간단하게 사용 가능하면서도 동일한 동작을 구현할 수 있다.

- 이벤트, 애니메이션, ajax등을 활용할 때 유용하다.

- 멀티 브라우저 지원이 된다. 어느 브라우저에서나 동일하게 작동한다.







 

------------ 서블릿jsp ----------------------

 

1. 클라이언트와 서버에 대해 설명하시오

클라이언트 : 다른 프로그램에게 서비스를 요청하는 프로그램

서버 : 그 요청에 대해 응답을 해주는 프로그램

 

2. web 서버와 was 서버의 차이

web서버 : 클라이언트가 서버에 페이지 요청을 하면 요청을 받아 정적 컨텐츠(html, png, css등)을 제공하는 서버

was서버 : db조회나, 어떤 로직을 처리해야 하는 동적인 컨텐츠를 제공하는 서버

 

3. 서블릿 컨테이너와 jsp 컨테이너의 역할

서블릿 컨테이너 : 클라이언트 요청에 따라 서블릿을 수행하는 프로그램

JSP 컨테이너 : JSP 컨테이너는 JSP를 서블릿으로 변환하는 프로그램

 

4. web서버와 was서버의 장단점

 

web서버

장점

- 속도가 빠르다.(대신 파일의 양이 많으면 많아질수록 웹 페이지로 가공할 양이 늘어나니 느려진다.)

- 구축 비용이 적다.(별도의 DB, 비즈니스 로직이 필요없기 때문이다.)

단점

- 정해진 데이터만 웹 페이지에 출력한다.

- 관리가 힘들다. 코드 하나하나 수정해야 한다.

 

was서버

장점

- 다양한 정보를 제공할 수 있다.

- 유지보수가 쉽다.

단점

- 상대적으로 느리다.

- 추가 비용이 발생한다. 웹 서버 이외에 was를 사용해야 하기 때문에!

 

5. 서블릿이란?

클라이언트의 요청을 처리하고, 그 결과를 반환하는 Servlet 클래스의 규현 규칙을 지킨 자바 웹 프로그래밍 기술

 

6. 서블릿 설계 규약(여유 되시면 추가로 보기!)

1. public 클래스로 작성하기

2. HttpServlet 상속하기

3. doGet, doPost 등의 메서드 오버라이딩하기

4. web.xml에 서블릿 등록하기

 

7. 서블릿의 동작 구조

1. 클라이언트의 URL요청

2. HTTP요청을 처리하기 위한 HttpServletRequest 객체 및 HttpServletResponse 객체 생성

3. 요청된 URL을 배포서술자(DD, Deplyment Descriptor)분석을 통해 요청된 서블릿 클래스를 찾음

4.. 서블릿 컨테이너에서 실행된 적 or 메모리에 생성된 인스턴스가 있는지 체크

- 처음 실행 : 인스턴스를 생성한 후 init()호출 -> 초기화 후 스레드 생성

- 이미 실행 : 기존 인스턴스에 스레드 생성

5. 각 스레드의 service()호출 및 Get or Post방식에 따라 doGet() or doPost() 호출

- 2에서 생성된 HttpServletRequest 객체와 HttpServletResponse 객체가 인자로 전달됨

6. doGet() or doPost() 로직에서 생성된 동적 웹 페이지 결과물은 HttpServletResponse 객체에 담김.

7. HttpServletResponse 객체를 서블릿 컨테이너에서 HTTP 형태로 바뀌어 웹 서버로 전송

8. HttpServletRequest 객체와 HttpServletResponse 객체의 메모리 소멸 및 스레드 종료

 

8. web.xml 배포서술자란 무엇인가

배포 서술자(DD, Deployment Descriptor)는 Java EE 스펙으로 웹 애플리케이션의 기본적인 설정을 위해 작성하는 파일로, 보통은 WEB-INF/web.xml파일을 말한다.

 

9. 배포서술자에 작성하는 내용이 무엇인가

1. ServletContext의 초기 파라미터

2. Session의 유효시간 설정

3. Servlet/JSP에 대한 정의

4. Servlet/JSP 매핑

5. Mime Type 매핑

6. Welcome File list

7. Error Pages 처리

8. 리스너/필터 설정

9. 보안

 

10. 서블릿의 라이프사이클 - 7번 참조

 

11. get과 post의 차이

- GET은 URL에 데이터가 노출되나 POST는 노출되지 않는다.

- GET은 데이터의 위치가 Header이고, POST는 Body이다.

- GET은 캐싱이 가능하나, POST는 불가능하다.

 

 

12. forward와 sendRedirec 차이

Forward : client가 웹 브라우저에서 요청 시 Forward는 client에게 보여지지 않는 페이지에서 작업을 하게 된다. 그러므로 client는 페이지의 이동을 모르게 되며, URL또한 변경이 되지 않는다. Client가 요청을 하게 될 때 생성되는 객체는 계속 사용이 가능하며 다른 페이지 에서도 그 객체를 사용할 수 있다.

Redirect : client가 웹브라우저에서 요청시 Redirect는 client에게 페이지의 이동을 모두 노출시킨다. client가 요청 시 새로운 객체를 생성하며 기존의 객체는 사라지게 되며, UR:이 페이지 이동시마다 변경된다. 이전의 전송값을 이동한 페이지에서 사용 불가능하다.

 

13. 필터란

Client로부터 Server로 요청이 들어오기 전에 서블릿을 거쳐서 필터링 하는 것

 

14. 래퍼란

웹 브라우저와 웹 컴포넌트 사이를 오가는 데이터에 변형을 가하려면 필터 클래스와 더불어 포장하는 역할을 하는 클래스를 작성해야 하는데 이것이 래퍼 클래스이다.

 

15. session 과 cookie에 대해 간략하게 정리해두세요

cookie : 클라이언트 로컬에 저장되는 키와 값이 들어잇는 작은 데이터 파일

session : 서버에 클라이언트의 상태 정보를 저장하는 기술로 논리적인 연결을 세션이라고 한다.

 

16. 세션과 쿠키의 차이도 함께 봐주세요

- 저장 위치 : 쿠키는 클라이언트(=접속자pc)에 저장되며 세션은 웹 서버에 저장된다.

- 저장 형식 : 쿠키는 text로 저장되며 세션은 Object로 저장된다.

- 만료 시점 : 쿠키는 쿠키 저장시 시 설정되며 세션은 브라우저 종료시 삭제된다.

- 사용하는 자원 : 쿠키는 클라이언트 리소스를 사용하며 세션은 웹 서버 리소스를 사용한다.

- 용량 제한 : 쿠키는 총 300개, 하나의 도메인당 20개, 하나의 쿠키당4kb. 세션은 서버가 허용하는 한 용량제한이 없다.

- 속도 : 쿠키가 세션보다 ᄈᆞ르다.

- 보안 : 쿠키가 세션보다 안좋다.

 

17. jsp란

HTML 코드에 JAVA 코드를 넣어 동적웹페이지를 생성하는 웹어플리케이션 도구이다.

 

18. 서블릿과 jsp의 차이

Servlet

- 자바코드로 구현하고 컴파일하고 배포해야 한다.

- HTML태그로 문자열(“”)스크림으로 처리해야 한다.

- 코드가 수정되면 다시 컴파일하고 배포해야 한다.

JSP

- 키워드가 태그화 되어 서블릿에 비해 배우기 쉽다.

- 자바코드를 <% %>태그 안에 처리해주어야 한다.

- HTML처럼 태그를 사용하여 자바코드도 사용이 가능하다.

 

19. jsp의 특징

- 동적 웹 어플리케이션 컴포넌트이다.

- 확장자는 .jsp

- 클라이언트의 요청에 동적으로 작동하고, 응답은 html을 이용한다.

- jsp는 서블릿으로 변환되어 실행된다.(컴파일러가 알아서 변환해준다.)

- MVC패턴에서 View로 이용된다.

 

20. jsp tag element 5가지

1. 지시자 <%@ %> : 페이지 속성 지정

2. 주석 <%-- --%> : 주석 처리

3. 선언 <%! %> : 변수, 메소드의 선언

4. 표현식 <%= %> : 결과값 출력

5. 스크립트릿 : <% %> JAVA코드 삽입

 

21. jsp 내장객체란

JSP내에서 선언하지 않고 사용하는 객체

 

22. jsp 내장객체 9가지

1. request : javax.servlet.http.HttpServletRequest / HTML 폼 요소의 선택 값 등 사용자 입력 정보를 읽으려고 사용한다.

2. response : javax.servlet.http.HttpServletResponse / 사용자 요청에 대한 응답을 처리하려고 사용한다.

3. pageContext : java.servlet.jsp.PageContext / 현재 JSP 실행에 대한 context 정보를 참조하려고 사용한다.

4. session : javax.servlet.http.HttpSession / 클라이언트의 세션 정보를 처리하려고 사용한다.

5. application : javax.servlet.ServletContext / 웹 서버의 애플리케이션 처리와 관련된 정보를 참조하려고 사용한다.

6. out : javax.servlet.jsp.JspWriter / 사용자에게 전달하기 위한 output 스트림을 처리하려고 사용한다.

7. config : javax.servlet.servletConfig / 현재 JSP 의 초기화 환경을 처리하려고 사용한다.

8. page : java.lang.Object / 현재 JSP 의 클래스 정보를 보려고 사용한다.

9. exception : java.lang.Throwable / 예외 처리를 하려고 사용한다.

 

23. jsp 내장 객체의 영역 구분하여 설명 -- 22번 참조

 

24. el로 값을 바로 출력하지 않고 jstl c:out을 이용해야 하는 이유

1. html이나 스크립트가 실행되어 위험하다.

2. 엄격한 태그 규칙을 위해 사용

3. 개행문자 파싱의 차이 때문에 사용

4. 보안성 때문에 사용

 





#

----------------- ajax -------------------

 

1. ajax란 무엇인가

JavaScript를 사용한 비동기 통신, 클라이언트와 서버간에 XML로 데이터를 주고받는 기술

 

2. 동기 방식과 비동기 방식의 차이점

동기 방식

- 요청을 보낸 후 응답(=결과)를 받아야지만 다음 동작이 이루어지는 방식

- 어떠한 일을 처리할 동안 다른 프로그램은 정지한다.

- 실제 cpu가 느려지는 것은 아니지만 시스템의 전체적인 효울이 저하된다고 할 수 있다.

비동기 방식

- 요청을 보낸 후 응답(=결과)와는 상관없이 다음방식이 작동하는 방식

- 결과가 주어지는데 시간이 걸리더라도 그 시간 동안 다른 작업을 수행함으로 효율적이다.

 

3. ajax의 장단점

장점

- 웹 페이지의 속도 향상

- 서버의 처리가 완료 될 때까지 기다리지 않고 처리 가능

- 서버에서 data만 전송하면 되므로 전체 코딩의 양이 줄어든다.

- 기존 웹에서 불가능했떤 다양한 UI를 가능하게 해준다.

단점

- 히스토리 관리가 안 된다.(보안에 신경써야 한다.)

- 연속으로 데이터 응답요청시 부하가 증가할 수 잇다.

- XMLHTTPRequest를 통해 통신을 하는 경우 사용자에게 아무런 정보가 주어지지 않아서 아직 요청이 완료되지 않았는데 페이지를 떠나거나 오작동할 우려가 발생한다.

 

---------------- framework ---------------------

 

1. 프레임워크란 무엇인가

애플리케이션 개발에 바탕이 되는 템플릿과 같은 역할을 하는 클래스들과 인터페이스의 집합

 

2. 프레임워크와 라이브러리의 차이

라이브러리는 라이브러리를 가져다가 사용하고 호출하는 측에 전적으로 주도성이 있으며 프레임워크는 그 틀안에 이미 제어 흐름에 대한 주도성이 내포되어 있다.

 

3. 프레임워크의 특징

구조화된 스크립트를 통해 개발자의 스크립트 패턴을 정형화 할 수 있도록 되어있으며 개발자가 반복적으로 해야하는 공통부분을 최소화 할 수 있도록 설계되어 있다.

 

4. 프레임워크의 장단점

장점

- 체계적인 코드관리로 유지보수가 용이하다.

- 기본설계 및 기능 라이브러리를 제공하여 개발 생산성이 높다.

- 코드에 대한 재사용성이 높다.

- 추상화된 코드 제공을 통해 확장성이 좋다.

단점

- 학습난이도가 높다.

- 기본 설계된 구조에 의해 자유로운 개발에 한계가 있다.

- 사용하지 않는 기능에 대한 라이브러리가 포함될 수 있다.

- 제공되는 기능만큼 프로젝트의 용량이 증가한다.

 

5. 프레임워크의 종류

1. 스프링 프레임워크

2. 스트럿츠 프레임워크

3. 앵귤러 JS

4. 장고 프레임워크

 

6. 마이바티스란

객체 지향 언어인 자바의 관계형 데이터 베이스 프로그래밍을 보다 쉽게 도와주는 프레임 워크

 

7. 마이바티스의 장점

1. 쉬운 접근성과 코드의 간결함

2. SQL문과 프로그래밍 코드의 분리

3. 다양한 프로그래밍 언어로 구현가능

 

8. 메이븐이란

Apache Maven은 자바용 프로젝트 관리도구로 Apache Ant의 대안으로 만들어졌다.

Apache License로 배포되는 오픈 소스 소프트웨어이다.

 

9. 메이븐의 장점

1. 라이브러리의 관리를 매우 용이하게 해준다.

2. 프로젝트의 작성부터 컴파일, 페트스 등 프로젝트 라이프사이클에 포함되는 각 테스트를 지원해준다.

 

10. 스프링 프레임워크란

자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 엔터프라이즈급 애플리케이션을 개발하기 위한 모든 기능을 종합적으로 제공하는 경량화된 솔루션이다.

 

 

11. 스프링의 특징

1, 컨테이너 역할

2. DI지원

3. AOP지원

4. POJO지원

5. 트랜젝션 처리를 위한 일관된 방법을 지원

6. 영속성과 관련된 다양한 API지원

 

12. 스프링 MVC의 흐름(요청 처리 과정) - 말로도 설명해야 하고 그림도 그릴 수 있으면 좋음! <꽤 자주 나왔던 면접질문..

1. DispatcherServlet이 요청을 수신

2. DispatcherServlet은 HanderMapping에 클라이언트의 요청을 처리할 컨트롤러 객체를 요청

3. HandlerMapping은 요청을 처리할 컨트롤러를 검색해서 DispatcherServlet에 알려줌

4. DispatcherServlet은 해당 Controller에 처리를 요청

5. Controller는 처리 결과 및 뷰 정보를 ModelAndView에 담아 DispatcherServlet에 전달

6. DispatcherServlet은 처리 결과를 생성한 view를 구하기 위해 ViewResolver에 요청

7. ViewResolver는 처리결과를 생성할 view를 DispatcherServlet에 전달

8. DispatcherServlet은 view에 응답생성을 요청

9. view는 클라이언트에 전송할 응답을 생성

 

13. 처음 HelloWorld 화면이 나오게되는 원리 설명

1. 클라이언트 요청

2. web.xml 에서 디스패처 서블릿(Dispatcher Servlet) 클라이언트 요청을 핸들링

3. servlet-context.xml 에서 해당 클래스의 웹요청을 처리하는 컨트롤러를 사용 [HanderMapping으로 Controller 검색]

4. 해당 Controller 가 요청 처리 후, Home (View) 로 리턴 [뷰의 이름은 /WEB-INF/views/home.jsp 로 바뀐다.

5. View 에 출력

 

14. IoC란 무엇인가

제어의 역전. 메소드의 객체나 호출작업을 개발자가 결정하는 것이 아니라, 외부에서 결정되는 것

 

15. IoC컨테이너에 대해 설명하시오

의존 객체 Bean을 만들어 Bean 객체간 의존성을 주입해주는 주체

 

16. IoC컨테이너의 역할

초기에 빈 오브젝트를 생성하고 DI(Dependency Injection)한 후에 최초로 애플리케이션을 기동할 빈 하나를 제공해주는 것

 

 

17. DI란 무엇인가

Dependency Injection - 의존성 주입

 

18. DI의 장점

1. Dependency Reduction : 객체 상호 간 의존성 관계를 줄여준다.

2. Reusable Structure : 코드의 재사용과 조합이 용이하다.

3. Readability : 코드들이 분리되다보니 가독성이 뛰어나진다.

4. Loose Coupling & Easy to change : 구조는 변화에 민감하지 않을 수 있다.

 

19. DI의 종류

1. Field Injection(필드 주입) : 변수 선언부에 @Autowired Annotaion을 붙인다.

2. Setter Injection(수정자 주입) : set Method를 정의해서 사용한다.

3. Constructor Injection(생성자 주입) : Constructor에 @Autowired Annotation을 붙여 의존성을 주입받는다.

 

20. xml을 이용한 bean관리와 어노테이션을 이용한 bean관리의 장단점

xml을 이용한 bean 관리

단점

- 빈의 성격구분을 하기 힘들다.

- 어플리케이션의 크기가 커질수록 xml파일에 작성되는 빈의 양이 커진다.

어노테이션을 이용한 bean 관리

장점

- 개발자가 특별한 선언을 하지 않아도 Component 관련 애노테이션만을 붙여주면 auto-scan되어 빈이 등록되게 된다.

 

21. 의존성 주입 시 사용하는 어노테이션과, 그 밖에 스프링에서 사용한 어노테이션에 대한 설명

@Autowired 어노테이션을 붙여 의존성을 주입한다.

- @Controller : 스프링MVC에서 컨트롤러 객체임을 명시하는 어노테이션

- @RequestMapping : 특정 URL에 매칭되는 클래스나 메소드임을 명시하는 어노테이션

- @RequestParam : 요청(request)에서 특정한 파라미터 값을 찾아낼 때 사용하는 어노테이션

- @ResponseBody : 리턴 타입이 HTTP응답 메시지로 전송

- @RequestBody : 요청(request)문자열이 그대로 파라미터로 전달

- @Service : 서비스 객체

- @SessionAttribute : 세션상에서 모델의 정보를 유지하고 싶은 경우에 사용

 

22. 가장 인상 깊게 사용한 어노테이션과 그 이유

- @SessionAttribute : 세션상에서 모델의 정보를 유지하고 싶은 경우에 사용

사용자의 로그인 정보를 유지할 때 사용했습니다.

 

 

23. AOP란

어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것

 

24. 스프링 AOP의 특징

1. Spring은 프록시 기반 AOP를 지원한다.

- Spring은 타겟(target) 객체에 대한 프록시를 만들어 제공한다.

- 타겟을 감싸는 프록시는 실행시간(Runtime)에 생성된다.

- 프록시는 어드바이스를 타겟 객체에 적용하면서 생성되는 객체이다.

2. 프록시(Proxy)가 호출을 가로챈다(Intercept)

- 프록시는 타겟 객체에 대한 호출을 가로챈 다음 어드바이스의 부가기능 로직을 수행하고 난 후에 타겟의 핵심기능 로직을 호출한다.(전처리 어드바이스)

- 또는 타겟의 핵심기능 로직 메서드를 호출한 후에 부가기능(어드바이스)을 수행하는 경우도 있다.(후처리 어드바이스)

3. Spring AOP는 메서드 조인 포인트만 지원한다.

- Spring은 동적 프록시를 기반으로 AOP를 구현하므로 메서드 조인 포인트만 지원한다.

- 핵심기능(타겟)의 메서드가 호출되는 런타임 시점에만 부가기능(어드바이스)을 적용할 수 있다.

 

25. Advice의 종류 및 설명

After returning - target의 메소드 호출 이후에 적용

After throwing - target의 예외 발생 후 적용

After - target의 메소드 호출 후 예외의 발생에 관계없이 적용

Around - target의 메소드 호출 이전과 이후 모두 적용 (가장 많이 사용됨)

 

26. AOP에 사용하는 어노테이션

@Component

- 컴포넌트 어노테이션을 명시해 스프링 컨테이너가 객체 생성하도록 한다.

@Aspect

- 스프링 컨테이너에 AOP 담당 객체임을 알린다.

@Around

- 횡단관심사항의 대상 지정과 적용 시점을 지정한다. (pointcut, advice)

Before Advice - target의 메소드 호출 전에 적용

 

27. MVC 아키텍처의 각 계층별 역할

1. 프리젠테이션 계층(Presentation Layer)

- 프리젠테이션 계층은 말 그대로 사용자 인터페이스에 불과하다

2. 제어 계층(Control Layer)

- 제어 계층은 프리젠테이션 계층과 비즈니스 로직 계층을 분리하기 위한 컨트롤러를 제공한다.

 

3. 비즈니스 로직 계층(Business Logic Layer)

- 핵심 업무를 어떻게 처리하는지에 대한 방법을 기술하는 곳이다.

4. 퍼시스턴스 계층(Persistence Layer)

- 주로 데이터의 생성/수정/삭제/선택(검색)과 같은 CRUD 연산을 수행

5.. 도메인 모델 계층(Domain Model Layer)

- 각 계층 사이에 전달되는 실질적인 비즈니스 객체

 

28. 스프링의 장점 3가지(스프링 3요소) <이거 진짜 면접때 자주 물어봤음!

1. 경량(Lightweight)

- 스프링은 여러 개의 모듈로 구성되어 있으며, 각 모듈은 하나 이상의 JAR 파일로 구성됨. 몇 개의 JAR 파일만 있으면 개발과 실행이 가능

- 스프링 프레임워크가 POJO(Plain Old Java Object)형태의 객체를 관리함.(POJO는 클래스를 구현하는데 특별한 규칙이 없다.)

2. 제어의 역행(Inversion of Control)

- 비즈니스 컴포넌트 개발 시 낮은 결합도와 높은 응집도 요구됨

- IoC를 통해 객체 간의 느슨한 결합, 즉 낮은 결합도를 유지함

- 기존에는 어플리케이션 수행에 필요한 객체의 생성이나 의존관계를 개발자가 직접 처리했으나, IoC가 적용되면 컨테이너가 대신 처리함

- 소스에 의존관계가 명시되지 않으므로 결합도가 ᄄᅠᆯ어져서 유지보수가 편리햊미

3. 관점지향 프로그래밍(Aspect Oriented Programming, AOP)

- 메소드를 개발할 때 비즈니스 메소드마다 반복되는 공통로직을 분리함

- 공통로직은 외부의 클래스로 분리하고, 해당 기능을 프로그램 코드에 명시적으로 표시하지 않고 선언적으로 처리해 적용한다.

- 공통기능을 분리함으로써 응집도가 높은 비즈니스 컴포넌트를 만들 수 있고 유지보수를 혁신적으로 향상시킴



반응형
Comments