Задачи по 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. И не забудьте, что результирующий массив должен сохранять тот порядок, в котором передавались функции.

  1. В каком порядке выведется консольлог и почему?
console.log('1');

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

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

console.log('4');
  1. Написать функцию sum(), которая будет работать как калькулятор:
sum(1)() // 1
sum(1)(2)() // 3
sum(1)(2)(-1)() // 2

И так далее.

  1. Есть код:
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"
  1. Что будет в консольлоге и почему?
function tack() {
    console.log('tick');

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

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

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

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


Сообщество: AWS

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


ID: #484   Создан:
Автор: Михаил

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

ID: #485   Создан:
Автор: Dmitry

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

ID: #486   Создан:
Автор: ololoev
>>485

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

ID: #487   Создан:
Автор: Марат

Отличные задачи, благодарю, было бы круто узнать решения от автора

ID: #684   Создан:
Автор: anonym

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

ID: #685   Создан:
Автор: ololoev

Это будет не спартивно)) В первой задаче всё просто, главное понять как работает стандартный Promise.all

ID: #718   Создан:
Автор: anonym

4 задача, в цикле просто поставить let вместо var

ID: #722   Создан:
Автор: vladique

nikak ne mogu sohranit' poryadok v pervoy zadache, a tak bomba razmyat' golovu zada4ki))

Всего: 8 комментариев на 1 страницах

Ваш комментарий будет анонимным. Чтобы оставить не анонимный комментарий, пожалуйста, зарегистрируйтесь



Сообщества