"유명한 검색 회사에서"이 사람의 인터뷰에 대해 읽었습니다.해시 함수 출력을 버킷 수보다 제한해야합니까?
http://asserttrue.blogspot.com/2009/05/one-of-toughest-job-interview-questions.html
그는 해시 테이블을 구현하는 그에게지도 한 질문을했다.
HASH = INITIAL_VALUE;
FOR EACH (CHAR IN WORD) {
HASH *= MAGIC_NUMBER
HASH ^= CHAR
HASH %= BOUNDS
}
RETURN HASH
내가 해시 테이블 배열 길이가 소수해야한다고 설명하고, 경계 번호가 테이블 길이 테이블 길이, 하지만 서로 소 미만 : 그는 다음 말했다.
왜 BOUNDS 숫자가 버킷 개수보다 작아야합니까? 테이블 길이에 비례하는 것은 무엇입니까? 그 멍청한 놈들과 교미가 안되니?
톰에게 감사드립니다. 나는 그가 틀렸다는 느낌을 받았지만 StackOverflow에 지식이 부족한 사람이 아닌지 확실히해야만했습니다. – Unknown
"BOUNDS는 버킷 수 또는 마지막 몇 개의 버킷이 불충분합니다"라고 해시 테이블의 크기를 조정해야 할 때 특별한 트릭 일 수 있다고 생각합니까? – Unknown
나는 % BOUNDS가 완전히 자리를 비 웠음을 완전히 동의합니다. 주어진 입력의 해시는 해쉬가 사용되는 것의 * independent *이어야합니다. 그것을 테이블에 키로 사용할 수 있고, 활에 묶을 수 있으며 \ dev \ null로 파이프 할 수 있습니다. 해시 함수는 무절제해야합니다. – leoger