Вопросы и задачи на собеседовании JS в 2024 году

HR Рынок ИТ
Блог
Вопросы и задачи на собеседовании JS в 2024 году
Поделиться:

Во время собеседования с программистом важно задать такие вопросы, чтобы оценить уровень опыта, навыков кандидата, а также определить, насколько он подходит для работы с JavaScript в вашей команде. 

Варианты вопросов с ответами для Js junior во время технического собеседования

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

  • Что такое файлы cookie в JavaScript?

Cookies – небольшие текстовые файлы, которые создаются в момент при входе на веб-сайты и хранятся на компьютере. В них может содержаться информация о пользователе, данные о содержимом корзины заказов из прошлых посещений сайта.

  • Как сделать cookie?

Пример, как выглядит простейший метод JavaScript для создания файлов cookie:

document.cookie = “key1 = value1; key2 = value2; expires = date”;

  • Назовите недостатки использования JavaScript.

Основной недостаток JavaScript – безопасность. Сюда же относится широта использования и адаптируемость. Это создает дополнительные сложности для программирования и может привести к неравномерной производительности на разных системах.

  • Примитивные типы данных в JavaScript – что это?

Это фундаментальный тип данных: все, что не является объектом и ограничено представлением одного значения. Все примитивы неизменяемые (иммутабельные). В джаваскрипт доступно 7 примитивов: undefined, null, boolean, string, number, bigint, symbol.

  • Что такое замыкание (closure) в JavaScript и как оно работает?

Замыкание – это такой механизм, который имеет доступ к переменным внешней функции из внутренней. То есть, внутренняя функция как бы запоминает при вызове место, в котором она создавалась. Даже после того, как внешняя функция завершила свое выполнение.

  • Что такое event bubbling и event capturing в JavaScript?

Это два механизма обработки событий в джаваскрипт. При event bubbling событие в первую очередь обрабатывается на самом вложенном элементе, а во вторую – передается по цепочке родительских элементов. При event capturing происходит наоборот: событие сначала обрабатывается на верхнем родительском элементе, а далее уже передается к вложенному элементу.

  • Как обработать ошибки (exceptions) в JavaScript?

Из-за промахов скрипты иногда содержат ошибки. Обычно в этом случае скрипт «падает» (останавливается), ошибка выводится в консоль. Но есть конструкция try...catch, которая умеет ловить ошибки и совершать какие-либо действия вместо падения.

  • Что такое callback-функция?

Колбэк-функция или функция обратного вызова предназначена для отложенного выполнения. То есть, она должна быть выполнена после того, как будет завершена работа другой функции.

  • Как работают таймеры в JavaScript?

Таймеры нужны для запуска или повторения фрагмента кода в определенное время. Для запуска используют методы: setTimeout, setInterval, clearInterval. Метод setTimeout устанавливает таймер, который запускает функцию после заданной задержки. Метод setInterval запускает нужную функцию с заданной задержкой. Остановить ее можно только отменой. 

С помощью метода clearInterval таймер сообщает об окончании. Таймеры запускаются в одном потоке, то есть события могут становиться в очередь до выполнения.

  • «Строгий» режим. Что это и как его активировать?

Этот режим применяется для улучшения проверки ошибок в коде. При использовании он применяет строгие правила, ограничения, тем самым выявляет частые ошибки. Его можно включить для каждого файла/функции, начав их с с «use strict».

Варианты вопросов с ответами для Js middle во время технического собеседования

  • Какие методы у массивов в JavaScript?

Массивы имеют множество методов для выполнения операций. Например, некоторые из них включают методы push(), чтобы добавить элемент в конец массива; pop() – для удаления последнего элемента, join() – для объединения элементов массива в строку, sort() – для сортировки элементов массива.

  • Как проверить, является ли значение массивом?

Для этого следует использовать метод Array.isArray. Он возвращает true, если переданный аргумент является массивом, и false в противном случае.

  • В чем отличия undefined от null?

Undefined – объявленная переменная, которой еще не присвоено значение, это тип сам по себе. Null – это значение присваивания, объект. Его можно использовать для указания отсутствия значения и присваивать переменной. Undefined и null также являются двумя разными типами.

  • Назовите фреймворки JavaScript.

