01 февраля 2022

☕ 10 вопросов с собеседований по JavaScript

Мобильный разработчик с 9 летним стажем.
В этой статье мы рассмотрим 10 вопросов с собеседований по JavaScript и примеры ответов на них, которые помогут вам подготовиться к интервью.
☕ 10 вопросов с собеседований по JavaScript
Это перевод статьи, автор Indeed Editorial Team.

1. Объясните стрелочные функции

Ответ: Стрелочная функция – это краткий способ записи функциональных выражений.

Стрелочные функции не являются конструкторами, не поддерживают ключевые слова this, arguments, super и new.target и записываются следующим образом:

        const hello = () => { 
	console.log(‘good morning’);
}

hello();

    

2. Объясните NaN и его роль

Когда интервьюер просит дать определение термину, этот термин, как правило, является широко используемым. В этом случае, термин NaN, который означает «не число» – важная концепция, понимание которой, потребуется разработчикам на JavaScript при работе с числовыми значениями.

Ответ: Когда значение в операции не число, оно возвращает NaN. Это может произойти в нескольких случаях. Например, если операция возвращает неподходящий результат, потому что часть функции была нечисловой или результат имеет значение, не являющееся числовым.

Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека фронтендера»

3. Что такое примитивные типы данных в JavaScript?

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

Ответ: Фундаментальный тип данных, который не может быть создан от других типов данных. Он ограничен представлением одного значения. Все примитивы неизменяемы (immutable), не являются объектом и не имеют методов. По определению, все примитивы – встроенные типы данных, и компилятор должен знать их. Но не все встроенные типы данных – примитивы. В JavaScript доступно семь примитивных типов данных: undefined, null, boolean, string, number, bigint, symbol. Все остальное в JavaScript является объектом.

4. Как рассчитать числа Фибоначчи в JavaScript?

Создать последовательность чисел Фибоначчи – очень популярная задача для программистов. Попробуйте правильно ответить на него с помощью кода.

Ответ: Последовательность чисел Фибоначчи – это последовательность чисел, где каждое значение – это сумма двух предыдущих, начинается с 0 и 1. Первые пять значений это 0, 1, 1, 2, 3, 5, 8. Пример кода:

           // запросим ввод у пользователя 
   const number = parseInt(prompt('Enter the no. of terms: '));
   let n1 = 0, n2 = 1, nextNumber;
  
   console.log('Fibonacci Sequence:');
  
   for (let i = 1; i <= number; i++) {
     console.log(n1);
     nextNumber = n1 + n2;
     n1 = n2;
     n2 = nextNumber;
   }

    

5. Как динамически добавлять и удалять свойства в JavaScript?

Ответ: Вы можете добавить свойство к объекту используя, object.property_name = value, и удалить свойство, используя delete. Пример кода:

           
   let person = new Object();
   // добавляем свойство
   person.name='Rohan';
   person.age=35;
 
   console.log(person);
  
   delete person.age;
   console.log(person);

    

6. Объясните различие между Object.freeze() и const

Ответ: const и Object.freeze – две разные фичи JavaScript. const применяется только для неизменяемой ссылки на ячейку памяти со значением, что означает невозможность задать новое значение для переменной.

          const human = {
       name: "Rakesh"
   };
   let animal = {
       species: "Monkey"
   };
   human = animal; // ERROR "person" is read-only

    

Object.freeze работает со значениями объектов. Делает объект неизменяемым, то есть изменить его свойства невозможно.

         const human = {
       name: "Rakesh"
   };
   let animal = {
       species: "Monkey"
   };
   human = animal; // ERROR "human" is read-only
 
   let human = {
       name: "Rakesh"
   };
   let animal = {
       species: "Monkey"
   };
 
   Object.freeze(human);
   //TypeError: Cannot assign to read only property 'name' of object
   human.name = "Rohan";
   console.log(human);

    


7. Объясните, что такое файлы cookie в JavaScript

С помощью этого вопроса интервьюер оценивает ваши базовые знания в веб-разработке.

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

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

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

9. Зачем оборачивать содержимое исходного JS-файла в блок функции?

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

10. Каковы преимущества и недостатки монолитной и микросервисной архитектуры?

Интервьюер, вероятно, хочет увидеть, понимаете ли вы различия между ними и достаточно ли осведомлены о них, чтобы определить наиболее практичный подход в любой конкретной ситуации.
Ответ: Монолитные архитектуры обычно реализуются как приложение в виде единого компонента, что упрощает добавление задач, связанных со сквозной функциональностью (англ. сross-cutting concern), таких как: ограничение запросов, ведение журнала и различные функции безопасности. То есть к сквозной относится «вспомогательная» функциональность модуля, не относящаяся напрямую к выполняемой задаче, но необходимая. Поначалу такая архитектура может показаться более практичной, но по мере развития приложения становится все труднее поддерживать код или масштабировать его.


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

***

Желаем вам успехов в прохождении интервью!

Материалы по теме

Источники

Комментарии

ВАКАНСИИ

Добавить вакансию
Разработчик C++
Москва, по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