Всё о web

Для чайников и не только


Задачи по Javascript используемые на интервью

Январь 21, 2017

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

1. Есть недописаная функция "parallel(funcArray, doneAll)":

function parallel(funcArray, doneAll) {

}

var a = function(done) {
  setTimeout(function() {
    done('result a');
  }, 300);
};

var b = function(done) {
  setTimeout(function() {
    done('result b');
  }, 200);
};

parallel([a,b], function(results) {
  console.log(results); // ['result a', 'result b']
});

Нужно её дописать. Что-то вроде аналога promise.all. И не забудьте, что результирующий массив должен сохранять тот порядок, в котором передавались функции.

2. В каком порядке выведется консольлог и почему?

console.log('1');

setTimeout(function() {
  console.log('2')
}, 0);

Promise.resolve().then( () => console.log('3') );

console.log('4');

3. Написать функцию sum(), которая будет работать как калькулятор:

sum(1)() // 1
sum(1)(2)() // 3
sum(1)(2)(-1)() // 2

И так далее.

4. Есть код:

function makeDroids() {

  var droids = [];

  /* test */
  for (var i = 0; i < 10; i++) {
    var droid = function() {
      console.log("R2D" + i);
    };
    droids.push(droid);
  }
  /* test */

  return droids;
}

for (let d of makeDroids()) {
  d();
}

Он выводит в консольлог 10 раз "R2D10", почему? Как его переписать, чтобы в консольлог выводилось:

"R2D0"
"R2D1"
"R2D2"
"R2D3"
"R2D4"
"R2D5"
"R2D6"
"R2D7"
"R2D8"
"R2D9"

5. Что будет в консольлоге и почему?

function tack() {
    console.log('tick');

    this.tack = function() {
        console.log('tack');
    };

    this.tick = function() {
        this.tack();
    };
}

var tick = new tack();
setTimeout(tick.tick, 10);

Были ещё задачи, которые я уже забыл. Если вспомню, допишу.



Комментарии

3 комментариев | “Задачи по Javascript используемые на интервью

  1. Аватар Михаил:

    Интересные задачки и вопросы, освежил знания по event loop и определению контекста this. Спасибо.

  2. Аватар Dmitry:

    На какую позицию(джун, мидл,…) пытались устроиться?

    1. Илья Илья:

      В вакансиях не указывали, но я сам, конечно, не меньше мидла бы устраивался.

Оставить комментарий:

Ваш e-mail не будет опубликован. Обязательные поля помечены *