Skip to content

Список задач и вопросов по JavaScript, которые могут задавать на интервью.

Notifications You must be signed in to change notification settings

js-tasks-ru/js-coding-interview

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 

Repository files navigation

Вопросы для собеседования по JavaScript

Рекомендуется к прочтению: Cracking the Coding Interview


Что будет в консоли и почему?:

var a = 5;
function test () {
    a = 10;
    if (false) {
        var a = 20;
    }
}
test();
console.log(a); // ?

Какие числа выведутся и с какой задержкой?:

for (var i = 0; i < 10; i++) {
    setTimeout(() => { console.log(i); }, 1000);
}
// Как сделать чтобы выводились числа по порядку (несколько способов)?

Нечётные числа должны отсортироваться по возрастанию, а чётные должны остаться на своих местах:

const nums = [1,9,4,2,3,6,7,1,5]; // [1,1,4,2,3,6,5,7,9]

Найти не повторяющиеся числа:

const arr = [1,2,3,4,1,2]; // [3,4]

Сделать вложенный объект из строки:

const str = 'one.two.three.four.five';

/*{
    one: {
        two: {
            three: {
                ...
            }
        }
    }
}*/

arr.push(0) повлияет на массив так же, как если бы мы выполнили:

const arr = [1,2,3,4,5];
/*1*/ arr[0] = 0;
/*2*/ arr[arr.length] = 0;
/*3*/ arr[arr.length  1] = 0;
/*4*/ arr[-1] = 0;

Какие логические значения будут получены?:

const object = {
    foo: 1
};
console.log([
    'foo' in object,                  // ?
    'toString' in object,             // ?
    object.hasOwnProperty('foo'),     // ?
    object.hasOwnProperty('toString') // ?
]);

Что вернёт следующий код?:

Object.create(null).hasOwnProperty('toString');

Для каждого вложенного объекта нужно добавить свойство level, которое равняется числу (номер вложенности). Если значение свойства будет не объект, то ничего не добавлять:

const object = {
    a: {
        d: {
            h: 4
        },
        e: 2
    },
    b: 1,
    c: {
        f: {
            g: 3,
            k: {}
        }
    }
}

// Должно получиться так:
/*
{
    a: {
        level: 1
        d: {
            level: 2,
            h: 4
        },
        e: 2
    },
    b: 1,
    c: {
        level: 1
        f: {
            level: 2
            g: 3,
            k: {
                level: 3
            }
        }
    }
}
*/

Как можно заставить браузеры не кэшировать POST запрос?:

// Рассказать (вопрос с подвохом)

Какое значение будет в object.property?:

const object = {};
object.constructor.prototype.property = 1;
object.constructor.prototype = null;
console.log(object.property); // ?

Что выведется в console.log?:

let i = 10, arr = [];
while (i--) {
    arr.push(() => i + i);  
}
console.log([arr[0](), arr[0]()]); // ?

Написать функцию, которая будет возвращать true если строка (слово) является палиндромом, иначе false:

function isPalindrom (str) {
    //...
}
isPalindrom('казак'); // true
isPalindrom('строка'); // false
isPalindrom('шалаш'); // true

Напишите функцию, которая выводит в консоль числа от 1 до n, где n — целое число, которое функция принимает в качестве параметра, при этом:

  • выводит fizz вместо чисел, кратных 3;
  • выводит buzz вместо чисел, кратных 5;
  • выводит fizzbuzz вместо чисел, кратных и 3, и 5.
function fizzBuzz (num) {
    //...
}
fizzBuzz(5);
// 1
// 2
// fizz
// 4
// buzz

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

function isAnagram (str) {
    //...
}
isAnagram('finder', 'Friend'); // true
isAnagram('hello', 'bye'); // false

Написать функцию сложения вида sum(1)(2)(3)...:

function sum (num) {
    //...
}
sum(1)(2)(3)(4); // 10

About

Список задач и вопросов по JavaScript, которые могут задавать на интервью.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published