Специализация
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 в телеграм
Как работает Dictionary<TKey, TValue>: как вычисляется bucket и как влияет коллизия на производительность?
Dictionary хранит элементы в массивах bucket’ов. Для ключа вычисляют хэш-код key.GetHashCode(), берут bucketIndex = hash % buckets.Length, и если в этом бакете уже есть запись, сравнивают ключи на равенство, переходя по связному списку (или дереву в новых версиях). При небольшой нагрузке lookup — O(1), но при многих коллизиях (одинаковых хэших) может деградировать до O(n) в худшем случае.
Что такое entry, buckets в Dictionary?
Entry - это элемент словаря, который хранит ключ, значение и дополнительную информацию. Buckets (ведра) - это индексы в массиве, которые помогают быстро находить элементы. Каждое ведро содержит ссылку на первую запись в цепочке элементов. Когда вы добавляете элемент, вычисляется хеш-код ключа, который определяет ведро для размещения элемента.
Что такое bucket в HashMap и что в нем хранится?
Bucket — это ячейка внутреннего массива HashMap. В bucket хранятся все элементы, у которых совпал индекс после вычисления hashCode(). Если элементов несколько, они объединяются в структуру внутри bucket’а. Это может быть список или дерево. Bucket используется для локального поиска ключей.
Как выбирается bucket при добавлении элемента в HashMap?
HashMap использует hashCode() ключа для вычисления номера bucket. Хеш дополнительно обрабатывается, а затем применяется операция по модулю размера массива. Это позволяет равномерно распределять элементы. В одном bucket может храниться несколько элементов при коллизиях.
Рейтинг:
2
Сложность:
5
Рейтинг:
4
Сложность:
6
Рейтинг:
4
Сложность:
4
Рейтинг:
5
Сложность:
7