Конечно от теоретических вопросов на собеседованиях не очень много пользы. Ведь продуктом жизнедеятельности программиста является код. Поэтому кажется разумным оценивать умение писать код. Покажу пример плохой и хорошей задачи на написание кода.
⬇️
Пример плохой задачи - leetcode.com/problems/powx-…
Это плохая задача, т.к. она проверяет знание en.wikipedia.org/wiki/Exponenti…, а не умение писать код. Если бы проверялось умение писать код, то я бы написал:
const str = new Array(n).fill(x).join('*')
return eval(str)
🐸
Пример хорошей задачи: напишите функцию, которая на вход принимает массив типа:
[ {name: "a", value: 1}, {name: "b", value: 2} ]
а на выходе возвращает объект:
{ a: 1, b: 2 }
Казалось бы примитивная задача, но как и FizzBuzz, она круто выявляет пассажиров.
Что может быть проще? Любым перебором прошлись по массиву и заполнили объект. Проблемы начинаются как раз с перебора. Никто почему-то не хочет использовать reduce или forEach или хотя бы for of. Начинают писать обычный for, путаются в индексах и ничего не работает.
Дальше начинаются проблемы со скобочной записью в property accessors. Если бы мне платили по 1$ каждый раз, когда я вижу такой код, то я был бы долларовым миллионером:

А как правильно? Можно было бы просто взять reduce, но если тебе сегодня ко второму уроку, то вот моё решение:
const mapped = arr.map(({ name, value }) => [name, value])
return Object.fromEntries(mapped)
Красиво? Рука сама тянется к солнцу ☀️