[기술면접 스터디] 웹 서버와 WAS의 차이, Stack/Queue 그리고 Array/Linked List

rara_kim·2023년 2월 28일
0

기술면접

목록 보기
6/9

웹 서버와 WAS의 차이점에 대해 설명해주세요.

이 둘의 가장 큰 차이점은 "동적인 컨텐츠를 다룰 수 있는가?" 이다.
웹서버는 처리할 수 있는 데이터가 html, css, 이미지 등 정적인 데이터로 한정되며, 정적인 데이터가 아닌 동적인 컨텐츠까지도 쓰기 위해서는 WAS가 필요하다.

WAS(Web Application Server)는 웹 서버에 웹 컨테이너를 붙인 형태이다.
WAS를 사용해서 클라이언트가 서버로부터 데이터를 받는 방식은 아래과 같다.

  1. 클라이언트가 웹 서버에 데이터를 요청
  2. 웹 서버에서는 동적 컨텐츠인지를 확인
         2-1 동적 컨텐츠라면 웹 컨테이너로 전송
         2-2 정적 컨텐츠라면 클라이언트에게 데이터를 전송
  3. 동적 컨텐츠를 전송받은 웹 컨테이너는 Servelet 구동환경을 제공
  4. 제공받은 환경에서 동적 컨텐츠를 생성하고 이를 웹서버에 전달
  5. 넘겨받은 동적 컨텐츠를 클라이언트에게 전송



Stack 과 Queue 그리고 Array 와 Linked List에 대해 설명해주세요.

Stack 과 Queue

Stack은 한 쪽 끝에서만 자료를 넣고 뺄 수 있는 후입선출(LIFO) 형식의 자료구조 이다.
Stack은 가장 최근에 들어온 자료를 가리키는 TOP을 통해서만 접근할 수 있으며, 후입선출을 따르기 때문에 가장 최근에 삽입된 데이터가 가장 먼저 삭제되는 특징이 있다.

Queue의 경우 Stack과는 달리 한 쪽 끝에서 삽입, 다른 쪽 끝에서 삭제 작업이 이루어진다.
먼저 들어온 데이터가 먼저 삭제되는 선입선출(FIFO) 방식으로 동작하는데, 이때 삭제 연산만 수행되는 곳을 프론트(Front), 삽입 연산만 이루어지는 곳을 리어(Rear)라고 하며 각각의 연산작업만 수행된다.

Array(배열) 와 Linked List

배열은 특정 크기만큼 연속된 메모리 공간에 데이터를 저장하는 정적 자료구조 이다.
배열을 만들기 위해서는 미리 크기를 정하는데, 해당 크기만큼 연속된 메모리 주소를 할당받게 된다.
연속된 메모리 주소를 할당받고 있기 때문에 배열의 데이터는 인덱스라는 것을 갖게 되고 이는 접근과 탐색에 용이하다. 하지만 크기를 미리 정해 놓았기 때문에 수정하는 것은 불가능하며 해당 배열 크기 이상의 데이터를 저장할 수 없다는 단점이 있다.

링크드리스트는 배열과 다르게 연속된 메모리 공간에 저장되어 있지 않고 각각의 데이터가 메모리 공간 상에 고유한 노드로 존재하는 동적 자료구조 이다. 그리고 이 노드는 자신의 앞뒤에 있는 데이터에 대한 주소를 기억하고 있다.
하지만 배열과는 다르게 노드는 연속된 메모리 공간에 존재하지 않고 모두가 떨어져 있기 때문에, 특정 데이터를 조사하기 위해서는 처음부터 순차적으로 탐색해야 한다는 차이점이 있다.

profile
느리더라도 꾸준하게

0개의 댓글