Ирина Кириченко "100 вопросов на собеседование по JavaScript. С подробными объяснениями"

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

date_range Год издания :

foundation Издательство :Издательские решения

person Автор :

workspaces ISBN :9785006204843

child_care Возрастное ограничение : 12

update Дата обновления : 22.12.2023

console.log("Hello, my name is " + this.name);

};

// Создаем экземпляр объекта Animal

let cat = new Animal("Whiskers");

// Вызываем метод sayHello у объекта cat

cat.sayHello(); // Выводит "Hello, my name is Whiskers"

8. Что такое стрелочные функции (arrow functions) и в чём их особенность? Какие у них могут быть ограничения?

Стрелочные функции (arrow functions) отличаются от обычных функций тем, что не имеют своего собственного контекста this, используя контекст окружающего кода. Они также короче и автоматически возвращают значение, если оно записано в одну строку без использования фигурных скобок. Однако у стрелочных функций есть ограничения, например, они не могут быть использованы как конструкторы или иметь свои собственные методы this.

const regularFunction = function(a, b) {

return a + b;

};

const arrowFunction = (a, b) => a + b; // Короткий синтаксис для однострочных выражений

// Стрелочная функция с использованием фигурных скобок

const arrowFunctionWithBlock = (a, b) => {

const result = a + b;

return result;

};

9. Что такое асинхронность в JavaScript? Какие инструменты предоставляет JavaScript для работы с асинхронным кодом?

Асинхронность в JavaScript – это способ выполнения операций, который не блокирует основной поток выполнения. В JavaScript для работы с асинхронным кодом используются колбэки (callbacks), промисы (promises), async/await и другие методы, позволяющие эффективно управлять асинхронными операциями.

// Пример использования Promise и fetch для асинхронного получения данных

fetch('https://api.example.com/data')

.then(response => response.json())

.then(data => console.log(data))

.catch(error => console.error('Error fetching data:', error));

// Пример использования async/await

async function fetchData() {

try {

const response = await fetch('https://api.example.com/data');

const data = await response.json();

console.log(data);

} catch (error) {

console.error('Error fetching data:', error);

}

}

10. Как работает система обработки ошибок (error handling) в JavaScript?

Система обработки ошибок (error handling) в JavaScript позволяет обнаруживать и обрабатывать ошибки в коде. Это включает в себя использование конструкции try…catch, где код, который может вызвать ошибку, помещается в блок try, а обработка ошибки происходит в блоке catch.

function divide(a, b) {

try {

if (b === 0) {

throw newError('Division by zero');

}

return a / b;

} catch (error) {

console.error('Error:', error.message);

}

}

console.log(divide(10, 2)); // Выведет: 5

console.log(divide(10, 0)); // Выведет: "Error: Division by zero"

11. Что такое hoisting в JavaScript? Как это работает с переменными и функциями?

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

console.log(myVar); // Выведет: undefined

let myVar = 10;

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

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

13. Что такое Event Loop в JavaScript? Как он влияет на выполнение асинхронного кода?

Event Loop (Цикл событий) – это механизм в JavaScript, который контролирует порядок выполнения кода. Он следит за стеком вызовов и очередью колбэков, перемещая колбэки из очереди в стек при завершении синхронного кода. Это позволяет асинхронному коду выполняться после завершения синхронных операций, не блокируя основной поток выполнения.

14. Какие основные принципы функционального программирования можно использовать в JavaScript?

Принципы функционального программирования в JavaScript включают использование функций высшего порядка, чистых функций, неизменяемости данных и функций map, filter и reduce для обработки данных. Эти концепции помогают создавать более чистый, модульный и легко поддерживаемый код.

Рассмотрим каждый из этих принципов более детально:

1)      Функции первого класса (First-Class Functions). В JavaScript функции являются объектами первого класса, что означает, что их можно присваивать переменным, передавать как аргументы, возвращать из других функций.

const greet = function (name) {

return `Hello, ${name}!`;

};

const sayHello = greet;

console.log(sayHello("John")); // Output: Hello, John!

2)      Чистые функции (Pure Functions). Чистая функция возвращает результат, основываясь только на своих аргументах, не имеет побочных эффектов и не зависит от глобального состояния.

function add(a, b) {

return a + b;

}

console.log(add(2, 3)); // Output: 5

3)      Неизменяемость (Immutability). Изменение состояния может привести к ошибкам и сложностям в отладке. В функциональном программировании ценится неизменяемость данных, и вместо изменения существующих данных создаются новые.

const numbers = [1, 2, 3];

const newNumbers = […numbers, 4]; // создание нового массива с добавлением элемента

console.log(newNumbers); // Output: [1, 2, 3, 4]

4)      Функции высшего порядка (Higher-Order Functions). Это функции, которые принимают другие функции в качестве аргументов или возвращают их. Они позволяют абстрагировать операции и создавать более гибкий и читаемый код.

const multiplyBy = function (factor) {

return function (number) {

return number * factor;

};

};

const double = multiplyBy(2);

console.log(double(5)); // Output: 10

5)      Рекурсия. Вместо циклов используется рекурсия для выполнения повторяющихся задач. Рекурсивные функции вызывают сами себя с изменяющимися аргументами.

function factorial(n) {

return n === 0 ? 1 : n * factorial(n – 1);

}

Похожие книги


Все книги на сайте предоставены для ознакомления и защищены авторским правом