Встречается на 1% собеседований по Python
Как происходит разрешение коллизий в словаре Python
В Python словари используют открытую адресацию (open addressing) для разрешения коллизий. При возникновении коллизии (когда разные ключи имеют одинаковый хэш) Python ищет следующую свободную ячейку в хэш-таблице с помощью алгоритма probing.
Основные моменты:
- Используется квадратичный probing (не линейный) для поиска свободного слота
- Размер таблицы всегда степень двойки
- При заполнении на 2/3 таблица расширяется
Пример коллизии:
python
class BadHash:
def __hash__(self):
return 1 # Все объекты будут иметь одинаковый хэш
a = BadHash()
b = BadHash()
d = {a: 'first', b: 'second'} # Оба объекта попадут в словарь
print(d[a], d[b]) # Выведет 'first' 'second'При поиске ключа сначала проверяется его хэш, затем сравнивается сам ключ через eq. Если не совпадает - продолжается поиск по probing-последовательности.

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