본문 바로가기

전체 글377

[네트워크] HTTP 메서드와 Restful API 면접 질문 및 답변 정리 HTTP 요청 메시지에 포함된 필드를 알고 있는 대로 말씀해주세요. 더보기 HTTP 요청 메서지에는 URL 경로, HTTP 메서드, HTTP 버전, User-Agent, Content-type, Accept-Language, Accept-Encoding 등의 필드가 존재합니다. HTTP 메서드는 무엇인가요? 더보기 HTTP 메서드는 웹 상에서 데이터를 어떻게 주고받고 수행하도록 할지를 결정합니다. GET, POST, PUT, DELETE 등의 메서드가 존재합니다. GET과 POST 차이에 대해 설명해주세요. 더보기 GET은 URL 경로에 데이터를 담아 전송합니다. 데이터가 노출되어 전달되기 때문에, 단순한 게시판 조회 같은 기능에서 파라미터에 게시판 번호를 담아 요청합니다. POST는 HTTP 바디에 데.. 2024. 3. 13.
[알고리즘] 그리디 알고리즘이란? (크루스칼 알고리즘, 프림 알고리즘, 다익스트라 알고리즘) 목차 그리디 알고리즘이란? 그리디 알고리즘 정당성 그리디 알고리즘 종류 그리디 알고리즘 예시 그리디 알고리즘과 DP 비교 1. 그리디 알고리즘이란? 그리디 알고리즘은 현재 이 순간에서 가장 최적의 해를 선택하는 알고리즘이다. 앞으로 진행될 선택에 끼칠 영향을 고려하지 않고 매 순간 선택에서 현재가 항상 최적의 해를 가져야 하기 때문에, 욕심쟁이 알고리즘이라고도 부른다. 현재 문제에서 가질 수 있는 최적의 해를 선택하면 다음 부분적인 문제에 대한 선택이 이뤄진다. 다시 말해, Top-Down 방식으로 더 작은 문제에 대한 최적의 해를 선택하고, 한번 선택된 결정은 다시 번복할 수 없다. 이러한 이유로 부분 문제는 최적의 해를 가지지만, 모든 전체 문제에서 최적의 해를 가진다고 말할 수 없다. 2. 그리디 .. 2024. 3. 8.
[네트워크] HTTP와 HTTPS, HTTP 헤더 면접 질문 및 답변 정리 HTTP와 HTTPS에 대해 설명해주세요. 더보기 HTTP는 웹 상에서 서버와 클라이언트 사이에 데이터를 전달할 때 사용되는 프로토콜입니다. HTTP는 데이터를 평문으로 전달하기 때문에 보안에 취약하다는 단점을 가지고 있는데, 이를 개선한 방식이 HTTPS입니다. HTTPS는 SSL 인증서를 이용해 데이터의 암호화를 제공하고 있으며, CA라는 서드파티에게 SSL 인증서를 검증함으로써 클라이언트는 서버의 신뢰성을 확인하고 공개키를 전달받을 수 있습니다. HTTP와 HTTPS는 각각 몇 번 포트를 이용하나요? 더보기 HTTP는 80번 포트, HTTPS는 443번 포트를 이용합니다. HTTP 요청 헤더에 있는 필드를 아는 대로 말씀해주세요. 더보기 HTTP 요청 헤더에는 제일 위쪽 URL경로, HTTP 메서드.. 2024. 3. 7.
[네트워크] TCP 3-way handshake 면접 질문 및 답변 정리 TCP 3-way handshake란 무엇이죠? 더보기 3-way handshake는 TCP는 연결지향형 프로토콜로, 두 엔드포인트 간의 연결을 이룬 후에 에러 제어, 흐름 제어, 혼잡 제어 등의 기능을 제공합니다. 이때 TCP 연결을 이루는 과정을 3-way handshake라고 합니다. 이와 반대로 TCP 연결을 끊는 과정은 4-way handshake라고 하고 부릅니다. TCP 3-way handshake 과정을 설명해주세요. 더보기 3-way handshake는 TCP 연결을 위한 과정을 3단계로 나눈 것입니다. 우선 클라이언트가 서버에 SYN 패킷을 보냅니다. 그다음 SYN 패킷을 받은 서버는 연결을 허가하기 위해 SYN+ACK 패킷을 담아 클라이언트로 보냅니다. 이로써 서버와 클라이언트는 TC.. 2024. 3. 7.
[네트워크] 대칭키와 공개키 암호화 방식과 종류 (SSL이란, 대칭키 공개키 장단점 및 차이, 공개키 암호화만 부인방지 기능을 제공할 수 있는 이유) 목차 SSL (Secure Socket Layer)이란 대칭키 암호화 방식 공개키 암호화 방식 대칭키와 공개키 차이 공개키 암호화만 부인방지 기능을 제공할 수 있는 이유 1. SSL (Secure Socket Layer)이란 SSL은 Secure Socket Layer의 약자로, 네트워크 상에서 데이터에 대한 도청, 간섭, 위조 등을 막기 위해 사용한다. 공인된 제 3자가 보증해주는 SSL 인증서를 이용해 암호화가 이뤄지며, 인증서에는 서버 측 공개키에 관한 정보와 서비스에 관한 정보가 들어있다. SSL을 사용하는 대표적인 프로토콜로 HTTPS가 있다. 클라이언트가 서버에 접속하면 SSL 인증서를 전달하는데, 이 인증서를 통해 클라이언트는 서버가 신뢰할 수 있는 사이트인지를 확인하고, CA의 공개키를 이.. 2024. 3. 7.
[자료구조] 스택, 큐, 힙 차이 (+ 배열과 연결 리스트를 이용한 구현 차이) 목차 스택 개념과 활용 큐 개념과 활용 힙 개념과 활용 배열과 연결리스트를 이용한 구현 차이 1. 스택 스택은 LIFO 방식의 자료구조로, 나중에 들어온 원소가 가장 먼저 제거된다. 리스트의 한쪽 끝에서 삽입, 삭제가 이뤄지며, 가장 마지막으로 실행한 동작을 가져와야 할 때 사용된다. 스택에서 가장 위쪽에 있는 값을 top이라고 하며, 원소 삽입, 삭제 시에 top을 가리키는 값이 변화된다. (사용 예시) 웹사이트 방문 기록 ctrl+z 실행 취소 함수 호출 (관련 함수 - 자바) push(x) : 스택의 가장 위쪽에 x라는 원소 삽입 pop() : 스택의 가장 위쪽에 원소 삭제 peek() : 스택의 가장 위쪽에 원소 읽기 isEmpty() : 스택이 비어있으면 true, 비어있지 않으면 false 반.. 2024. 3. 6.
[자료구조] 트리 개념과 종류 (이진 탐색 트리, 트리 응용) 목차 트리란? 트리 종류 편향 트리 (Skew Tree) 이진 트리 (Binary Tree) 완전 이진 트리 (Complete Binary Tree) 포화 이진 트리 (Perfect Binary Tree) 전 이진 트리 (Full Binary Tree) 이진 탐색 트리 (Binary Search Tree, BST) 트리 응용 1. 트리란? 트리는 데이터의 계층적 구조를 노드로 표현한 자료구조이다. 가장 상위 노드를 루트 노드라고 부르며, 하나의 루트 노드를 기준으로 가지처럼 뻗어져 나가는 형태를 지닌다. (특징) 트리는 그래프의 한 종류이며, 최소 연결 트리라고도 부른다. 노드와 노드를 연결하는 간선으로 구성되며, 노드 N개인 트리는 항상 N-1개의 간선을 갖는다. 노드 사이의 경로에는 순환하는 사이클이.. 2024. 3. 1.
[알고리즘] 퀵 정렬 (Quick Sort, 개념과 장단점, 과정, 자바 코드 구현, 시간복잡도, 공간복잡도) 목차 퀵 정렬이란? 퀵 정렬 과정 퀵 정렬 구현 (자바 코드) 시간복잡도 공간복잡도 정렬 알고리즘 비교 1. 퀵 정렬이란? 피벗을 기준으로 왼쪽은 피벗보다 작은 값, 오른쪽은 피벗보다 큰 값을 가질 수 있도록 값을 이동시킨다. 분할과 동시에 정렬이 이뤄지며, 분할된 배열의 크기가 1이 되면 정렬이 완료된다. (특징) 최선 및 평균 시간복잡도는 O(n log(n))이며, 최악의 시간복잡도는 O(n^2)이다. O(n log(n))의 시간복잡도를 가지는 병합 정렬보다 상대적으로 속도가 빠르다. JAVA의 Arrays.sort()에서 사용되는 정렬 알고리즘이다. (장점) 배열 내에서 교환하는 방식(제자리 정렬)으로 추가적인 메모리 공간을 필요로 하지 않는다. 다른 알고리즘과 비교했을 때도 가장 빠르다. (단점).. 2024. 2. 28.
[알고리즘] 합병 정렬 (Merge Sort, 개념과 장단점, 과정, 자바 코드 구현, 시간복잡도, 공간복잡도) 목차 합병 정렬이란? 합병 정렬 과정 합병 정렬 구현 (자바 코드) 시간복잡도 공간복잡도 정렬 알고리즘 비교 1. 합병 정렬이란? 하나의 배열을 두 개의 균등한 배열로 분할해 정렬하고, 두 배열을 다시 합하여 정렬한다. 큰 문제를 작은 단위의 문제들로 쪼개어 해결해가는 방식인 분할 정복을 이용한 정렬 알고리즘이다. (특징) 배열을 이용할 경우 추가적인 메모리가 필요하지만, 연결리스트를 이용할 경우에는 필요하지 않다. 최선, 평균, 최악의 시간복잡도는 모두 O(n log(n))이다. (장점) 연결리스트를 이용할 경우, 링크 인덱스만 변경하면 되므로 이동 연산이 줄어든다. (추가적인 메모리 필요 X) 퀵 정렬과 비교했을 때 데이터 분포에 영향을 받지 않는다. (단점) 배열을 이용할 경우, 추가적인 메모리(임.. 2024. 2. 28.