리드 · 아키텍트 CS 기초 기술면접

TypeScript 리드 · 아키텍트 (10년+) CS 기초 5문항 조회수 28 · 2026-08-04 (화) 14:39:39
1 자료구조
Hard

Q. 대규모 분산 시스템에서 일관된 해시(Consistent Hashing)를 사용하는 이유와 동작 원리를 설명하고, 가상 노드(Virtual Node)를 도입하는 이유에 대해 설명해주세요.

노드 추가/제거 시 데이터 재분배 범위와 부하 분산의 관점에서 생각해보세요.

A. 모범답안

일관된 해시는 노드가 추가되거나 제거될 때 전체 데이터의 재분배 없이 일부 키만 이동시켜 시스템 안정성을 높입니다. 해시 링 구조에서 키와 노드를 동일한 해시 함수로 배치하고, 키는 시계방향으로 만나는 첫 번째 노드에 할당됩니다. 가상 노드는 하나의 물리 노드를 링 위의 여러 지점에 매핑하여 데이터를 균등하게 분산시킵니다. 이를 통해 특정 노드에 부하가 집중되는 문제를 해결하고, 노드 장애 시 부하가 여러 노드로 분산되어 핫스팟을 방지합니다. Redis Cluster, Cassandra, DynamoDB 등에서 핵심 기술로 사용됩니다.

핵심 포인트
  • • 해시 링 구조와 키-노드 매핑 방식
  • • 노드 변경 시 최소 데이터 이동(K/N)
  • • 가상 노드를 통한 부하 균등 분산
  • • 핫스팟 방지 및 장애 복구 효율성
답변에 넣으면 좋은 키워드
일관된 해시 해시 링 가상 노드 부하 분산 데이터 재분배 핫스팟
실무에서는

캐시 서버 클러스터나 분산 데이터베이스에서 노드를 추가하거나 제거할 때 서비스 중단 없이 데이터를 재분배해야 하는 상황

Follow-up 질문

가상 노드의 개수를 결정할 때 고려해야 할 트레이드오프는 무엇인가요?

2 알고리즘
Hard

Q. 실시간 스트리밍 데이터에서 상위 K개의 빈도수가 높은 항목을 추적해야 하는 시스템을 설계한다면, 어떤 자료구조와 알고리즘을 조합하여 사용하겠습니까? 시간 복잡도와 공간 복잡도를 함께 설명해주세요.

해시맵으로 빈도를 추적하고, K개의 상위 항목을 유지하기 위한 효율적인 자료구조를 고려해보세요.

A. 모범답안

해시맵과 최소 힙(Min Heap)을 조합하여 구현합니다. 해시맵으로 각 항목의 빈도수를 O(1)에 추적하고, 크기 K의 최소 힙으로 상위 K개를 유지합니다. 새로운 항목이 들어올 때 빈도를 업데이트하고, 힙의 최소값보다 크면 최소값을 제거하고 새 항목을 삽입합니다(O(log K)). 전체 시간 복잡도는 N개 항목 처리 시 O(N log K)이며, 공간 복잡도는 O(N + K)입니다. 더 최적화하려면 Count-Min Sketch와 같은 확률적 자료구조를 사용해 공간을 O(K)로 줄일 수 있습니다. 실시간 트렌드 분석이나 이상 탐지 시스템에서 활용됩니다.

핵심 포인트
  • • 해시맵과 최소 힙의 조합
  • • O(N log K) 시간 복잡도
  • • O(N + K) 공간 복잡도
  • • 확률적 자료구조를 통한 공간 최적화
답변에 넣으면 좋은 키워드
최소 힙 해시맵 Top-K 시간 복잡도 Count-Min Sketch 스트리밍 알고리즘
실무에서는

실시간 검색어 순위, 로그 분석에서 가장 빈번한 에러 추적, API 호출 통계에서 상위 사용자 식별 등의 상황

Follow-up 질문

메모리가 극도로 제한된 환경에서 정확도를 일부 포기하고 공간 효율성을 높이려면 어떤 방법을 사용하시겠습니까?

3 네트워크
Hard

Q. TCP의 혼잡 제어(Congestion Control) 알고리즘 중 Slow Start, Congestion Avoidance, Fast Retransmit, Fast Recovery의 동작 원리와 각 단계 간 전환 조건을 설명해주세요.

혼잡 윈도우(cwnd)와 임계값(ssthresh)의 변화를 중심으로 각 단계를 설명해보세요.

A. 모범답안

Slow Start는 연결 초기에 cwnd를 1 MSS에서 시작해 ACK마다 지수적으로 증가시키며, ssthresh에 도달하면 Congestion Avoidance로 전환합니다. Congestion Avoidance는 cwnd를 RTT마다 1 MSS씩 선형 증가시켜 네트워크 용량을 탐색합니다. Fast Retransmit은 3개의 중복 ACK를 받으면 타임아웃을 기다리지 않고 즉시 재전송하며, ssthresh를 cwnd의 절반으로 설정합니다. Fast Recovery는 Fast Retransmit 후 cwnd를 ssthresh로 설정하고 Congestion Avoidance를 시작해 타임아웃보다 빠른 복구를 가능하게 합니다. 타임아웃이 발생하면 ssthresh를 절반으로 줄이고 cwnd를 1로 초기화하여 Slow Start부터 다시 시작합니다.

