🔥

Тред (Назим Гафаров)


Конечно от теоретических вопросов на собеседованиях не очень много пользы. Ведь продуктом жизнедеятельности программиста является код. Поэтому кажется разумным оценивать умение писать код. Покажу пример плохой и хорошей задачи на написание кода. ⬇️

Пример плохой задачи - 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$ каждый раз, когда я вижу такой код, то я был бы долларовым миллионером:
notion image

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