Я выполнил несколько задач по программированию в рамках моей кандидатуры на ученичество по веб-разработке. К сожалению, моя заявка была отклонена, поскольку менеджеру по найму «не понравились мои коды». Я позвонил в их офис, но никто не смог предоставить мне достаточную обратную связь.
Если бы кто-нибудь из вас мог сказать мне, что я мог бы неправильно понять или что я мог бы сделать правильно, я очень признателен.
Задачи, с которыми я работал
Напишите программу, которая показывает числа от 1 до указанного предела (например, 100).
Числа должны быть переведены следующим образом: 1. Для кратных 3 верните «Fizz» 2. Для кратных 5 верните «Buzz» 3. Для кратных 3 и 5 верните «FizzBuzz» 4. Если ни одно из других правил не применимо, вернуть сам номер
Модульные тесты необязательны, но были бы плюсом.
Мое решение
public class FizzBuzz {
//a class *variable*, not a class
private static int counter;
//checking if a multiple of 3
private static boolean isFizz(int i) {
return i % 3 == 0; //no need for if
}
//checking if a multiple of 5
private static boolean isBuzz(int i) {
return i % 5 == 0; //no need for if
}
public static void main(String[] args) {
for (int i = 1; i <= 100; i++) {
System.out.println(i);
if (i % 5 == 0 && i % 3 == 0) {
System.out.println("FizzBuzz");
} else if (i % 3 == 0){
System.out.println("Fizz");
} else if (i % 5 == 0) {
System.out.println("Buzz");
} else {
System.out.println(i);
}
}
}
@Test public void testFizzBuzz(){
assertEquals("fizz", fizzBuzz(i == 3));
assertEquals("buzz", fizzBuzz(i == 5));
assertEquals("fizzbuzz", fizzBuzz(i == 15));
assertEquals("2", fizzBuzz(i == 2));
}
}
3 ответа
Вы не используете вызовы counter, isFizz () или isBuzz (), testFizzBuzz () для метода fizzBuzz, которого, похоже, не существует. (Передача логического аргумента, который кажется нелогичным).
Ваш код хорошо отформатирован, но приведенные выше пункты означают, что рецензент усомнится в вашей компетентности.
Вы показали нам весь свой код? Если нет, то почему?
Вы компилировали, запускали и тестировали свой код? Если нет, то почему?
Супер короткий обзор;
- Ваш код должен быть в основном в красиво названных методах, а не
main
- Ты звонишь
System.out.println(i);
дважды, что означает, что вы не соблюдаете правила fizzbuzz counter
не используется, и я не уверен, что это должно было быть объявленоstatic
- Зачем писать тест для
isFizz
/isBuzz
а затем никогда не использовать их, это выглядит странно для интервьюера
Кроме того, FizzBuzz — очень распространенный вопрос на собеседовании. Погуглите, воспользуйтесь YouTube, вы многому научитесь.
Наконец-то я нашел решение в очень старой ветке стека: https://stackoverflow.com/questions/9584065/ways-to-improve-my-fizzbuzz-solution-for-a-tdd-role
Это помогло мне понять, почему я должен был поместить эту конкретную строку для проверки определенных чисел и почему я должен был возвращать число в определенном состоянии.
Я не думаю, что должен помещать свой улучшенный код (щелкните ссылку выше), но я записал результат, чтобы доказать, что он компилируется правильно:
username@users-MBP hello % /usr/bin/env /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/bin/java -Dfile.encoding=UTF-8 -cp "/Users/username/Library/Application Support/Code/User/workspaceStorage/e8063a6e0a1d88b691fe93eca125d683/redhat.java/jdt_ws/hello_e5876c4d/bin" FizzBuzz 1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz, 16, 17, Fizz, 19, Buzz, Fizz, 22, 23, Fizz, Buzz, 26, Fizz, 28, 29, FizzBuzz, 31, 32, Fizz, 34, Buzz, Fizz, 37, 38, Fizz, Buzz, 41, Fizz, 43, 44, FizzBuzz, 46, 47, Fizz, 49, Buzz, Fizz, 52, 53, Fizz, Buzz, 56, Fizz, 58, 59, FizzBuzz, 61, 62, Fizz, 64, Buzz, Fizz, 67, 68, Fizz, Buzz, 71, Fizz, 73, 74, FizzBuzz, 76, 77, Fizz, 79, Buzz, Fizz, 82, 83, Fizz, Buzz, 86, Fizz, 88, 89, FizzBuzz, 91, 92, Fizz, 94, Buzz, Fizz, 97, 98, Fizz, Buzz
имя пользователя @ пользователи-MBP привет%
Вы показали нам весь свой код? Если нет, то почему? Да. Вы компилировали, запускали и тестировали свой код? Если нет, то почему? Да, и я подтвердил, что он стрелял правильно с моей стороны.
— morry239
Я не люблю обвинять кого-либо во лжи, но этого просто не может быть — этот код не компилируется по нескольким причинам. Давайте начнем с первого, которое обнаружила моя IDE, что в вашем тесте нет переменной «i». Если я исправлю это, не будет никакого (логического) метода fizzBuzz. Если вы не понимаете, почему мы возражаем против кода и почему менеджер по найму отклонил его, вам нужно потратить намного больше времени на изучение Java. Если представленный код действительно компилировался и запускался, я думаю, у вас должна быть очень странная цепочка инструментов!
— Марк Блюмел
Да, мне кажется, у меня очень странный набор инструментов.
— morry239