Найти в Дзене

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

Краткие вводные: В данный период жизни у меня ведётся поиск нового места работы, в связи с этим перерыл кучу полезного материала и составил для себя список вопросов для собесов. Отлично, начнём с первых 10 вопросов из раздела JavaScript пусть это будет и примитивно, зато база. Буду писать по большей части для себя. 💬 JavaScript работает с разными видами данных — числа, строки, логические значения, и даже "null" и "undefined". 🛠 Примитивные типы: Сложные (ссылочные) типы: 🧪 Пример: let age = 25; // Number let name = "Анна"; // String let isOnline = true; // Boolean let user = { name: "Ann" }; // Object let list = [1, 2, 3]; // Array let notSet = undefined; let nothing = null; 💡 Все примитивы хранятся по значению, а объекты — по ссылке. 💬 В JavaScript есть два вида сравнения: обычное (==) и строгое (===). Они работают по-разному. 🛠 🧪 Пример: '5' == 5 // true — строка превращается в число '5' === 5 // false — типы разные: string и number
Оглавление

Краткие вводные: В данный период жизни у меня ведётся поиск нового места работы, в связи с этим перерыл кучу полезного материала и составил для себя список вопросов для собесов. Отлично, начнём с первых 10 вопросов из раздела JavaScript пусть это будет и примитивно, зато база. Буду писать по большей части для себя.

  • 📌 Вопрос
  • 💬 Пояснение простыми словами
  • 🛠 Как работает
  • 🧪 Пример с пояснением
  • 💡 Полезно знать

🔹 Блок 1: JavaScript — основы. Вопросы 1–10 (подробно)

1. 📌 Какие типы данных существуют в JavaScript?

💬 JavaScript работает с разными видами данных — числа, строки, логические значения, и даже "null" и "undefined".

🛠 Примитивные типы:

  • Number — любое число: 5, -10, 3.14
  • String — текст: "Привет"
  • Boolean — логическое значение: true, false
  • null — намеренное отсутствие значения
  • undefined — переменная существует, но без значения
  • Symbol — уникальный идентификатор
  • BigInt — числа, больше, чем позволяет обычный Number

Сложные (ссылочные) типы:

  • Object, Array, Function

🧪 Пример:

let age = 25; // Number

let name = "Анна"; // String

let isOnline = true; // Boolean

let user = { name: "Ann" }; // Object

let list = [1, 2, 3]; // Array

let notSet = undefined;

let nothing = null;

💡 Все примитивы хранятся по значению, а объекты — по ссылке.

2. 📌 В чём разница между == и ===?

💬 В JavaScript есть два вида сравнения: обычное (==) и строгое (===). Они работают по-разному.

🛠

  • == приводит типы перед сравнением (например, '5' == 5 → true)
  • === не приводит типы — если типы разные, сразу false

🧪 Пример:

'5' == 5 // true — строка превращается в число

'5' === 5 // false — типы разные: string и number

💡 Рекомендуется всегда использовать ===, чтобы избежать неожиданных ошибок.

3. 📌 Какими способами можно объявить переменную?

💬 В JavaScript есть 3 ключевых слова для объявления переменной: var, let, const.

🛠

  • var — старая форма, работает внутри функции и "всплывает".
  • let — блочная область видимости, можно переназначить.
  • const — блочная область видимости, нельзя переназначить.

🧪 Пример:

var x = 10;

let y = 20;

const z = 30;

💡 const защищает переменную от переназначения, но не делает объект или массив внутри неизменяемым:

const obj = { name: 'Ivan' };

obj.name = 'Petr'; // работает!

4. 📌 В чём разница между null и undefined?

💬 Это оба способа сказать "ничего нет", но с разным смыслом.

🛠

  • undefined — переменной не присвоено значение
  • null — значение установлено специально, чтобы сказать "ничего"

🧪 Пример:

let a;

console.log(a); // undefined

let b = null;

console.log(b); // null

💡 undefined появляется по умолчанию, null — вручную.

5. 📌 Для чего нужны map, filter, reduce, forEach?

💬 Эти методы используются для обработки массивов.

🛠

  • forEach — перебор элементов, ничего не возвращает
  • map — создает новый массив, изменяя каждый элемент
  • filter — создает новый массив с элементами, которые прошли проверку
  • reduce — собирает значение из массива в одно (например, сумму)

🧪 Пример:

const arr = [1, 2, 3];

arr.forEach(n => console.log(n)); // 1, 2, 3

arr.map(n => n * 2); // [2, 4, 6]

arr.filter(n => n > 1); // [2, 3]

arr.reduce((acc, n) => acc + n, 0); // 6

💡 reduce часто используют для задач вроде подсчёта, агрегации и построения объектов.

6. 📌 Что такое стрелочные функции и чем они отличаются?

💬 Это более короткая форма записи функций, но с особенностями.

🛠 Отличия:

  • Не имеют собственного this и arguments
  • Не используются как конструкторы
  • Более лаконичны

🧪 Пример:

const add = (a, b) => a + b;

💡 Внутри стрелочной функции this берётся из внешнего контекста:

const obj = {

count: 10,

show: function() {

setTimeout(() => {

console.log(this.count); // 10

}, 1000);

}

}

obj.show();

7. 📌 Что такое замыкание (closure)?

💬 Это функция, которая "помнит" переменные из внешнего кода, даже если он уже завершён.

🛠

  • Функция внутри другой функции
  • Доступ к переменным внешней области

🧪 Пример:

function counter() {

let count = 0;

return function () {

count++;

return count;

}

}

const next = counter();

console.log(next()); // 1

console.log(next()); // 2

💡 Замыкания полезны для создания приватных переменных и инкапсуляции.

8. 📌 Что такое шаблонные литералы?

💬 Это строки с улучшенными возможностями: можно вставлять переменные и писать многострочный текст.

🛠 Обозначаются с помощью обратных кавычек (`)

🧪 Пример:

const name = 'Оля';

const greet = `Привет, ${name}!

Как дела?`;

console.log(greet);

💡 Работают как с переменными, так и с выражениями:

`Сумма: ${2 + 2}` // "Сумма: 4"

9. 📌 Что такое Set и Map?

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

🛠

  • Set — набор уникальных значений
  • Map — коллекция пар ключ/значение (ключом может быть любой тип)

🧪 Пример:

const set = new Set([1, 2, 2, 3]);

console.log(set); // Set(3) {1, 2, 3}

const map = new Map();

map.set('name', 'Ann');

map.set(1, 'One');

console.log(map.get(1)); // 'One'

💡 В Map можно использовать объекты как ключи, в отличие от обычного объекта.

10. 📌 Как определить наличие свойства в объекте?

💬 Нужно понять: есть ли у объекта определённое свойство.

🛠 Способы:

  • obj.hasOwnProperty('key') — только собственные свойства
  • 'key' in obj — проверяет также прототип

🧪 Пример:

const user = { name: 'Игорь' };

'name' in user; // true

user.hasOwnProperty('name'); // true

💡 Если нужно проверить, есть ли внутреннее значение, используйте:

if (user.name !== undefined) { ... }

(исправлено по комментам 04.07.2025)
if (!user.name) { ... }