В части 1 были рассмотрены вопросы, которые достались мне в одной из компаний. В этом материале хочу поделиться с вами вопросами, которые достались моему коллеге. Погнали.
1️⃣ Что выведет консоль? Аргументируйте свой ответ.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
(function() { f(); f = function() { console.log(1); } })() function f() { console.log(2) } f(); |
2️⃣ Что выведет консоль? Аргументируйте свой ответ.
1 2 3 4 5 6 7 8 9 10 11 |
const obj = { name: 'John', getName() { return this.name; } }; const name1 = obj.getName(); const getName = obj.getName; const name2 = getName(); console.log(`${name1} ${name2}`); // ? |
3️⃣ Создайте метод у объекта String, который многократно повторяет строку (не используя метод .repeat()).
1 |
console.log("hello". customRepeat(3)); // “hellohellohello” |
4️⃣ Есть список элементов button, на которые навешен обработчик события ‘click’. Что попадет в консоль, если пользователь нажмет первую и последнюю кнопку в списке? Аргументируйте свой ответ.
1 2 3 4 5 6 |
var nodes = document.getElementsByTagName('button'); for (var i = 0; i < nodes.length; i++) { nodes[i].addEventListener('click', function() { console.log('You clicked element #' + i); }); } |
5️⃣ Что выведет в консоль следующий код? Аргументируйте свой ответ.
1 2 3 4 5 6 7 8 |
function printme() { console.log(1); setTimeout(function() { console.log(2); }, 1000); setTimeout(function() { console.log(3); }, 0); console.log(4); } printme(); |
6️⃣ Напишите функцию isPalindrome(str), которая проверяет, является ли строка палиндромом
1 |
console.log(isPalindrome('asdsa')) // true |
7️⃣ Напишите функцию, складывающую 2 числа, которую можно вызывать следующим образом:
1 2 |
console.log(sum(2,3)); // 5 console.log(sum(2)(3)); // 5 |
8️⃣ Поменяйте местами значения целочисленных переменных, не используя временные переменные. Первый вариант – используя ES6, и второй вариант – используя ES5.
1 2 3 4 5 |
var a = 1; var b = 2; // b = 1; // a = 2; |
9️⃣ Напишите функцию, проверяющую число на четность, используя только битовые операции
К сожалению, мне удалось в первоисточнике собрать только практические задачки по JS 😕 Но на память могу сказать, что так же интервьюеры интересовались следующими темами:
1️⃣ Иммутабельность в контексте React + Redux;
2️⃣ Дан не сложный компонент на реакте и необходимо провести ревью (заюзать хуки useMemo / useCallback, вынести повторяющийся код в функцию или переменную и что-то там еще было);
3️⃣ Причины ререндера компонентов и как их избежать (те же useMemo, React.Memo, разбиение на более мелкие компоненты и т.д.);
4️⃣ Event Loop, call stack и где это применяется;
5️⃣ Async / await / Promise;
6️⃣ requestAnimationFrame;
7️⃣ Задача на рекурсию;
8️⃣ Рассказать про основные этапы рендера страницы. Какие ресурсы блокируют парсинг, а какие нет. Чем отличается async от defer. Этапы рендера (DOM/CSSOM, Render Tree, Layout, Paint);
9️⃣ Как можно оптимизировать страницу (не блокирующие скрипты, минификация CSS/JS, сжатие изображений, указание размеров изображений, фолбеки для шрифта, выделение critical CSS);
1️⃣0️⃣ Какие CSS-свойства влияют на производительность (преимущество transform: translate перед margin).