핵심 포인트
  • • Slow Start의 지수적 증가와 ssthresh 기반 전환
  • • Congestion Avoidance의 선형 증가
  • • 3 중복 ACK 기반 Fast Retransmit/Recovery
  • • 타임아웃 시 cwnd 초기화 및 재시작
답변에 넣으면 좋은 키워드
혼잡 제어 cwnd ssthresh Slow Start Fast Retransmit Fast Recovery
실무에서는

글로벌 서비스에서 네트워크 대역폭을 효율적으로 사용하면서도 패킷 손실을 최소화해야 하는 상황

Follow-up 질문

TCP Reno와 TCP Cubic의 차이점은 무엇이며, 고속 네트워크에서 Cubic이 더 유리한 이유는 무엇인가요?

4 운영체제
Hard

Q. 멀티스레드 환경에서 발생할 수 있는 데드락(Deadlock)의 4가지 필요조건과 각 조건을 깨뜨려 데드락을 예방하는 방법을 설명하고, 실무에서 선호되는 접근법과 그 이유를 말씀해주세요.

상호 배제, 점유와 대기, 비선점, 순환 대기 각각을 어떻게 제거할 수 있는지 생각해보세요.

A. 모범답안

데드락의 4가지 필요조건은 상호 배제(Mutual Exclusion), 점유와 대기(Hold and Wait), 비선점(No Preemption), 순환 대기(Circular Wait)입니다. 상호 배제는 공유 가능한 자원으로 변경하거나 Lock-free 알고리즘으로 제거하고, 점유와 대기는 필요한 모든 자원을 한 번에 획득하는 방식으로 방지합니다. 비선점은 자원을 강제로 회수 가능하게 하고, 순환 대기는 자원에 전역 순서를 부여해 항상 같은 순서로 획득하게 합니다. 실무에서는 순환 대기 방지(자원 순서화)가 가장 선호되는데, 구현이 간단하고 성능 오버헤드가 적으며 예측 가능하기 때문입니다. 데이터베이스 락 획득 시 테이블 ID 순서로 락을 걸거나, 멀티스레드 코드에서 뮤텍스를 정렬된 순서로 획득하는 방식이 대표적입니다.

핵심 포인트
  • • 4가지 필요조건의 정확한 이해
  • • 각 조건을 깨뜨리는 구체적 방법
  • • 자원 순서화가 실무에서 선호되는 이유
  • • 성능과 복잡도 트레이드오프
답변에 넣으면 좋은 키워드
데드락 상호 배제 순환 대기 자원 순서화 Lock-free 데드락 예방
실무에서는

분산 트랜잭션 처리나 멀티스레드 결제 시스템에서 여러 자원(계좌, 재고, 락)을 동시에 접근할 때 데드락을 방지해야 하는 상황

Follow-up 질문

데드락 예방(Prevention)과 회피(Avoidance), 탐지(Detection)의 차이를 설명하고, 각각 어떤 상황에서 적합한지 말씀해주세요.

5 데이터베이스
Hard

Q. MVCC(Multi-Version Concurrency Control) 방식의 동작 원리를 설명하고, 전통적인 Lock 기반 동시성 제어와 비교했을 때의 장단점, 그리고 MVCC에서 발생할 수 있는 Write Skew 문제와 해결 방법을 설명해주세요.

각 트랜잭션이 데이터의 특정 버전을 읽는 방식과 격리 수준의 관계를 생각해보세요.

A. 모범답안

MVCC는 데이터 수정 시 기존 데이터를 덮어쓰지 않고 새 버전을 생성하여, 읽기 작업이 쓰기 작업을 블로킹하지 않고 일관된 스냅샷을 읽을 수 있게 합니다. 각 행은 생성 시점의 트랜잭션 ID와 삭제 시점의 트랜잭션 ID를 가지며, 트랜잭션은 자신의 시작 시점에 보이는 버전만 읽습니다. Lock 기반 방식 대비 읽기 성능이 우수하고 동시성이 높지만, 버전 관리로 인한 저장 공간 증가와 Vacuum 오버헤드가 발생합니다. Write Skew는 두 트랜잭션이 서로 다른 행을 읽고 업데이트할 때 비즈니스 제약조건이 위반되는 문제로, Serializable 격리 수준이나 SELECT FOR UPDATE로 명시적 락을 사용해 해결합니다. PostgreSQL, MySQL InnoDB, Oracle 등 대부분의 현대 RDBMS에서 기본 동시성 제어 메커니즘으로 사용됩니다.

핵심 포인트
  • • 버전 기반 읽기와 쓰기 분리
  • • 읽기 성능 향상과 높은 동시성
  • • 저장 공간과 Vacuum 오버헤드
  • • Write Skew와 Serializable 격리 수준
답변에 넣으면 좋은 키워드
MVCC 트랜잭션 ID 스냅샷 격리 Write Skew Serializable Vacuum
실무에서는

높은 동시 접속이 발생하는 전자상거래 시스템에서 재고 조회와 주문 처리를 동시에 수행하면서도 데이터 일관성을 보장해야 하는 상황

Follow-up 질문

PostgreSQL의 MVCC 구현에서 Long-running 트랜잭션이 시스템 성능에 미치는 영향과 이를 모니터링하고 대응하는 방법을 설명해주세요.

댓글 0

로그인 후 댓글을 작성할 수 있습니다.

아직 댓글이 없습니다. 첫 번째 댓글을 남겨보세요!