Найти в Дзене

Вопросы для собеседования в IT (React, JS, CSS, Typescript, общие вопросы) Часть 6

Думаю начиная с этого поста буду добавлять следующее пояснение:
🧭 Зачем спрашивают это на собеседовании? — чтобы ты понимал, что именно хотят проверить интервьюеры, когда задают такие вопросы.
И думаю стоит немного иначе вставлять сюда код.
Структура сохранена: простое объяснение, как работает, пример, полезные детали и + причина вопроса. 💬 Простое объяснение:
Поверхностное копирование копирует только верхний уровень объекта. Если внутри есть вложенные объекты или массивы — они всё ещё ссылаются на ту же память. Глубокая копия создаёт полностью независимую структуру. 🛠 Как работает: 🧪 Пример: 💡 Полезно знать:
structuredClone() — современный встроенный способ глубокой копии, не теряет типы вроде Date. 🧭 Зачем спрашивают на собеседовании?
Интервьюер проверяет, понимаешь ли ты, как устроены ссылки в JavaScript и умеешь ли безопасно работать с данными. Это важно, чтобы не "сломать" состояние приложения, особенно в React или Vue. 💬 Простое объяснение:
Примитивы (числа, строки и
Оглавление

Думаю начиная с этого поста буду добавлять следующее пояснение:
🧭 Зачем спрашивают это на собеседовании? — чтобы ты понимал, что именно хотят проверить интервьюеры, когда задают такие вопросы.

И думаю стоит немного иначе вставлять сюда код.

Структура сохранена: простое объяснение, как работает, пример, полезные детали и + причина вопроса.

61. 📌 В чём отличие между поверхностным и глубоким копированием?

💬 Простое объяснение:

Поверхностное копирование копирует только верхний уровень объекта. Если внутри есть вложенные объекты или массивы — они всё ещё ссылаются на ту же память. Глубокая копия создаёт полностью независимую структуру.

🛠 Как работает:

  • Поверхностное: Object.assign(), spread-оператор { ...obj }
  • Глубокое: JSON.parse(JSON.stringify(obj)), structuredClone(obj)

🧪 Пример:

-2

💡 Полезно знать:

structuredClone() — современный встроенный способ глубокой копии, не теряет типы вроде Date.

🧭 Зачем спрашивают на собеседовании?

Интервьюер проверяет, понимаешь ли ты, как устроены ссылки в JavaScript и умеешь ли безопасно работать с данными. Это важно, чтобы не "сломать" состояние приложения, особенно в React или Vue.

62. 📌 Что означает “передача по ссылке” и “по значению”?

💬 Простое объяснение:

Примитивы (числа, строки и т.д.) передаются как копия. Объекты и массивы — по ссылке: изменения в одном месте отразятся и в другом.

🛠 Как работает:

  • Примитивы → копируются
  • Объекты → передаётся указатель на память

🧪 Пример:

-3

💡 Полезно знать:

Это особенно важно при передаче объектов в функции: ты можешь изменять оригинал, даже не подозревая об этом.

🧭 Зачем спрашивают на собеседовании?

Проверяется базовое понимание поведения переменных. Это критично при отладке, написании безопасного и предсказуемого кода.

63. 📌 Чем отличается Object.create() от {}?

💬 Простое объяснение:

{} создаёт объект с прототипом Object.prototype. А Object.create(proto) — позволяет указать конкретный прототип или вообще его не задавать.

🛠 Как работает:

  • const obj = {} → объект наследует от Object.prototype
  • const obj = Object.create(null) → полностью "голый" объект без прототипа

🧪 Пример:

-4

💡 Полезно знать:

Object.create(null) часто используют для словарей или безопасных конфигурационных объектов без лишних свойств.

🧭 Зачем спрашивают на собеседовании?

Хочется понять, как ты работаешь с цепочками прототипов, понимаешь ли ты наследование на низком уровне — не только через классы.

64. 📌 Что такое prototype у функции?

💬 Простое объяснение:

Каждая функция в JavaScript имеет свойство prototype, которое используется как прототип для объектов, создаваемых через new.

🛠 Как работает:

  • Когда ты создаёшь объект через new, у него появляется скрытая ссылка [[Prototype]] на Function.prototype

🧪 Пример:

-5

💡 Полезно знать:

Это основа прототипного наследования. Даже классы в ES6 под капотом используют прототипы.

🧭 Зачем спрашивают на собеседовании?

Хочется убедиться, что ты не просто знаешь синтаксис классов, но и понимаешь, как они реализованы в JavaScript.

65. 📌 В чём разница между функцией и методом?

💬 Простое объяснение:

Функция — это независимый блок кода. Метод — это функция, которая принадлежит объекту и обычно использует this.

🛠 Как работает:

  • function greet() {} — обычная функция
  • obj.greet = function() {} — метод

🧪 Пример:

-6

💡 Полезно знать:

При передаче метода как колбэка this теряется, если не использовать bind() или стрелочные функции.

🧭 Зачем спрашивают на собеседовании?

Интервьюер хочет убедиться, что ты понимаешь поведение this и не будешь путаться при написании методов в классах, компонентах и обработчиках событий.

66. 📌 Что делает оператор typeof?

💬 Простое объяснение:

Возвращает строку, указывающую тип значения.

🛠 Как работает:

  • typeof 1 → 'number'
  • typeof 'abc' → 'string'
  • typeof null → 'object' (это баг, но он есть с 1995 года)

🧪 Пример:

-7

💡 Полезно знать:

Для проверки массивов лучше использовать Array.isArray().

🧭 Зачем спрашивают на собеседовании?

Проверяют, насколько ты знаешь особенности языка и не попадёшься на исторические несовершенства вроде typeof null.

67. 📌 Как проверить, что значение — функция?

💬 Простое объяснение:

Тип функции — 'function'. Можно проверить это с помощью typeof.

🛠 Как работает:

-8

🧪 Пример:

-9

💡 Полезно знать:

Можно также использовать value instanceof Function, но typeof проще.

🧭 Зачем спрашивают на собеседовании?

Чтобы убедиться, что ты умеешь безопасно вызывать функции, не боясь получить ошибку, если значение окажется не тем.

68. 📌 Что делает instanceof?

💬 Простое объяснение:

Проверяет, принадлежит ли объект к классу или функции-конструктору через цепочку прототипов.

🛠 Как работает:

-10

🧪 Пример:

-11

💡 Полезно знать:

Работает с кастомными и встроенными типами (Array, RegExp и т.д.)

🧭 Зачем спрашивают на собеседовании?

Чтобы проверить знание внутреннего механизма [[Prototype]] и способность определять тип объекта в реальных условиях.

69. 📌 Что делает Object.assign()?

💬 Простое объяснение:

Копирует значения всех перечисляемых свойств из одного или нескольких объектов в целевой.

🛠 Как работает:

-12

🧪 Пример:

-13

💡 Полезно знать:

Работает только с поверхностной копией. Вложенные объекты по-прежнему передаются по ссылке.

🧭 Зачем спрашивают на собеседовании?

Проверяют, знаешь ли ты способы копирования объектов и понимаешь ли ограничения метода.

70. 📌 Чем отличается Object.keys() от Object.entries()?

💬 Простое объяснение:

Object.keys() возвращает массив ключей, а Object.entries() — массив пар [ключ, значение].

🛠 Как работает:

-14

🧪 Пример — перебор:

-15

💡 Полезно знать:

Существует также Object.values() — возвращает значения без ключей.

🧭 Зачем спрашивают на собеседовании?

Проверяют, насколько ты владеешь современными методами перебора объектов и умеешь писать читаемый и эффективный код.