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.

