Написать код решения задачи FizzBuzz
Что проверяют
Это разминочная задача, и проверяют не алгоритм, а то, как вы пишете код при чужих глазах: проговариваете ли условия до написания, попадаете ли в границы, называете ли переменные по смыслу. Для фронтендера есть второй слой: куда девается результат, в консоль, в строку или в разметку.
Как отвечать
Сначала вслух сформулируйте правила: кратно трём и пяти сразу, кратно трём, кратно пяти, иначе само число. Потом пишите.
function fizzBuzz(n) {
const out = [];
for (let i = 1; i <= n; i++) {
let s = "";
if (i % 3 === 0) s += "Fizz";
if (i % 5 === 0) s += "Buzz";
out.push(s || String(i));
}
return out;
}Накопление строки убирает четвёртую ветку с проверкой на пятнадцать и останется верным, если завтра попросят добавить семёрку. Вариант с тремя ветками else if тоже принимается, просто скажите, почему выбрали именно его.
Дальше сами назовите проверки: n равно 1, 3, 5, 15, и что делать при нуле или отрицательном значении. На фронтенд-позиции уместно спросить, нужен ли массив или строка, и добавить, что для вывода в DOM результат собирается целиком и вставляется один раз, а не дописывается в узел на каждой итерации.
Где спотыкаются
Промахиваются на границах: начинают с нуля, ловят 0 % 3 === 0 и печатают лишнее слово, либо ставят i < n и теряют последнее число. На проверке пятнадцатью это видно сразу.
Ставят проверку кратности трём раньше общей, и «FizzBuzz» не появляется никогда. Ошибка вылезает только на пятнадцати, поэтому тот, кто прогнал один пример с n равным пяти, её не находит.
Начинают с трюка вместо решения: однострочник из вложенных тернарных операторов, генерация массива цепочкой методов, рассуждения о скорости цикла. Интервьюер ждёт читаемый код и вслух названные проверки, производительность здесь не измеряется вообще.