Создание байтового массива по правилам FizzBuzz

Сначала проверьте делимость на 15, затем отдельно на 3 и 5; результат кодируйте явно, например UTF-8. При отсутствии делимости бросьте IllegalArgumentException.

Короткий ответ

Что ответить на собеседовании

Сначала проверьте делимость на 15, затем отдельно на 3 и 5; результат кодируйте явно, например UTF-8. При отсутствии делимости бросьте IllegalArgumentException.

Подробный разбор

Ответ с пояснениями

Условие

Метод принимает целое число number и возвращает массив байтов, формируемый по следующим принципам:

  1. Если число делится на 3 — в массив добавляется строка Fizz.
  2. Если число делится на 5 — в массив добавляется строка Buzz.
  3. Если число кратно одновременно 3 и 5 — в массив добавляется строка FizzBuzz.
  4. Если число не кратно ни 3, ни 5 — метод бросает IllegalArgumentException. Решение должно сопровождаться набором юнит‑тестов.
public class FizzBuzzGenerator {
    public byte[] generate(int number) {
        throw new RuntimeException("Not implemented yet");
    }
}

Ответ

Сначала проверьте делимость на 15, затем отдельно на 3 и 5; результат кодируйте явно, например UTF-8. При отсутствии делимости бросьте IllegalArgumentException.

public byte[] generate(int number) {
    String result;
    if (number % 15 == 0) result = "FizzBuzz";
    else if (number % 3 == 0) result = "Fizz";
    else if (number % 5 == 0) result = "Buzz";
    else throw new IllegalArgumentException("Not divisible by 3 or 5");
    return result.getBytes(java.nio.charset.StandardCharsets.UTF_8);
}

Пример проверок JUnit 5 внутри тестового метода:

var g = new FizzBuzzGenerator();
assertArrayEquals("Fizz".getBytes(StandardCharsets.UTF_8), g.generate(3));
assertArrayEquals("Buzz".getBytes(StandardCharsets.UTF_8), g.generate(5));
assertArrayEquals("FizzBuzz".getBytes(StandardCharsets.UTF_8), g.generate(15));
assertArrayEquals("FizzBuzz".getBytes(StandardCharsets.UTF_8), g.generate(0));
assertArrayEquals("Fizz".getBytes(StandardCharsets.UTF_8), g.generate(-3));
assertThrows(IllegalArgumentException.class, () -> g.generate(7));

По заданному условию ноль и отрицательные кратные допустимы: ограничения на положительность нет.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее