그알것 — 그럼에도 알아야 할 것들
홈질문커뮤니티
로그인
그알것 — 그럼에도 알아야 할 것들

Service

  • 홈
  • 소개
  • 질문
  • 커뮤니티

My

  • 내 워크스페이스
  • 저장한 질문
  • 작성한 답변

Policy

  • 이용약관
  • 개인정보처리방침
  • 문의

© 2026 그알것 · What Still Matters

질문 목록Performance
Performance

해시 충돌에 대해서 설명해주세요.

실무4/5
설계4/5
인간3/5
기초4/5

면접관의 질문 의도

해시 자료구조의 평균 성능이 충돌 처리 방식 위에 얹혀 있다는 점을 이해하는지, 두 전략의 동작 차이와 트레이드오프를 함께 설명할 수 있는지를 가른다.

큐레이션 답변

학습 자료

해시 충돌은 서로 다른 키가 같은 해시값으로 계산돼 같은 버킷에 떨어지는 현상이다. 해결 전략은 크게 두 갈래로 나뉜다. 개방 주소법은 빈 버킷을 다시 탐사해 자리를 찾는 방식이고(선형·제곱·이중 해싱), 분리 연결법은 버킷에 연결 리스트나 트리를 매달아 충돌 키를 함께 보관한다. 어느 쪽이든 로드 팩터가 높아질수록 충돌이 늘면서 평균 O(1)이 깨지므로, 리사이징 임계값을 함께 봐야 한다.

좋은 답변 구조

  1. 01해시 충돌이 왜 발생하는지 입력·출력 관점에서 정의한다
  2. 02개방 주소법의 탐사 흐름(선형·제곱·이중)을 단계별로 설명한다
  3. 03분리 연결법이 버킷에 어떻게 키를 매다는지 흐름을 짚는다
  4. 04로드 팩터·군집화·캐시 친화성 측면에서 두 전략의 한계와 예외를 비교한다

자주 실수하는 포인트

탐사 순서만 외우고 왜 그 순서가 군집화를 줄이는지 설명하지 못한다
분리 연결법이면 무조건 안전하다고 보고 로드 팩터·리사이징을 함께 보지 않는다
개방 주소법에서 삭제가 단순 비움이 아니라 tombstone을 남겨야 한다는 점을 빠뜨린다
키 분포가 균등하다는 전제를 의심하지 않고 평균 O(1)을 그대로 단정한다

실무 맥락

  • 사용자 ID나 토큰을 키로 두는 인메모리 캐시에서 특정 prefix가 몰려 충돌이 한 버킷에 집중되는 환경
  • 외부에서 들어오는 키를 그대로 해시해야 해서 해시 DoS 공격 표면이 생기는 공개 API 서버
  • Java HashMap이 충돌 임계치를 넘으면 버킷을 트리로 전환하는 것처럼, 런타임이 자동 전략 전환을 하는 환경

본인 경험에 녹이는 힌트

캐시 hit율은 괜찮은데 특정 키 패턴에서 지연이 튀어 프로파일링한 적이 있다면 충돌 군집화 이야기와 연결할 수 있다

HashMap을 쓰다가 키 객체의 hashCode/equals를 잘못 구현해 조회가 느려졌던 경험이 있다면 해시 함수 품질과 묶을 수 있다

Redis나 인메모리 캐시에서 리사이징·rehash 타이밍에 지연이 튀는 걸 본 적이 있다면 로드 팩터 임계값 결정 이야기로 잇는다

커뮤니티 인기 답변

전체 0개

아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.

관련 꼬리 질문

Q1분리 연결법에서 일정 길이를 넘으면 리스트를 트리로 바꾸는 이유는 무엇인가요
Q2개방 주소법에서 키 삭제를 단순 비움으로 처리하면 어떤 문제가 생기나요
Q3로드 팩터 임계값을 0.75 같은 값으로 잡는 근거는 무엇인가요
Q4악의적인 클라이언트가 같은 해시값을 가진 키를 다량 보낼 때 어떻게 방어하나요
아직 답을 쓰지 않았어요.
큐레이션 답변과 다른 사람 답변을 보고, 자기 언어로 답을 정리해보면 학습 효과가 가장 큽니다.
목차
  • 01면접관의 질문 의도
  • 02큐레이션 답변
  • 03좋은 답변 구조
  • 04자주 실수하는 포인트
  • 05실무 맥락
  • 06본인 경험에 녹이는 힌트
  • 07커뮤니티 인기 답변준비중
  • 08관련 꼬리 질문