1. Servlet에 대해 답변해 보세요.
Servlet: 자바 플랫폼에서 웹 앱을 개발할 때 사용하는 핵심기술. 컨트롤러와 뷰의 역할 분담이 가능해진다. 자바 API를 모두 사용할 수 있으며 다양한 서버 환경에서 실행 가능하다. 스레드를 기반으로 한다.
Servlet Container: Servlet을 서버에서 실행하기 위한 서버 프로그램(서버는 서블릿 자체를 직접 실행할 수 없기 때문). JVM을 내장하고 있다.
2. 서블릿의 라이프 사이클에 대해 설명하세요.
init(): 컨테이너는 서블릿 인스턴스를 생성한 다음 init() 메소드를 호출한다. 이 메소드는 service()메소드 전에 실행되어야 한다. 클라이언트의 요청을 처리하기 전에 서블릿을 초기화할 기회를 주는것이다. 초기화할 코드가 있다면 init()메소드를 재정의 할 수 있다 (데이터베이스에 대한 접속, 다른 객체에 서블릿을 등록하는 등)
service(): 최초 클라이언트의 요청을 받았을때, 컨테이너는 새로운 스레드를 생성하거나 스레드 풀로부터 서블릿을 가져와서 서블릿의 service() 메소드를 호출한다. 클라이언트의 HTTP 메소드(GET, POST 등)를 참조하여 doGet() / doPost() 혹은 다른 메소드를 호출할지 판단한다. 재정의는 하지 않으며 doGet()/ doPost() 를 재정의하여 HttpServlet의 service()가 이를 실행하도록 한다.
doGet(), doPost(): service() 메소드가 클라이언트의 HTTP 메소드(GET, POST등) 를 참조하여 doGet()/ doPost()를 호출한다. 여기서 doGet()/ doPost() 만 언급하는 이유는 이것말고 나머지 메소드는 사용할 경우가 거의 없기 때문이다. 이 메소드 안에서 코딩작업을 하면된다. doGet()/ doPost() 둘중 하나는 반드시 재정의 해야 한다.
destroy(): 서블릿 엔진이 off될 때 호출되는 메소드. 서블릿 종료 시 모든 자원을 반납하는 작업을 수행한다.
3. CS 기반과 웹기반의 차이점은?
참고: [IT 기술면접 준비자료] 웹 아키택처와 WAS
2-Tier | 3-Tier | |
개발 편의성 측면 | 4GL 툴 등을 사용하여 작성 용이 함. | 보통 프리젠테이션 로직(주로 4GL로 개발)과 비즈니스/데이터 접근 로직(주로C/C++,COBOL 언어 사용)을 별도로 작성하므로 2-Tier에 비해 개발이 불편 함 |
확장성 측면 | 좋지 않음 | 이기종 H/W 증설 또는 이기종 데이터베이스가 구축되어도 데이터 정합성 보장할 수있어 확장성이 뛰어남. |
재사용성 측면 | 모든 로직이 클라이언트에 존재하고, 4GL 툴과 관련되므로 4GL 툴이 변경 시에 모든 로직을 재개발 하여야 함. | 동일한 비즈니스 로직을 필요로 하는 프리젠테이션 로직을 다양하게 구현할 수 있음.비즈니스 로직을 모듈화하여 클라이언트/서버 환경과 웹환경에서 동시에 사용 가능함. |
성능 측면 | 동시 사용자 수가 증가 함에 따라 성능이 급격히 저하 됨 | 동시 사용자 수가 증가해도 일정한 응답속도와 처리량을 보장 함 |
자원 활용 측면 | H/W 자원(CPU, 메모리 등)과 데이터베이스 자원을 비효율적으로 사용 함 | 미들웨어에서 부하 분산, 큐잉 메커니즘을통해 효율적으로 자원 활용 함 |
시스템 관리 측면 | 모니터링 및 관리가 용이하지 못함 | 처리되고 있는 어플리케이션 정보, 프로그램별 처리 건수 등 다양한 모니터링이 가능하여 관리 및 모니터링이 용이 함 |
4. TCP와 UDP의 비교
★ 같이보면 좋은 자료
[IT 기술면접 준비자료] 당신이 브라우저로 웹사이트에 접속할 때 일어나는 일들
특성/설명 | UDP | TCP |
일반 설명 | 단순하고, 빠르며, 애플리케이션이 네트워크 계층에 접근할 수 있도록 하는 인터페이스만 제공할 뿐 다른 것은 거의 하지 않음 | 애플리케이션이 네트워크 계층 문제를 걱정하지 않고 데이터를 안정적으로 송신할 수 있도록 하는, 풍부한 기능의 프로토콜 |
연결 | 비연결형. 연결 수립이 없이 데이터를 송신함 | 연결형. 전송 전에 연결을 먼저 맺어야 한다. |
신뢰성 | 신뢰성이 없음. 승인이 없는 최선 노력 전송 방식 | 메시지 전송을 신뢰할 수 있음. 모든 데이터에 대한 승인이 있음 |
재전송 | 수행하지 않음. 애플리케이션은 손실 데이터를 탐지하고 필요할 경우 재전송해야 함 | 모든 데이터 전송을 관리하며, 손실된 데이터는 자동으로 재전송함 |
데이터 흐름 관리 | 없음 | 슬라이딩 윈도우를 이용한 흐름 제어를 함. 혼잡 회피 알고리즘을 사용함 |
부하 | 매우 낮음 | 낮지만 UDP 보다는 높음 |
전송 속도 | 매우 빠름 | 빠르지만 UDP 만큼은 아님 |
적합한 데이터 양 | 소형에서 중형 데이터(최대 수백 바이트) | 소형에서 초대형 데이터까지(최대 수 기가 바이트) |
애플리케이션의 유형 | 데이터의 완전성보다 전달 속도가 중요하고, 소량의 데이터를 송신하고, 멀티캐스트/브로트캐스트를 사용하는 애플리케이션 | 신뢰할 수 있는 방법으로 데이터를 송신해야 하는 대부분의 프로토콜과 애플리케이션. 대부분의 파일/메시지 전송 프로토콜을 포함함 |
사용 예 | 멀티미디어 애플리케이션, DNS, BOOTP, DHCP, TFTP, SNMP, RIP, NFS(초기버전) | FTP, Telnet, SMTP, DNS, HTTP, POP, NNTP, IMAP, BGP, IRC, NFS(나중버전) |
5. OSI(Open Systems Interconnection)계층을 설명해 보세요.
컴퓨터 네트워크 프로토콜 디자인을 7개의 계층으로 구분한 것. 실제 인터넷에서 사용되는 TCP/IP는 OSI모델을 기반으로 구성되어있다.
Physical Layer: 실제 장치들을 연결하기 위한 전기적, 물리적 세부사항을 정의
Data link Layer: 점대점(Point to Point)간 신뢰성 있는 전송(오류제어, 흐름제어)을 보장하기 위한 계층. 주소 값은 물리적으로 할당 받는다 (MAC주소)
Network Layer: 여러 개의 노드를 거칠 때 경로를 찾아주는 역할. 이 과정에서 Transport Layer가 요구하는 서비스 품질을 제공.
Transport Layer: 양 끝단(End to End) 사용자들이 신뢰성 있는 데이터를 주고 받을 수 있도록 해줌(오류검출, 흐름제어, 중복검사). 상위 계층이 데이터 전달의 유효성이나 효율성을 생각할 필요가 없게 한다.
Session Layer: 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공. TCP/IP 세션을 생성 및 삭제하는 책임이 있다.
Presentation Layer: 코드간의 번역을 담당. 입력 또는 출력되는 데이터를 하나의 표현 형태로 변환하여 상위계층의 부담을 덜어준다.
Application Layer: 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행한다.
6. Spring Framework 특징
POJO(Plain-old java object): 말 그대로 평범한 자바 오브젝트이다. 기존의 EJB의 단점을 극복하고 장점은 그대로 취하는 방법이다.
DI(Dependency Injection): 의존하는 객체를 직접 생성하지 않고 전달 받는 방식을 의미한다. 이는 코드 재사용성을 높이고, 결합도를 낮출 수 있다. Spring에서는 DI를 자동으로 할 수 있는 기능이 있다.
관점지향프로그래밍(Aspect Oriented Programming): 여러 객체에 공통으로 적용할 수 있는 기능을 구분함으로써 재사용성을 높여주는 프로그래밍 기법. 스프링에서는 트랜젝션이나 로깅, 보안과 같은 여러 모듈에서 공통적으로 사용하는 기능의 경우 분리하여 관리할 수 있다.
출처: https://preamtree.tistory.com/42?category=863450 [Preamtree의 행복로그]
'Study > 기술면접' 카테고리의 다른 글
[기술면접] CS 기술면접 질문 - 프로그래밍 공통 (1/8) (0) | 2021.08.12 |
---|---|
[기술면접] CS 기술면접 질문 - 데이터베이스 (6/8) (0) | 2021.08.12 |
초보 웹 개발자를 위한 학습 안내서 (0) | 2021.08.11 |
IT/기술면접 - 브라우저로 웹사이트에 접속할 때 일어나는 일들 (DNS) (0) | 2021.08.11 |
IT/기술면접 - 웹 아키택처와 WAS(Wep Application Server) (0) | 2021.08.11 |