equals/hashCode를 IDE 자동 생성 정도로 알고 있는지, 해시 컬렉션의 탐색 흐름과 묶어서 왜 두 메서드가 같이 가야 하는지 설명할 수 있는지를 가르는 질문이다.
논리적으로 같은 객체는 같은 해시값을 가져야 한다 — 이게 자바가 정한 동등성 계약이다. HashMap·HashSet은 먼저 hashCode로 버킷을 찾고 같은 버킷 안에서 equals로 최종 비교한다. equals만 재정의하고 hashCode를 빼면 같은 의미의 두 객체가 서로 다른 버킷에 흩어져 컬렉션이 중복을 허용하거나 조회를 실패한다. 그래서 동등성 기준 필드를 잡았으면 두 메서드를 묶어서 함께 재정의한다.
도메인 객체에 equals/hashCode를 직접 짜본 적이 있다면 어떤 필드를 동등성 기준으로 골랐고 왜 그 필드였는지로 풀 수 있다
Set에 중복이 들어가거나 Map 조회가 의도와 다르게 동작해 디버깅한 경험이 있다면 두 메서드 불일치를 발견하기까지의 추적 과정을 말할 수 있다
JPA 엔티티에서 ID 기반 동등성과 비즈니스 키 기반 동등성 중 무엇으로 갈지 팀과 합의한 경험이 있다면 그 트레이드오프를 설명할 수 있다
아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.