Специализация
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 в телеграм
Как происходит сравнение типов?
В JavaScript сравнение типов зависит от оператора. Оператор === (строгое равенство) требует, чтобы типы сравниваемых значений были одинаковыми. Оператор == (нестрогое равенство) автоматически приводит типы к общему значению перед сравнением. Поэтому при нестрогом сравнении, например, число и строка могут быть равны.
В чем разница сравнение через is и "=="?
is используется для проверки идентичности объектов (т.е. указывают ли переменные на один и тот же объект в памяти), а == — для сравнения значений объектов (равны ли их значения).
По каким полям происходит сравнение ключей в HashMap?
HashMap сравнивает ключи не по полям напрямую, а через методы hashCode() и equals().
Сначала используется hashCode() для выбора корзины.
Затем вызывается equals() для точного сравнения ключей.
Какие именно поля участвуют в сравнении — решает реализация этих методов в классе ключа.
Почему объекты в JavaScript нельзя сравнить по значению через ===?
Объекты в JavaScript сравниваются по ссылке, а не по содержимому. Даже если два объекта имеют одинаковые поля и значения, они считаются разными, если созданы отдельно. Оператор === проверяет, указывают ли переменные на один и тот же объект в памяти. Поэтому сравнение по значению через === невозможно. Это фундаментальное свойство языка.
Что означает сравнение объектов по ссылке?
Сравнение объектов по ссылке означает проверку того, указывают ли переменные на один и тот же объект в памяти. Если ссылки совпадают, объекты считаются равными. Если объекты имеют одинаковое содержимое, но разные ссылки, результат будет false. Такое поведение характерно для всех ссылочных типов. Это влияет на работу со state и сравнение данных.
Что такое глубокое сравнение объектов?
Чем примитивные типы отличаются от непримитивных?
Почему сравнение аргумента с самим собой помогает определить NaN?
Рейтинг:
5
Сложность:
8
Глубокое сравнение объектов — это сравнение всех вложенных свойств и значений. Оно проверяет, совпадает ли структура объектов полностью. Для этого используется рекурсия или обход дерева. Такой подход даёт точный результат, но может быть дорогим по производительности. Его используют только там, где это действительно необходимо.
Рейтинг:
5
Сложность:
4
Примитивы (например, number, string, boolean) хранят “само значение”, и при присваивании копируется значение. Непримитивы (объекты, массивы, функции) хранятся как ссылка на объект в памяти, и при присваивании копируется ссылка. Поэтому изменения объекта через одну переменную видны в другой. Также сравнение объектов чаще сравнивает ссылки, а не содержимое.
Рейтинг:
4
Сложность:
6
Потому что NaN по стандарту IEEE 754 не равно никакому значению, включая самого себя. Это поведение специально заложено в спецификацию. Все остальные значения в JavaScript равны самим себе. Поэтому сравнение значения с самим собой позволяет надёжно выявить NaN.
Рейтинг:
3
Сложность:
3
Рейтинг:
2
Сложность:
3
Рейтинг:
5
Сложность:
5
Рейтинг:
5
Сложность:
6
Рейтинг:
4
Сложность:
5