1. 자료구조 & 알고리즘
1.1 Array vs LinkedList
- Array
- 메모리 구조: 연속된 메모리 블록에 순차적 저장
- 시간 복잡도
- 접근: O(1) - 인덱스로 직접 접근
- 삽입/삭제: O(n) - 요소 이동 필요
- 장점: 캐시 지역성, 빠른 접근
- 단점: 크기 고정, 메모리 낭비 가능성
- 사용 사례: 정렬된 데이터 검색, 빈번한 조회
- LinkedList
- 메모리 구조: 포인터로 연결된 노드들
- 시간 복잡도
- 접근: O(n) - 순차적 탐색 필요
- 삽입/삭제: O(1) - 포인터 변경만 필요
- 장점: 동적 크기 조절, 효율적인 삽입/삭제
- 단점: 추가 메모리 사용(포인터), 캐시 지역성 낮음
- 사용 사례: 빈번한 삽입/삭제, 크기가 가변적인 데이터
1.2 Stack & Queue
- Stack
- 구현 방법: 배열 또는 연결리스트
- 주요 연산
- push(): 요소 추가
- pop(): 최상단 요소 제거
- peek(): 최상단 요소 조회
- 실제 활용
- 함수 호출 관리
- 괄호 매칭 검사
- 웹 브라우저 방문 기록
- DFS 구현
- Queue
- 구현 방법: 원형 배열 또는 연결리스트
- 주요 연산
- enqueue(): 요소 추가
- dequeue(): 첫 요소 제거
- peek(): 첫 요소 조회
- 실제 활용
- BFS 구현
- 프린터 대기열
- 프로세스 스케줄링
- 이벤트 처리
1.3 Hash Table
- 해시 함수
- 좋은 해시 함수의 조건
- 대표적인 해시 함수들
- Division Method
- Multiplication Method
- Universal Hashing
- 충돌 해결 방법
- Chaining
- 장점: 구현 간단, 적재율 제한 없음
- 단점: 추가 메모리 필요
- 구현: LinkedList 또는 Red-Black Tree 사용
- Open Addressing
- Linear Probing
- Quadratic Probing
- 장점: 클러스터링 감소
- 단점: 2차 클러스터링
- Double Hashing
2. 운영체제
2.1 프로세스 vs 스레드
- 프로세스
- 구성 요소
- Context Switching 비용이 큼
- IPC(Inter-Process Communication) 방법
- 스레드
- 공유 자원
- 개별 자원
- 동기화 이슈
- Race Condition
- Dead Lock
- Critical Section
2.2 CPU 스케줄링
- 선점형 스케줄링
- Round Robin (RR)
- 특징: 시간 할당량 기반
- 장점: 응답 시간 예측 가능
- 단점: 문맥 교환 오버헤드
- Priority Scheduling
- 특징: 우선순위 기반
- 문제점: 기아 현상
- 해결책: Aging
- Multilevel Queue
- 특징: 다중 큐 사용
- 장점: 프로세스 특성별 처리
- 단점: 큐 간 불균형
- 비선점형 스케줄링
- FCFS (First-Come, First-Served)
- 특징: 도착 순서대로 처리
- 문제점: Convoy Effect
- SJF (Shortest Job First)
- 특징: 실행 시간 기준
- 장점: 평균 대기 시간 최소화
- 단점: 기아 현상
2.3 데드락(Deadlock)
- 발생 조건 (4가지 모두 만족해야 발생)
- 상호 배제 (Mutual Exclusion)
- 점유와 대기 (Hold and Wait)
- 비선점 (No Preemption)
- 순환 대기 (Circular Wait)
- 처리 방법
- 예방 (Prevention)
- 4가지 조건 중 하나 제거
- 장점: 데드락 완전 방지
- 단점: 자원 활용률 저하
- 회피 (Avoidance)
- Banker’s Algorithm
- 장점: 안전한 자원 할당
- 단점: 미래 자원 요청 알아야 함
- 탐지 및 복구 (Detection & Recovery)
3. 데이터베이스
3.1 트랜잭션
- ACID 특성
- Atomicity (원자성)
- Consistency (일관성)
- Isolation (격리성)
- Durability (지속성)
- 구현: WAL(Write-Ahead Logging)
- 트랜잭션 격리 수준
- Read Uncommitted
- Read Committed
- Repeatable Read
- Serializable
3.2 인덱스
- B-Tree 인덱스
- 구조: 루트, 브랜치, 리프 노드
- 특징
- 적합한 상황
- Hash 인덱스
3.3 정규화
- 제1정규형 (1NF)
- 제2정규형 (2NF)
- 부분 함수적 종속 제거
- 완전 함수적 종속 관계
- 제3정규형 (3NF)
- 이행적 종속 제거
- 결정자가 후보키가 아닌 함수적 종속 제거
- BCNF
4. 네트워크
4.1 TCP/IP
- TCP 3-way handshake
- SYN
- SYN + ACK
- ACK
- TCP 흐름제어
- Sliding Window
- Stop and Wait
- 혼잡 제어 알고리즘
- Slow Start
- Congestion Avoidance
- Fast Recovery
4.2 HTTP
- HTTP 메서드
- GET vs POST
- PUT vs PATCH
- 멱등성과 안전성
- REST 아키텍처
- Uniform Interface
- Stateless
- Cacheable
- Client-Server
- Layered System
- Code on Demand
- HTTP/2 특징
- Multiplexing
- Server Push
- Header Compression
- Binary Protocol
4.3 보안
- SSL/TLS 동작 과정
- 핸드셰이크
- 세션
- 종료
- 공개키 기반 구조 (PKI)
- 웹 보안
- XSS 방어
- CSRF 방어
- SQL Injection 방어
참고
2 분 소요
1. 토큰화(Tokenization)
1 분 소요
1. 인공지능과 머신러닝의 기본 개념
댓글남기기