А так же о всякой фигне
Совсем недавно я проходил пачку интервью в несколько крупных компаний. Это будет небольшой сборник задач, которые меня просили решить прям на интервью.
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 вуза которые действительно учат. Все остальные только тратят Ваше время. По этому если Вы хотите стать программистом- вам придётся учиться самому.