[CS] 면접 대비

HyeJi9908·2022년 8월 1일
0

CS 공부

목록 보기
1/1

1. 자료구조

📌 Array vs LinkedList

Array는 메모리 상에서 연속적으로 데이터를 저장하는 자료구조 입니다.
Linked List는 메모리상에서는 연속적이지 않지만, 각각의 원소가 다음 원소의 메모리 주소값을 저장해 놓음으로써 논리적 연속성을 유지합니다.

데이터 조회는 Array의 경우 O(1)O(1), Linked list는 O(n)O(n)로, Array가 더 빠릅니다.
삽입/삭제는 Array O(n)O(n), Linked list O(1)O(1)로, LinkedList가 더 빠릅니다.

따라서 얼마만큼의 데이터를 저장할지 미리 알고있고, 조회를 많이 한다면 Array를 사용하는 것이 좋습니다. 반면에 몇개의 데이터를 저장할 지 불확실하고 삽입 삭제가 잦다면 Linked list를 사용하는 것이 유리합니다.

📌 Stack / Queue / Priority Queue

stack은 후입선출 LIFO(Last In First Out)의 자료구조입니다. 시간복잡도는 push O(1)O(1) , pop O(1)O(1) 입니다. 활용 예시는 후위 표기법 연산, 괄호 유효성 검사, 웹 브라우저 방문기록(뒤로 가기), 깊이우선탐색(DFS) 등이 있습니다.

queue는 선입선출 FIFO(First In First Out)의 자료구조입니다. 시간복잡도는 enqueue O(1)O(1) , dequeue O(1)O(1) 입니다. 활용 예시는 Cache구현, 프로세스 관리, 너비우선탐색(BFS) 등이있습니다.

Queue 자료구조는 시간 순서상 먼저 집어 넣은 데이터가 먼저 나오는 선입선출 FIFO(First In First Out)구조로 저장하는 형식입니다. 이와 다르게 우선순위큐(priority queue)는 들어간 순서에 상관없이 우선순위가 높은 데이터가 먼저 나옵니다.
Queue의 operation 시간복잡도는 enqueue O(1)O(1), dequeue O(1)O(1)이고,
Priority queue는 push O(logn)O(logn) , pop O(logn)O(logn) 입니다.

📌 HashTable

hash table은 효율적인 탐색(빠른 탐색)을 위한 자료구조로써 key-value쌍의 데이터를 입력받습니다. hash function hh에 key값을 입력으로 넣어 얻은 해시값 h(k)h(k)를 위치로 지정하여 key- value 데이터 쌍을 저장합니다.
저장, 삭제, 검색의 시간복잡도는 모두 O(1)O(1)입니다.


2. 데이터 베이스

📌 Transaction

transaction는 데이터베이스 내에서 수행되는 작업의 최소 단위로, 데이터베이스의 무결성을 유지(DB에 저장된 데이터의 일관성과 정확성을 지킴)하며 DB의 상태를 변화시키는 기능을 수행합니다.

데이터베이스는 COMMIT과 ROLLBACK 명령어를 통해 데이터 무결성을 보장합니다. COMMIT이란 transaction 작업을 완료했다고 확정하는 명령어입니다. transaction 작업 내용을 실제 DB에 저장하고, DB가 변경됩니다.
ROLLBACK은 작업 중 문제가 발생했을 때, transaction 처리 과정에서 발생한 변경 사항을 취소하고, 이전 COMMIT의 상태로 되돌립니다.


3. 네트워크

📌 HTTP

HTTP는 웹 상에서 정보를 전송하기 위한 통신 프로토콜로써 HTML과 같은 문서를 전송하는 것에 사용됩니다. TCP/IP 기반으로 작동하며, HTTP의 가장 큰 특징은 Connectionless와 Stateless 입니다.

Connectionless는 HTTP가 서버에 연결 후 요청에 응답을 받으면 연결을 끊어버리는 특성입니다. 이로 인해 많은 사람이 웹을 이용하더라도 실제 동시 접속을 최소화할 수 있습니다.
하지만 연결을 끊었기 때문에, 클라이언트의 이전 상태(로그인 유무 등)를 알 수가 없다는 Stateless 특성이 생기게 됩니다.
정보를 유지할 수 없는 Connectionless, Stateless 특성을 가진 HTTP의 단점을 해결하기 위해 cookie, session 등이 도입되었습니다.

쿠키와 세션을 사용함으로써 로그인을 할때, 아이디 비밀번호 저장을 하여 다음번에 재방문 할 때에도 해당 아이디와 비밀번호를 자동으로 입력하도록 할 수 있습니다. 하지만 쿠키와 세션을 사용하지 않는다면, 인프런에 로그인을 했음에도 페이지를 이동할 때마다 계속 로그인을 해야됩니다.
또한 이 외에도 쇼핑몰의 장바구니 기능과 팝업에서 “오늘 더이상 이 창을 보지 않음" 등의 편의성을 제공할 수 있게 됩니다.

쿠키는 클라이언트(브라우저) key-value 쌍으로 로컬에 저장되는 데이터 파일입니다. 유효시간 내에서는 브라우저가 종료되어도 계속 유지됩니다.

세션은 쿠키에 session ID를 저장함으로써 구현이 됩니다. 각 클라이언트에게 session ID를 부여하고, 클라이언트는 쿠키에 session ID를 저장해 둡니다.
세션은 유효시간을 두어 일정 시간 응답이 없다면 끊을 수 있고, 브라우저가 종료될 때까지 인증상태를 유지할 수 있습니다. 사용자 정보를 브라우저에 저장하는 쿠키와 달리 세션은 사용자 정보를 서버에 두기 때문에 쿠키보다 보안은 좋지만 서버 자원을 차지하기 때문에 서버에 과부하를 줄 수 있고 성능 저하의 요인이 될 수 있습니다.

0개의 댓글