Встречается на 3% собеседований по Java
Как устроена хеш-таблица (HashMap)
HashMap в Java реализован как массив бакетов (корзин), где каждый бакет — это связный список или с Java 8 — сбалансированное дерево (при большом количестве коллизий).
Основные моменты:
- Хеширование: ключи преобразуются в хеш-код (метод
hashCode()), который затем модифицируется для равномерного распределения. - Размер таблицы: обычно степень двойки (для быстрого вычисления индекса через
hash & (capacity - 1)). - Коллизии: если разные ключи попадают в один бакет, они хранятся в списке/дереве.
- Динамическое расширение: при достижении
loadFactor(по умолчанию 0.75) таблица увеличивается вдвое и перехешируется.
Пример:
java
Map<String, Integer> map = new HashMap<>();
map.put("key1", 1); // Хеш "key1" → индекс в массиве
map.get("key1"); // Поиск по хешу → O(1) в среднемНюансы:
hashCode()иequals()должны быть согласованы.- В Java 8 при коллизиях (>8 элементов) список преобразуется в красно-черное дерево (O(log n)).
- Не потокобезопасна — используй
ConcurrentHashMapдля многопоточности.

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