Думаю начиная с этого поста буду добавлять следующее пояснение:
🧭 Зачем спрашивают это на собеседовании? — чтобы ты понимал, что именно хотят проверить интервьюеры, когда задают такие вопросы.
И думаю стоит немного иначе вставлять сюда код.
Структура сохранена: простое объяснение, как работает, пример, полезные детали и + причина вопроса.
61. 📌 В чём отличие между поверхностным и глубоким копированием?
💬 Простое объяснение:
Поверхностное копирование копирует только верхний уровень объекта. Если внутри есть вложенные объекты или массивы — они всё ещё ссылаются на ту же память. Глубокая копия создаёт полностью независимую структуру.
🛠 Как работает:
- Поверхностное: Object.assign(), spread-оператор { ...obj }
- Глубокое: JSON.parse(JSON.stringify(obj)), structuredClone(obj)
🧪 Пример:
💡 Полезно знать:
structuredClone() — современный встроенный способ глубокой копии, не теряет типы вроде Date.
🧭 Зачем спрашивают на собеседовании?
Интервьюер проверяет, понимаешь ли ты, как устроены ссылки в JavaScript и умеешь ли безопасно работать с данными. Это важно, чтобы не "сломать" состояние приложения, особенно в React или Vue.
62. 📌 Что означает “передача по ссылке” и “по значению”?
💬 Простое объяснение:
Примитивы (числа, строки и т.д.) передаются как копия. Объекты и массивы — по ссылке: изменения в одном месте отразятся и в другом.
🛠 Как работает:
- Примитивы → копируются
- Объекты → передаётся указатель на память
🧪 Пример:
💡 Полезно знать:
Это особенно важно при передаче объектов в функции: ты можешь изменять оригинал, даже не подозревая об этом.
🧭 Зачем спрашивают на собеседовании?
Проверяется базовое понимание поведения переменных. Это критично при отладке, написании безопасного и предсказуемого кода.
63. 📌 Чем отличается Object.create() от {}?
💬 Простое объяснение:
{} создаёт объект с прототипом Object.prototype. А Object.create(proto) — позволяет указать конкретный прототип или вообще его не задавать.
🛠 Как работает:
- const obj = {} → объект наследует от Object.prototype
- const obj = Object.create(null) → полностью "голый" объект без прототипа
🧪 Пример:
💡 Полезно знать:
Object.create(null) часто используют для словарей или безопасных конфигурационных объектов без лишних свойств.
🧭 Зачем спрашивают на собеседовании?
Хочется понять, как ты работаешь с цепочками прототипов, понимаешь ли ты наследование на низком уровне — не только через классы.
64. 📌 Что такое prototype у функции?
💬 Простое объяснение:
Каждая функция в JavaScript имеет свойство prototype, которое используется как прототип для объектов, создаваемых через new.
🛠 Как работает:
- Когда ты создаёшь объект через new, у него появляется скрытая ссылка [[Prototype]] на Function.prototype
🧪 Пример:
💡 Полезно знать:
Это основа прототипного наследования. Даже классы в ES6 под капотом используют прототипы.
🧭 Зачем спрашивают на собеседовании?
Хочется убедиться, что ты не просто знаешь синтаксис классов, но и понимаешь, как они реализованы в JavaScript.
65. 📌 В чём разница между функцией и методом?
💬 Простое объяснение:
Функция — это независимый блок кода. Метод — это функция, которая принадлежит объекту и обычно использует this.
🛠 Как работает:
- function greet() {} — обычная функция
- obj.greet = function() {} — метод
🧪 Пример:
💡 Полезно знать:
При передаче метода как колбэка this теряется, если не использовать bind() или стрелочные функции.
🧭 Зачем спрашивают на собеседовании?
Интервьюер хочет убедиться, что ты понимаешь поведение this и не будешь путаться при написании методов в классах, компонентах и обработчиках событий.
66. 📌 Что делает оператор typeof?
💬 Простое объяснение:
Возвращает строку, указывающую тип значения.
🛠 Как работает:
- typeof 1 → 'number'
- typeof 'abc' → 'string'
- typeof null → 'object' (это баг, но он есть с 1995 года)
🧪 Пример:
💡 Полезно знать:
Для проверки массивов лучше использовать Array.isArray().
🧭 Зачем спрашивают на собеседовании?
Проверяют, насколько ты знаешь особенности языка и не попадёшься на исторические несовершенства вроде typeof null.
67. 📌 Как проверить, что значение — функция?
💬 Простое объяснение:
Тип функции — 'function'. Можно проверить это с помощью typeof.
🛠 Как работает:
🧪 Пример:
💡 Полезно знать:
Можно также использовать value instanceof Function, но typeof проще.
🧭 Зачем спрашивают на собеседовании?
Чтобы убедиться, что ты умеешь безопасно вызывать функции, не боясь получить ошибку, если значение окажется не тем.
68. 📌 Что делает instanceof?
💬 Простое объяснение:
Проверяет, принадлежит ли объект к классу или функции-конструктору через цепочку прототипов.
🛠 Как работает:
🧪 Пример:
💡 Полезно знать:
Работает с кастомными и встроенными типами (Array, RegExp и т.д.)
🧭 Зачем спрашивают на собеседовании?
Чтобы проверить знание внутреннего механизма [[Prototype]] и способность определять тип объекта в реальных условиях.
69. 📌 Что делает Object.assign()?
💬 Простое объяснение:
Копирует значения всех перечисляемых свойств из одного или нескольких объектов в целевой.
🛠 Как работает:
🧪 Пример:
💡 Полезно знать:
Работает только с поверхностной копией. Вложенные объекты по-прежнему передаются по ссылке.
🧭 Зачем спрашивают на собеседовании?
Проверяют, знаешь ли ты способы копирования объектов и понимаешь ли ограничения метода.
70. 📌 Чем отличается Object.keys() от Object.entries()?
💬 Простое объяснение:
Object.keys() возвращает массив ключей, а Object.entries() — массив пар [ключ, значение].
🛠 Как работает:
🧪 Пример — перебор:
💡 Полезно знать:
Существует также Object.values() — возвращает значения без ключей.
🧭 Зачем спрашивают на собеседовании?
Проверяют, насколько ты владеешь современными методами перебора объектов и умеешь писать читаемый и эффективный код.