Существует несколько фреймворков, наиболее известные: 

  • - React

  • - Angular

  • - Vue

  • - JQuery

  • - Backbone

  • В чем разница между использованием «var», «let» и «const»?

Разница между ними в уровне охвата. Var – оператор переменных джаваскрипт. Используется для объявления переменной и можно задавать ее значение. Const – идея константных функций. Она не позволяет функциям изменять объект, для которого они вызываются. Let – это сигнал о том, что переменная может быть переназначена.

Что такое AJAX и как он используется в JS?

Эта технология позволяет обмениваться данными между клиентом и сервером без перезагрузки страницы. AJAX делает асинхронные запросы на сервер и обрабатывает данные, предоставляющие желаемый результат.

  • Какие приемы работы с асинхронным кодом в JS Вы знаете?

  • - Функции обратного вызова (Callbacks).
  • - Промисы (Promises).
  • - Async/await.
  • - Библиотеки вроде async.js, blueprint, q, co.

  • Для чего используются операторы break и continue?

Эти два термина относятся к циклам и являются единственными операторами, которые могут прервать выполнение кода. Оператор break заставляет интерпретатор перейти в конец цикла или другой инструкции, а оператор continue прерывает одну итерацию и продолжает следующую в цикле.

  • В чем смысл оборачивания содержимого исходного JS-файла в блок функции?

Метод заключает в себя содержимое файла, создавая приватное пространство имен. Это позволяет обеспечить коду собственный блок видимости и избежать конфликта между объектами JavaScript и библиотеками, в которых они размещены.

  • Что такое классы (classes)?

Это относительно новый способ в JS для написания функций-конструкторов. Они представляют собой синтаксический сахар над функциями-конструкторами. В реальности в джава скрипт объекты по-прежнему создаются на основе объектов или прототипов, а не на основе классов.

  • Что такое объект Set?

Объект Set позволяет хранить уникальные значения, примитивы и ссылки на объекты. С помощью алгоритма SameZeroValue он проверяет значения, которые в нем хранятся.

Практические задачи для js-junior и js-middle.

Решение практических заданий кандидатом позволяет понять, насколько глубоко он понимает элементы и правила языка. Задачи, которые вы найдете в этой статье, не самые простые, но позволяют оценить уровень мышления соискателя.

Задача №1. Напишите функцию на джаваскрипт, которая принимает параметр со строкой и преобразовывает ее в следующий вид:

"Привет Мир" => "прИвЕт мИр"

"Азбука Вкуса" => "АзбУкА вкУсА"

 Подсказка: "а", "е", "ё", "и", "о", "у", "ы", "э", "ю", "я"

Ответ:

function stringChanger(str) {

    let result = ""

    let letters = ["а", "е", "ё", "и", "о", "у", "ы", "э", "ю", "я"]

    for (let i = 0; i < str.length; i += 1) {

        if (letters.includes(str[i].toLowerCase())) {

            result = result + str[i].toUpperCase()

        } else {

        result = result + str[i].toLowerCase()

        }

    }

    return result

}

console.log(stringChanger("Привет Мир")) // "прИвЕт мИр"

console.log(stringChanger("Азбука Вкуса")) // "АзбУкА вкУсА"

Задача №2. Преобразование массива в объект с группировкой и фильтрацией элементов.

Напишите функцию, которая на вход принимает массив из студентов, где студент – объект с полями «имя», «возраст» и «номер группы» {name: string, age: number, groupId: number}. На выходе возвращает объект, где ключ – это номер группы, а значение – массив из студентов старше 17 лет.

Решение:

// O(n) time | O(n) space

const groupOnlyMatureStudentsByGroup = (students) =>

  students.reduce(

    (acc, student) =>

      student.age < 18

        ? acc

        : acc[student.groupId]

        ? acc[student.groupId].push(student) && acc

        : (acc[student.groupId] = [student]) && acc,

    {}

  );

Вывод.

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

Хочешь работать с нами? Отправь свое резюме

Нажимая на кнопку, вы соглашаетесь с Политикой конфиденциальности персональных данных

Файлы cookie обеспечивают работу наших сервисов. Используя наш сайт, вы соглашаетесь с нашими правилами в отношении этих файлов.