Решение проблемы — важная вещь, чтобы получить работу программиста. Чтобы подготовить вас к собеседованию по программированию на Javascript, вот десять наиболее распространенных вопросов, которые задают на собеседовании:

  1. Перевернуть каждое слово в строке.

Код:

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;
}