soft IT life
'웹 개발자' 기술면접 예상 질문1 본문
1. 웹 브라우저의 동작 원리에 대해서 설명해주세요.
사용자가 원하는 자원(글, 이미지 등)을 서버에 요청(URI)하고 서버측에서는 요청을 파싱하여 해당 데이터를 가공하여 브라우저에 response하여 이를 표시하는 과정입니다.
- 사용자가 URL 입력 또는 링크 클릭
- 웹 브라우저는 사용자가 입력한 URL 또는 클릭한 링크를 받아옵니다.
- DNS(Domain Name System) 조회
- 브라우저는 입력된 URL의 호스트 이름을 IP 주소로 변환하기 위해 DNS 조회를 수행합니다.
- 서버와의 TCP 연결
- 브라우저는 해당 IP 주소로 TCP 연결을 수립하여 웹 서버에 요청을 보낼 준비를 합니다.
- HTTP 요청 전송
- TCP 연결이 수립되면 브라우저는 HTTP 요청 메시지를 웹 서버로 전송합니다. 이 요청 메시지는 HTTP 메서드(GET, POST, 등)와 요청 헤더, 요청 본문 등으로 구성됩니다.
- 웹 서버 처리
- 웹 서버는 받은 HTTP 요청을 처리하고, 요청에 맞는 리소스(HTML, CSS, JavaScript 파일 등)를 찾아서 응답으로 전송합니다.
- HTTP 응답 수신
- 브라우저는 웹 서버로부터 받은 HTTP 응답 메시지를 처리합니다. 이 응답 메시지는 상태 코드, 응답 헤더, 응답 본문 등으로 구성됩니다.
- 브라우저 랜더링
- 브라우저는 HTML, CSS, JavaScript 등의 리소스를 파싱하여 DOM(Document Object Model) 트리와 CSSOM(CSS Object Model) 트리를 구성합니다. 이후 이 두 트리를 결합하여 랜더 트리(Render Tree)를 생성합니다.
- 랜더링 엔진
- 생성된 랜더 트리를 사용하여 브라우저 창에 실제로 웹 페이지를 그립니다. 이 단계에서 화면에 보이는 웹 페이지가 구성됩니다.
- 자바스크립트 실행
- 브라우저는 웹 페이지의 자바스크립트 코드를 실행합니다. 이를 통해 동적인 기능이 추가되며, 사용자와의 상호작용이 이루어집니다.
*랜더링
- 브라우저가 서버로 부터 받아온 웹 페이지의 HTML, CSS, JavaScript 코드를 파싱하여 웹 페이지에 구성하는 것.
- 랜더링 과정은 페이지가 로딩되거나, 사용자와 상호작용하여 페이지가 변할 때마다 반복적으로 수행된다.
- HTML파싱하여 DOM트리 생성 -> CSS파싱하여 DOM트리에 스타일 적용 -> DOM트리 레이아웃 & 페인팅
*DOM(Document Object Model)
- 웹 페이지의 구조를 나타내는 트리 구조로, HTML 요소들과 그들의 관계를 표현한다.
*W3C(World wide web Consortium) 웹 표준화 기구
- 웹 브라우저의 호환성 및 표준화를 위하여 웹 관련 표준 명세를 제정하는 곳.
*서버 사이드 랜더링 & 클라이언트 사이드 랜더링
- 서버 사이드 랜더링
- 일반적인 HTML, CSS, JavaScript를 이용한 웹 페이지는 서버 사이드 랜더링이다.
- 서버에서 직접 HTML과 같은 View 코드를 구성하여 클라이언트에 전송하는것.
- Req&Res가 반드시 필요하기때문에(서버에서 데이터 처리하여 HTML을 생성하기 때문에) 사용자와 상호작용이 있을 때마다 서버로 Req를 보내 새로운 HTML을 Res 해야한다. 이로인해 느리고 부드럽지 못하다.
- But, 이를 해결하기 위해 Ajax를 사용하여 비동기 요청을 보내 데이터만 주고 받아 조금 더 신속한 업데이트를 구현할 수 있다.
- 클라이언트 사이드 랜더링
- React는 JavaScript의 라이브러리로써 웹 페이지의 렌더링을 브라우저에서 바로 처리한다.
- 서버에서는 단순 초기 페이지만 제공하고, 이후의 상호작용과 View 업데이트는 브라우저에서 JS를 통해 처리한다.
- 가상 DOM을 사용하여 브라우저의 실제 DOM과 동기화하며 변경 사항을 최소화 한다.
- SPA (Single Page Application): 새로운 페이지의 리로딩이 필요없음
2.MVC 모델 Architecture에 대해 설명해주세요.
- 사용자로부터 Requset가 들어오면 서버 사이드의 Dispatcher Servlet에서 요청을 받고, Handler Mapping을 통해 해당 요청을 파싱한다.
- 파싱된 요청을 Controller로 전송하고 Controller에서는 해당 요청에 필요한 Data를 가져오기 위해 Business Layer로 전송한다.
- Model에 해당하는 Business Layer에서는 Data를 가져오기 위해 DB에 접근한다.(Service, Dao)
- 데이터를 가져와 Controller에서는 해당 데이터를 Model로 가공하여 View로 전송한다.
- View에서는 전달받은 Model과 HTML요소들을 사용해 화면에 출력될 페이지를 만든다.
- 완성된 View를 클라이언트에 Response 한다.
*Handler Mapping
- 클라이언트측으로부터 전송된 Request URL을 어떤 Controller가 처리해야 할 지 찾아서 Dispatcher Servlet에 전달해주는 역할
- Controller에서 URL을 Mapping 시키기위해 @RequestMapping 어노테이션을 사용하는데, Handler가 이를 찾아주는 역할을 한다.
3.TCP/IP란 무엇인가요?
TCP/IP는 인터넷에서 데이터를 전송하기 위한 프로토콜 집합입니다. "TCP"는 전송 제어 프로토콜(Transmission Control Protocol)을 의미하며, "IP"는 인터넷 프로토콜(Internet Protocol)을 의미합니다.
TCP/IP는 인터넷에서 데이터를 패킷으로 분할하여 전송하고, 수신 측에서 다시 이를 재조립하여 정확한 데이터를 전달하는 역할을 합니다. 이 프로토콜 집합은 클라이언트와 서버 간의 통신을 가능케 하고, 여러 개의 컴퓨터와 네트워크 간의 상호 작용을 지원합니다.
TCP/IP 프로토콜은 인터넷에서 가장 널리 사용되는 프로토콜 집합으로서, 웹 브라우징, 이메일, 파일 전송, 온라인 채팅 등 다양한 인터넷 서비스와 어플리케이션에서 사용됩니다. 또한, TCP/IP는 인터넷의 기반 프로토콜이므로 전 세계의 컴퓨터와 네트워크가 이를 사용하여 상호 연결되고 데이터를 주고받을 수 있습니다.
4. HTTP Protocol에 대해서 설명해주세요.
- 웹 브라우저와 웹 서버간에 데이터를 Request 하고 Response하기 위한 통신 규약이다.
- 헤더와 본문으로 구성되며 헤더에는 Req or Res의 메타데이터를 담고, 본문은 실제 데이터를 담는다.
-
- 클라이언트가 서버에 HTTP 요청을 보냅니다. 요청은 메서드(GET, POST, PUT, DELETE 등), 요청 URI(Uniform Resource Identifier), HTTP 버전 등으로 구성됩니다.
- 서버는 클라이언트의 요청을 받고, 해당 요청을 처리합니다. 요청에 따라서 서버는 필요한 리소스를 찾아서 응답을 생성합니다.
- 서버는 HTTP 응답을 클라이언트에 보냅니다. 응답은 상태 코드(200, 404, 500 등), 응답 헤더, 응답 본문으로 구성됩니다. 상태 코드는 요청의 성공 여부를 나타내며, 응답 헤더는 응답에 대한 메타데이터를 포함합니다.
- 클라이언트는 서버로부터 받은 응답을 처리하여 웹 페이지를 렌더링하거나, 이미지를 표시하거나, 다른 동작을 수행합니다.
HTTP는 상태를 유지하지 않는(stateless) 프로토콜로서, 각각의 요청은 독립적으로 처리됩니다. 따라서 클라이언트가 서버에 여러 번의 요청을 보낼 때마다 서버는 이전 요청과 아무런 관계가 없다고 간주합니다. 이로 인해 HTTP는 세션과 쿠키 등을 사용하여 상태를 유지하는 메커니즘을 사용하여 사용자 상태를 관리합니다.
HTTPS는 HTTP의 보안 버전으로서, 데이터를 암호화하여 보안성을 강화합니다. HTTPS는 SSL 또는 TLS 프로토콜을 사용하여 통신을 암호화하므로 데이터가 제3자로부터 안전하게 전송됩니다. 일반적으로 인증이 필요한 웹 페이지, 온라인 결제, 개인정보 입력과 같은 경우 HTTPS를 사용하여 보안을 유지합니다.
5. JSP가 무엇인지 설명해주세요.
- Java Server Pages
- Java를 이용한 서버 사이드 템플릿 엔진이다.
- 실행되면 javax.servlet.http.HttpServlet 클래스를 상속받은 Java 소스 코드로 변환한 다음 컴파일 되어 실행된다.
- 이 JSP파일을 Servlet 클래스로 변환하고 실행시켜 주는 역할을 하는 것을 Servlet Container라고 한다. 대표적인 웹 컨테이너로 Tomcat이 있다.
'기타' 카테고리의 다른 글
'웹 개발자' 기술면접 예상 질문3 (0) | 2023.08.22 |
---|---|
'웹 개발자' 기술면접 예상 질문2 (0) | 2023.08.08 |
세계 11개국 시총 1위 기업 (0) | 2023.04.22 |
AIaaS 04.17 월 (0) | 2023.04.17 |
인공지능 (0) | 2023.04.14 |