Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
По каким полям происходит сравнение ключей в HashMap?
HashMap сравнивает ключи не по полям напрямую, а через методы hashCode() и equals().
Сначала используется hashCode() для выбора корзины.
Затем вызывается equals() для точного сравнения ключей.
Какие именно поля участвуют в сравнении — решает реализация этих методов в классе ключа.
Как работает HashMap при получении элемента?
При получении элемента HashMap вычисляет hashCode ключа.
По нему определяется корзина, где может храниться значение.
Затем ключи в корзине сравниваются через equals.
При совпадении возвращается соответствующее значение.
Как работает HashMap при добавлении элемента?
При добавлении элемента HashMap вычисляет hashCode ключа.
По этому значению определяется корзина, в которую будет помещена пара ключ-значение.
Если корзина пуста, элемент добавляется напрямую.
Если в корзине уже есть элементы, происходит сравнение ключей через equals.
Чем ConcurrentHashMap отличается от синхронизированных коллекций? (блокировка сегментов)
ConcurrentHashMap использует блокировку сегментов (только части данных), тогда как синхронизированные коллекции (Collections.synchronizedMap) блокируют весь объект, что снижает производительность.
Чем TreeMap отличается от HashMap? Как управлять порядком элементов в TreeMap?
Основные отличия:
HashMap - неупорядоченная, TreeMap - сортированная по ключам
HashMap - O(1) доступ, TreeMap - O(log n)
TreeMap использует Comparator или естественный порядок
Контракт между equals() и hashCode(). Зачем он нужен для работы HashMap?
Параллелизм в ConcurrentHashMap vs Collections.synchronizedMap
Как работает HashMap? Какие механизмы обеспечивают константную сложность поиска?
Можно ли использовать объект как ключ в HashMap, если у него есть изменяемые поля?
Что такое HashMap в Rust и когда стоит его использовать?
Рейтинг:
1
Сложность:
7
Контракт требует:
Если a.equals(b) == true, то a.hashCode() == b.hashCode()
Обратное не обязательно
Нарушение контракта ломает работу HashMap - объекты могут потеряться или дублироваться.
Рейтинг:
2
Сложность:
6
ConcurrentHashMap делит данные на сегменты (бакеты), позволяя параллельно писать в разные сегменты. Collections.synchronizedMap блокирует всю коллекцию на каждую операцию. Это делает ConcurrentHashMap быстрее в многопоточной среде.
Рейтинг:
2
Сложность:
5
HashMap хранит данные в корзинах (buckets), используя хеш-код ключа. Константная сложность O(1) достигается за счёт:
Хорошей хеш-функции.
Маленькой нагрузки (load factor).
Преобразования списков в деревья при коллизиях (Java 8+).
Рейтинг:
2
Сложность:
5
Нежелательно. Если поля, участвующие в hashCode() или equals(), изменяются после помещения в HashMap, объект «потеряется» в корзинах: поиск по старому хешу не найдёт его в новом состоянии.
Рейтинг:
2
Сложность:
6
HashMap — это коллекция, состоящая из пар ключ-значение. Она эффективно используется для быстрого доступа к данным по ключу и особенно полезна, когда необходимо искать значения по уникальному ключу.
Рейтинг:
5
Сложность:
5
Рейтинг:
5
Сложность:
6
Рейтинг:
5
Сложность:
6
Рейтинг:
1
Сложность:
5
Рейтинг:
1
Сложность:
6