Встречается на 1% собеседований по Python
Какие знаешь способы решения хеш коллизии
В Python хеш-коллизии решаются несколькими способами, в зависимости от реализации словаря (до Python 3.6 и после):
- Метод цепочек (Chaining)
Каждый бакет содержит связанный список элементов с одинаковым хешем. При коллизии элемент добавляется в список.python# Пример упрощенной реализации bucket = [[] for _ in range(10)] def insert(key, value): index = hash(key) % 10 bucket[index].append((key, value))
-
Открытая адресация (Open Addressing)
Используется в современных Python (3.6+). При коллизии ищется следующий свободный бакет (например, линейное пробирование).python# Псевдокод для поиска следующего бакета def find_slot(key): index = hash(key) % size while table[index] is not None and table[index].key != key: index = (index + 1) % size return index -
Улучшенные хеш-функции
Python использует рандомизированные хеши (PYTHONHASHSEED) для защиты от DoS-атак, что уменьшает вероятность коллизий. -
Перехеширование (Rehashing)
При заполнении таблицы > 2/3 происходит ресайз и перераспределение элементов.
Современные Python словари (compact dict) комбинируют открытую адресацию с дополнительным массивом индексов для эффективности.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы