Фото автора Nangialai Stoman на Unsplash
Это продолжение предыдущего блога 20 вопросов на собеседовании по JavaScript с ответами по коду.
В этом блоге мы рассмотрим 10 часто задаваемых вопросов о JavaScript и дадим соответствующие ответы.
- В чем разница между функциями
setTimeout()
иsetInterval()
в JavaScript
setTimeout()
и setInterval()
— это встроенные функции в JavaScript, которые используются для задержки выполнения функции. Основное отличие состоит в том, что setTimeout()
будет выполнять функцию один раз после указанной задержки, а setInterval()
будет выполнять функцию повторно после указанной задержки.
// setTimeout() example setTimeout(() => { console.log('Hello world!'); }, 1000); // output: Hello world! (after 1 second) // setInterval() example let counter = 0; let intervalId = setInterval(() => { counter++; console.log(`Counter: ${counter}`); }, 1000); // output: Counter: 1, Counter: 2, Counter: 3, ... (every 1 second) // Stop setInterval() after 5 seconds setTimeout(() => { clearInterval(intervalId); }, 5000); // Stop after 5 seconds
2. Какова цель функции обратного вызова в JavaScript? Приведите пример.
Функция обратного вызова в JavaScript — это функция, которая передается в качестве аргумента другой функции и выполняется внутри этой функции. Он обычно используется в асинхронном коде для обработки результата операции.
Пример:
function fetchData(callback) { setTimeout(() => { callback('Data fetched successfully!'); }, 2000); } function handleData(data) { console.log(data); } fetchData(handleData); // output: Data fetched successfully!
3. Как удалить дубликаты из массива в JavaScript?
В JavaScript вы можете удалить дубликаты из массива, используя объект Set
и оператор расширения (...
).
let arr = [1, 2, 3, 1, 2, 4]; let uniqueArr = [...new Set(arr)]; console.log(uniqueArr); // output: [1, 2, 3, 4]
В этом примере объект Set
используется для создания нового набора уникальных значений из исходного массива arr
, а оператор распространения используется для преобразования набора обратно в массив.
4. Как преобразовать строку в число в JavaScript?
В JavaScript вы можете преобразовать строку в число, используя методы parseInt()
или parseFloat()
.
let str = '123'; let num = parseInt(str); console.log(num); // output: 123 let floatStr = '3.14'; let floatNum = parseFloat(floatStr); console.log(floatNum); // output: 3.14
5. Что такое замыкание в JavaScript? Приведите пример.
Замыкание в JavaScript — это функция, которая имеет доступ к переменным в своей внешней области видимости, даже после возврата внешней функции. Он обычно используется для создания частных переменных и функций. Ниже приведен пример:
function createCounter() { let count = 0; return function() { count++; console.log(count); } } let counter = createCounter(); counter(); // output: 1 counter(); // output: 2 counter(); // output: 3
6. Каково назначение ключевого слова this
в JavaScript?
Ключевое слово this
в JavaScript — это ссылка на объект, который в данный момент выполняет код. Его значение зависит от того, как вызывается функция. Он обычно используется в объектно-ориентированном программировании для доступа к свойствам и методам объекта.
let person = { name: 'John', greet: function() { console.log(`Hello, my name is ${this.name}`); } } person.greet(); // output: Hello, my name is John
В этом примере метод greet()
объекта person
использует ключевое слово this
для доступа к свойству name
объекта. При вызове метода this
ссылается на объект person
.
7. Как реализовать функцию устранения дребезга в JavaScript?
Функция debounce используется для ограничения количества вызовов функции, особенно в ответ на ввод данных пользователем, для повышения производительности. Ниже приведен пример реализации функции устранения дребезга.
function debounce(func, delay) { let timeoutId; return function(...args) { clearTimeout(timeoutId); timeoutId = setTimeout(() => { func.apply(this, args); }, delay); }; } function onSearchInput(event) { console.log(event.target.value); } let debouncedOnSearchInput = debounce(onSearchInput, 500); document.getElementById('search-input').addEventListener('input', debouncedOnSearchInput);
В этом примере функция debounce()
принимает функцию func
и время задержки delay
в качестве аргументов и возвращает новую функцию, которая вызовет func
с задержкой delay
миллисекунд. Метод clearTimeout()
используется для отмены предыдущего тайм-аута и запуска нового каждый раз при вызове возвращаемой функции, так что func
вызывается только один раз после указанной задержки.
8. Как реализовать основанную на промисах версию setTimeout()
в Node.js или JavaScript?
Node.js предоставляет встроенную функцию setTimeout()
для задержки выполнения кода. Однако он не возвращает промис, что в некоторых случаях может затруднить работу. Вот пример реализации основанной на промисах версии setTimeout()
.
function delay(timeout) { return new Promise(resolve => { setTimeout(() => { resolve(); }, timeout); }); } delay(1000).then(() => { console.log('Delayed code executed'); });
В этом примере функция delay()
принимает значение тайм-аута в качестве аргумента и возвращает обещание, которое разрешается после указанного тайм-аута. Метод then()
используется для выполнения кода после разрешения промиса.
9. Как реализовать алгоритм бинарного поиска в JavaScript?
Алгоритм бинарного поиска — это алгоритм быстрого поиска, который работает путем деления отсортированного массива пополам и повторного исключения половины оставшихся элементов до тех пор, пока не будет найдено целевое значение или не останется элементов для поиска.
Пример:
function binarySearch(array, target) { let left = 0; let right = array.length - 1; while (left <= right) { let mid = Math.floor((left + right) / 2); if (array[mid] === target) { return mid; } else if (array[mid] < target) { left = mid + 1; } else { right = mid - 1; } } return -1; } let arr = [1, 3, 5, 7, 9]; console.log(binarySearch(arr, 5)); // output: 2 console.log(binarySearch(arr, 6)); // output: -1
10. Как реализовать функцию, которая возвращает случайный элемент из массива в JavaScript?
Ниже приведен пример реализации функции, которая возвращает случайный элемент из массива в JavaScript.
function getRandomItem(array) { return array[Math.floor(Math.random() * array.length)]; } let arr = [1, 2, 3, 4, 5]; console.log(getRandomItem(arr)); // output: a random item from the array
В этом примере функция getRandomItem()
принимает массив в качестве аргумента и возвращает случайный элемент из массива, используя Math.random()
и Math.floor()
. Функция сначала умножает Math.random()
на длину массива, чтобы получить случайный индекс, а затем использует Math.floor()
для округления индекса до целого числа. Затем функция возвращает элемент массива со случайным индексом.
мы рассмотрели 10 часто задаваемых вопросов на собеседованиях для разработчиков JavaScript и Node.js среднего и старшего уровня. Эти вопросы охватывают целый ряд тем, от работы с массивами и строками до реализации алгоритмов и шаблонов проектирования.
Помните, что это лишь небольшая часть возможных вопросов для собеседования, и есть еще много других, которые можно изучить.
В случае, если вы не читали первую часть этой серии вопросов для интервью по JavaScript, я рекомендую вам ознакомиться с нашей первой записью в блоге на эту тему: 20 вопросов для интервью по JavaScript с ответами по коду.
Спасибо за прочтение, и мы надеемся, что вы нашли этот пост полезным при подготовке к интервью.
Если вы заинтересованы в присоединении к Medium, воспользуйтесь моей личной реферальной ссылкой, чтобы стать участником. Вы получите неограниченный доступ к отличному контенту и поддерживающему сообществу, а также к платформе, которая ценит качественный контент!