Специализация
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 в телеграм
В чем разница между == и equals()?
Оператор == сравнивает ссылки на объекты, то есть проверяет, указывают ли две переменные на один и тот же объект в памяти.
Метод equals() сравнивает содержимое объектов, что важно, если нужно проверить равенство значений объектов.
Для чего переопределяют методы GetHashCode и Equals и как они используются в Dictionary<TKey, TValue>?
Equals определяет, считаются ли два объекта равными по содержанию, а GetHashCode возвращает целочисленный хеш-код, используемый для распределения в бакеты Dictionary. При вставке Dictionary вычисляет hash = key.GetHashCode(), находит бакет по hash % buckets.Length, а затем в цепочке вызывает Equals для обнаружения точного совпадения ключа. Некорректная реализация может привести к потере или дублированию элементов.
Всегда ли достаточно дефолтной реализации equals() и hashCode()? Приведите примеры, когда она не подходит.
Дефолтная реализация подходит, если все поля участвуют в сравнении. Но она не подходит, если:
Нужно сравнивать только часть полей.
Объекты должны быть равны по особым условиям (например, ID).
Контракт между equals() и hashCode(). Зачем он нужен для работы HashMap?
Контракт требует:
Если a.equals(b) == true, то a.hashCode() == b.hashCode()
Обратное не обязательно
Нарушение контракта ломает работу HashMap - объекты могут потеряться или дублироваться.
Какие рекомендации по переопределению equals и hashCode для entity-классов?
Используйте только неизменяемые поля (например, id).
Для equals() и hashCode() учитывайте одни и те же поля.
Избегайте ленивой загрузки (Lazy) в этих методах.
Что произойдёт, если два объекта равны по equals(), но у них разные hashCode()?
Что произойдет, если equals() всегда возвращает false?
Сколько элементов окажется в HashSet, если добавить несколько объектов с одинаковым hashCode и equals=false?
Что такое equals() и hashCode()?
Как HashMap использует hashCode() и equals() при поиске ключей?
Рейтинг:
2
Сложность:
7
Если объекты равны по equals(), но имеют разные hashCode(), это нарушает контракт этих методов. Такие объекты будут некорректно работать в hash-коллекциях (HashMap, HashSet). Они могут не находиться в коллекции, даже если были добавлены, или могут создавать дубликаты. Это приводит к непредсказуемому поведению программы.
Рейтинг:
5
Сложность:
6
Если equals() всегда возвращает false, объекты никогда не считаются равными.
HashMap и HashSet будут считать все ключи и элементы уникальными.
Даже логически одинаковые объекты будут храниться отдельно.
Это приведет к дубликатам данных.
Рейтинг:
4
Сложность:
6
В HashSet окажутся все добавленные объекты.
Одинаковый hashCode() не мешает добавлению элементов.
Так как equals() всегда возвращает false, элементы не считаются равными.
Каждый объект будет добавлен как уникальный.
Рейтинг:
5
Сложность:
5
equals() используется для логического сравнения объектов на равенство.hashCode() возвращает числовое представление объекта, используемое для быстрого поиска в хеш-коллекциях.
Эти два метода тесно связаны контрактом.
Если объекты равны по equals(), их hashCode() должен быть одинаковым.
Нарушение этого правила приводит к ошибкам в работе коллекций.
Рейтинг:
5
Сложность:
6
HashMap сначала использует hashCode() для определения корзины.
Затем внутри корзины применяется equals() для точного сравнения ключей.
Так достигается быстрый доступ к значениям.
Если hashCode() и equals() реализованы неверно, поиск ломается.
Это ключевой момент для понимания хеш-коллекций.
Рейтинг:
2
Сложность:
5
Рейтинг:
2
Сложность:
7
Рейтинг:
2
Сложность:
5
Рейтинг:
1
Сложность:
7
Рейтинг:
1
Сложность:
7