Backend
home
🖥️

CS 기초 정리 빌드업

Github 링크
날짜
2025/09/16

1. 운영체제 (OS)

1.1. 프로세스 vs 스레드

프로세스: 실행 중인 프로그램(독립된 메모리 공간).
스레드: 프로세스 내에서 실행되는 흐름(코드/데이터/힙 공유, 스택 분리).
면접 포인트:
스레드는 자원을 공유하므로 컨텍스트 스위칭 비용이 낮지만 동기화 이슈가 발생할 수 있다.

1.2. 동기 vs 비동기, 블로킹 vs 논블로킹

동기
요청 후 결과를 받을 때까지 대기.
비동기
요청 후 결과를 기다리지 않고 다른 작업 수행.
블로킹
제어권을 반환하지 않고 대기.
논블로킹
바로 제어권을 반환.
면접 포인트
“동기-비동기는 작업 순서 개념, 블로킹-논블로킹은 제어권 반환 개념.”

1.3. 메모리 구조 (JVM 포함)

Stack:
메서드 호출/지역 변수.
Heap:
객체/인스턴스.
Method Area(Class 영역):
클래스 메타데이터.
GC
Heap 영역의 불필요한 객체를 자동 수거.
면접 포인트
“Stop-the-world, Minor GC/Full GC 차이 설명 가능해야 함.”

2. 네트워크

2.1. TCP vs UDP

TCP: 연결 지향, 신뢰성 보장 (3-way handshake, 흐름제어, 혼잡제어).
UDP: 비연결 지향, 빠름, 신뢰성 보장 X (스트리밍, 게임에서 주로 사용).
면접 포인트
“서비스 특성에 따라 선택한다 → ex) 채팅은 TCP, 영상 스트리밍은 UDP.”

2.2. HTTP vs HTTPS

HTTP: 평문 통신, 보안 취약.
HTTPS: TLS/SSL 기반 암호화 통신.
면접 포인트:
“대칭키/비대칭키를 혼합하여 성능과 보안을 모두 확보한다.”

2.3. REST API 원칙

무상태성(stateless), 클라이언트-서버 분리, 계층화 구조, 캐시 처리 가능.
면접 포인트:
HTTP 메서드(GET, POST, PUT, DELETE)를 리소스에 맞게 사용하는 것이 중요하다.

2.4. CORS

브라우저 보안 정책 → 다른 출처(origin)의 리소스 요청 제한.
해결: 서버에서 Access-Control-Allow-Origin 헤더 설정.

3. 데이터베이스 (DB)

3.1. 인덱스

구조: 주로 B+ Tree
장점: 조회 속도 향상.
단점: 쓰기 성능 저하, 저장 공간 증가.
면접 포인트: “조회가 많은 컬럼에는 인덱스 적합, 쓰기가 잦은 경우 주의가 필요함.”

3.2. 트랜잭션 & ACID

Atomicity: 원자성
Consistency: 일관성
Isolation: 격리성
Durability: 영속성
면접 포인트: “실무에서는 Isolation Level 조정으로 동시성 성능을 관리한다.”

3.3. Isolation Level

READ UNCOMMITED: Dirty Read 허용.
READ COMMITED: Dirty Read 방지. (Oracle 기본값)
REPEATABLE READ: Non-Repeatable Read 방지. (MySQL InnoDB 기본값)
SERIALIZABLE: 완벽한 격리, 성능 저하 큼.
면접 포인트:
“현업에서는 READ COMMITTED나 REPEATABLE READ를 많이 사용한다.”

3.4 조인 (JOIN)

Inner, Left, Right, Full Outer Join.
실무에서는 주로 Inner, Left Join 사용.
면접 포인트: “데이터 양이 많을 때 조인 순서, 인덱스 고려가 필요하다.”

4. 자료구조 & 알고리즘

4.1. 자료구조

Array vs LinkedList: 탐색은 Array가 유리, 삽입/삭제는 LinkedList 유리.
HashMap: 평균 O(1), 충돌 시 체이닝/오픈어드레싱으로 해결.
Heap: 우선순위 큐 구현.
Tree/Binary Search Tree: 탐색, 정렬에 활용.

4.2. 알고리즘 복잡도

Big-O 표기법 (O(1), O(logN), O(N), O(N logN), O(N²)).
면접에서 “이 로직의 시간복잡도는?” 질문 자주 나옴.

5. Java & Spring

5.1. JVM & GC

JVM 메모리 구조 (Stack, Heap, Metaspace).
GC: Minor GC(Young 영역), Major/Full GC(Old 영역).
면접 포인트:
“Stop-the-world 현상을 어떻게 줄일 수 있는지?”

5.2. Spring Bean Lifecycle

객체 생성 → 의존성 주입(DI) → 초기화 → 소멸.
Singleton, Prototype 스코프.

5.3. Spring AOP

횡단 관심사(로깅, 트랜잭션)를 분리.
Proxy 기반 동작.

5.4. Spring Security

필터 체인 구조.
OncePerRequestFilter로 JWT 인증 구현 가능.

6. 시스템 설계

6.1. 확장성 고려

Scale-up vs Scale-out
캐시(Redis), 메시지 큐(Kafka, RabbitMQ) 활용.

6.2. 장애 대응

DB Replication, Failover.
무중단 배포 (Blue-Green, Canary).

6.3. 트래픽 분산

로드밸런서 (L4/L7)
CDN.