Решение проблемы — важная вещь, чтобы получить работу программиста. Чтобы подготовить вас к собеседованию по программированию на Javascript, вот десять наиболее распространенных вопросов, которые задают на собеседовании:
- Перевернуть каждое слово в строке.
Код:
2. Вызов FizzBuzz. Напишите функцию, которая делает следующее:
- консоль записывает числа от 1 до n, где n — целое число, которое функция принимает в качестве параметра
- регистрирует fizz вместо числа, кратного 3
- регистрирует buzz вместо числа, кратного 5
- регистрирует fizzbuzz для чисел, кратных как 3, так и 5
Код:
3. Напишите функцию «mul», которая будет правильно вызываться, как показано ниже:
console.log(mul(2)(3)(4)); // output : 24
Код:
const mul = a => b => c => a * b * c; console.log(mul(2)(3)(4));
Объяснение:
Здесь функция mul
принимает первый аргумент, и с помощью стрелочной функции мы принимаем второй аргумент, и снова, используя тот же метод, мы принимаем третий параметр, а затем возвращаем произведение аргументов.
4. Как проверить, является ли объект массивом или нет?
Код:
let arr = [1, 2, 3]; if (Object.prototype.toString.call(arr) === '[object Array]') console.log('Array'); else console.log("Not Array.")
Объяснение:
Оператор JavaScript Object.prototype.toString.call()
может различать числа, объекты и даже массивы и возвращает строку, указывающую тип объекта.
5. Проверить, являются ли две строки анаграммой друг другаr.
Код:
Объяснение:
Анаграмма строки — это другая строка, содержащая те же символы, только порядок символов может быть другим. Метод решения:
а) Сделать обе строки строчными и отсортировать. Чтобы использовать функцию sort(), сначала нам нужно преобразовать строку в массив.
б) Сравните отсортированный массив.
6. Каков будет вывод следующего кода?
var output = (function(x) { delete x; return x; })(0);
console.log(output);
Ответ: 0.
Объяснение: оператор delete
используется для удаления свойства объекта. Здесь x
не объект, а локальная переменная. Оператор delete
не влияет на локальные переменные.
7. Создайте закрытую переменную в функции и покажите значение вне этой функции.
Код:
function getPri() { let x = "Secret Code"; return function () { return x; } } // console.log(x); =>throws error, which means x is private. let ans = getPri(); console.log(ans());
8. Когда использовать привязку?
Ответ: Самое простое использование bind()
— создать функцию, которая, независимо от того, как она вызывается, вызывается с определенным значением this
.
Пример:
x = 9; var module = { x: 81, getX: function () { return this.x; } };
module.getX(); // 81
var getX = module.getX; getX(); // 9, because in this case, "this" refers to the global object
// create a new function with 'this' bound to module var boundGetX = getX.bind(module);
boundGetX(); // 81
9. Напишите рекурсивную функцию, которая выполняет бинарный поиск.
Код:
function recursiveBinary(arr, search, start, end) { if (start > end) return -1; let mid = Math.floor(start + (end - start) / 2); if (arr[mid] === search) return mid; if (arr[mid] > search) return recursiveBinary(arr, search, start, mid - 1); else return recursiveBinary(arr, search, mid + 1, end); }
10. Что делает «use strict»? Приведите пример.
Литерал use strict
вводится в начале программы JavaScript или в начале функции и помогает писать более безопасный код JavaScript, выдавая ошибку, если глобальная переменная создана по ошибке. Например, следующая программа выдаст ошибку:
function doSomething(val) {
"use strict";
x = val + 10;
}`
Это выдаст ошибку, потому что x
не было определено, и для него установлено какое-то значение в глобальной области видимости, что не разрешено с use strict
. Небольшое изменение ниже исправляет выдаваемую ошибку:
function doSomething(val) {
"use strict";
var x = val + 10;
}