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

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

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

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



Переводим wordpress на HTTPS + nginx

Если Вы ещё не в курсе, гугл уже давно https сайты ранжирует выше, чем http. А в ближайших планах он начнёт помечать все http сайты как небезопасные. К счастью "Let's Encrypt" предоставляет бесплатные сертификаты.

Учеба на программиста в современных реалиях

Давайте признаем, что сейчас, в России, есть только 2.5 вуза которые действительно учат. Все остальные только тратят Ваше время. По этому если Вы хотите стать программистом- вам придётся учиться самому.


(3) Комментариев

Михаил - 10.04.2018 12:10:06
- 0    + 0
Интересные задачки и вопросы, освежил знания по event loop и определению контекста this. Спасибо.
Dmitry - 01.03.2019 13:37:26
- 0    + 0
На какую позицию(джун, мидл,...) пытались устроиться?
Илья - 02.03.2019 06:34:32
- 0    + 0
В вакансиях не указывали, но я сам, конечно, не меньше мидла бы устраивался.