✅ [OS 관련 Problem Solving 질문 목록]
1. 멀티쓰레드 환경에서 공유 자원을 안전하게 처리하려면 어떻게 할까?
의도: 동기화, race condition, mutex/semaphore 개념 이해
synchronized vs ReentrantLock vs Atomic
2. 프로세스 간 통신(IPC)을 구현해야 할 때 어떤 방법을 사용할 수 있을까?
목적
추천 방식
속도가 매우 중요할 때
Shared Memory + Semaphore
구조화된 메시지 전달
Message Queue
단순한 단방향 통신
Pipe / Named Pipe
유연하고 확장 가능한 통신
Unix Domain Socket / TCP Socket
시스템 수준 리소스 접근 조율
Semaphore만 사용
3. 데이터를 처리하는 서버가 CPU-bound일 때와 I/O-bound일 때 스레드 모델은 어떻게 달라져야 할까?
논블로킹 IO, 쓰레드 풀 튜닝 전략
4. OOM(Out Of Memory)이 발생한 서버의 원인을 어떻게 분석할 수 있을까?
GC 로그, 메모리 누수, JVM heap dump 분석, cgroup memory 제한 등
5. Context Switching이 자주 발생하는 원인은? 줄이기 위한 방법은?
스레드 수 과다, I/O blocking, 동기화 병목 등 → async, reactor 패턴 등으로 해결 가능성 설명
✅ [자료구조 관련 Problem Solving 질문 목록]
1. LRU Cache를 직접 구현해봐.
의도: LinkedHashMap, Doubly Linked List + HashMap 활용 능력
2. O(1) 시간에 insert, delete, getRandom을 지원하는 자료구조를 설계해봐.
해시맵 + 리스트 조합, index swap 전략
3. 백엔드 서비스에서 해시맵을 사용할 때 어떤 상황에서 성능이 급격히 저하될 수 있을까?
hash collision, rehashing, equals/hashCode 불일치 등