티스토리 뷰
기술면접에 대비하여 정리한 내용 중, 하나의 포스팅으로 제작하기에는 내용이 짧거나, 상세히 작성이 어려워(나의 능력부족) 포스팅으로 작성하지 못한 질문 모음.
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, 메모리 등)과 데이터베이스 자원을 비효율적으로 사용 함 |
미들웨어에서 부하 분산, 큐잉 메커니즘을통해 효율적으로 자원 활용 함 |
시스템 관리 측면 |
모니터링 및 관리가 용이하지 못함 |
처리되고 있는 어플리케이션 정보, 프로그램별 처리 건수 등 다양한 모니터링이 가능하여 관리 및 모니터링이 용이 함 |
특성/설명 |
UDP |
TCP |
일반 설명 |
단순하고, 빠르며, 애플리케이션이 네트워크 계층에 접근할 수 있도록 하는 인터페이스만 제공할 뿐 다른 것은 거의 하지 않음 |
애플리케이션이 네트워크 계층 문제를 걱정하지 않고 데이터를 안정적으로 송신할 수 있도록 하는, 풍부한 기능의 프로토콜 |
연결 |
비연결형. 연결 수립이 없이 데이터를 송신함 |
연결형. 전송 전에 연결을 먼저 맺어야 한다. |
신뢰성 |
신뢰성이 없음. 승인이 없는 최선 노력 전송 방식 |
메시지 전송을 신뢰할 수 있음. 모든 데이터에 대한 승인이 있음 |
재전송 |
수행하지 않음. 애플리케이션은 손실 데이터를 탐지하고 필요할 경우 재전송해야 함 |
모든 데이터 전송을 관리하며, 손실된 데이터는 자동으로 재전송함 |
데이터 흐름 관리 |
없음 |
슬라이딩 윈도우를 이용한 흐름 제어를 함. 혼잡 회피 알고리즘을 사용함 |
부하 |
매우 낮음 |
낮지만 UDP 보다는 높음 |
전송 속도 |
매우 빠름 |
빠르지만 UDP 만큼은 아님 |
적합한 데이터 양 |
소형에서 중형 데이터(최대 수백 바이트) |
소형에서 초대형 데이터까지(최대 수 기가 바이트) |
애플리케이션의 유형 |
데이터의 완전성보다 전달 속도가 중요하고, 소량의 데이터를 송신하고, 멀티캐스트/브로트캐스트를 사용하는 애플리케이션 |
신뢰할 수 있는 방법으로 데이터를 송신해야 하는 대부분의 프로토콜과 애플리케이션. 대부분의 파일/메시지 전송 프로토콜을 포함함 |
사용 예 |
멀티미디어 애플리케이션, DNS, BOOTP, DHCP, TFTP, SNMP, RIP, NFS(초기버전) |
FTP, Telnet, SMTP, DNS, HTTP, POP, NNTP, IMAP, BGP, IRC, NFS(나중버전) |
'IT > 기술면접' 카테고리의 다른 글
[JAVA] String, StringBuilder, StringBuffer에 대하여 (0) | 2017.10.05 |
---|---|
[JAVA] try-catch-finally 구문(block)에 대한 소개 (0) | 2017.09.25 |
[IT 기술면접 준비자료] 신입 SW개발자 기술면접 예상 질문 모음 1 (0) | 2017.04.02 |
[IT 기술면접 준비자료] 웹 아키택처와 WAS(Wep Application Server) (0) | 2017.03.19 |
[IT 기술면접 준비자료] C++와 JAVA의 비교 (2) | 2017.03.05 |