면접예상질문 - 웹서버와 WAS, 자료구조(Stack, Queue, Array, Linked List)

이지섭·2023년 6월 8일
0

웹 서버와 WAS의 차이는?

  • 웹 서버는 클라이언트가 웹 브라우저로 특정 페이지 요청을 하면
    HTML, CSS, JS, img, file 등 정적 컨텐츠를 즉시 제공해주는 서버입니다.
    동적 컨텐츠를 요청받으면 해당 요청을 WAS로 넘겨주게 되고,
    WAS로부터 받은 응답을 다시 클라이언트에게 전달해줍니다.
    대표적인 웹 서버로는 Apache Web Server가 있습니다.
  • WAS는 HTTP 프로토콜을 통해 애플리케이션을 수행해주는 미들웨어로서, 주로 데이터베이스 서버와 같이 수행하여 데이터를 조회하거나 변경하는 동적 컨텐츠를 처리합니다.
    JSP, Servlet을 제공해주기 때문에 웹 컨테이너, 서블릿 컨테이너 라고도 불립니다.
    대표적인 WAS로는 Tomcat이 있습니다.
  • 용도에 따라 웹서버와 WAS로 각각 기능을 분리시켜서 서버 부하를 방지할 수 있습니다.

Stack과 Queue 그리고 Array와 Linked List 자료구조에 대해 말씀해주시고 차이점에 대해 설명해주세요.

  • Stack은 push와 pop 연산을 통한 LIFO, Last In First Out 방식의 자료구조입니다.
    웹 브라우저 뒤로가기나 실행 취소 등
    마지막에 들어온 데이터를 먼저 처리해야 하는 경우 사용합니다.
  • Queue는 put과 get 연산을 통한 FIFO, First In First Out 방식의 자료구조입니다.
    고객 대기열, 메시지 처리와 같이
    데이터를 들어온 순서대로 순차적으로 처리해야 하는 경우 사용합니다.
  • Array는 주로 Stack 영역에 할당된 메모리 공간에 데이터를 연속으로 저장하는 자료구조입니다.
    인덱스만 알면 특정 위치의 값을 빠르게 가져올 수 있고, 데이터의 연속적인 처리에 유리합니다.
    하지만 데이터 삽입이 많아서 초기에 선언했던 Array의 크기를 초과하는 경우,
    들어온 데이터를 버리거나 아니면 새 Array를 만들어 기존 내용을 전부 옮겨야 하고,
    Array 내에서 데이터 추가 삭제 시 데이터의 순서 유지를 위해 O(N)의 속도로 모두 한칸씩 옮겨야 하는 등 단점이 있습니다.
  • Linked List는 배열과 달리 Heap 영역에 데이터들이 서로 다른 메모리 공간상에 분산되어 존재하지만
    각 노드를 포인터로 연결하여 순차적으로 탐색이 가능하도록 만든 자료구조입니다.
    때문에 정해진 크기가 없으므로 데이터를 계속해서 추가가 가능하고,
    데이터 추가삭제 시 O(1)의 속도로 특정 데이터만 삭제하고 앞 뒤 노드를 다시 연결만 해주면 되므로 데이터 추가 삭제가 빈번한 경우 유리합니다.
    하지만 Array와 달리 특정 인덱스만으로 빠른 접근이 불가능하고 Head에서부터 순차적인 탐색만 가능하여 조회 속도가 O(N)으로 상대적으로 느린 단점이 있습니다.

예상 꼬리질문 키워드

  • Web Container
  • JSP, Servlet
  • Overflow
  • Linked List를 활용한 자료구조 종류
  • Tree

메모

asdf

profile
Stop thinking. Just do it.

0개의 댓글

관련 채용 정보