FizzBuzz - правда? [закрыто]

60

Когда речь заходит о вопросах «собеседования», часто возникает тема FizzBuzz. Об этом также есть пост Кодирующего Ужаса .

Теперь, если вам надоело читать сайты, подобные этому, вы, вероятно, с меньшей вероятностью попадете в демографическую группу программистов, которые найдут FizzBuzz совсем не тривиальным.

Но правда ли, что 99% программистов будут бороться с этим?

В самом деле?

Какие доказательства подтверждают это?

Некоторые примеры из реальной жизни будут очень полезны для ответа на этот вопрос.

DanSingerman
источник
57
Это не 99% программистов, это 99,5% претендентов (многие из которых не программисты).
webbiedave
4
Я не верил в это, пока не получил его на собеседовании - позже я получил работу, а потом все еще болтал с генеральным директором об этом. Видимо 99% это правильно. Оо
Fishtoaster
3
Я всегда думал, что вопросы о fizzbuzz - это миф, или, может быть, только для новичков, но только однажды меня действительно спросили на собеседовании. Да, у многих кандидатов действительно есть проблемы с этим?
DarenW
2
Я регулярно выкладываю тест FizzBuzz на собеседованиях и регулярно заставляю людей проваливать его. Один графический дизайнер передал это однажды, хотя ..... Меня немного
удивило
4
@ Rogue Coder - Эй, мы не глупые, просто странные. И большинство из нас сосут в математике.
Инамати

Ответы:

46

99%? Нет. Значительный процент? Да. Из моего личного опыта интервьюирования людей я могу засвидетельствовать это. Это может показаться незначительным для вас, но есть много людей в области программирования, которые в течение многих лет более или менее притворялись, что подали заявку на позиции не начального уровня и потерпели неудачу.

Даже если вы МОЖЕТЕ легко решить эту проблему, но вы дадите мне огромную уверенность в том, что вас попросят выполнить такую ​​черную задачу, это будет считаться против вас. Быть в команде означает, что иногда приходится делать то, что вам не нравится, но это необходимо. Если сразу, прежде чем мы даже начали работать вместе, вы думаете, что было бы лучше попытаться утвердить свой особый статус того, чтобы быть выше, чем делать то, что я просил вас сделать, тогда это будет действовать против вас.

Меня не волнует, насколько элегантно ваше решение (хотя это было бы неплохо), но вид, что вы делаете удар по доске и обсуждаете ее, показывает мне, что вы, по крайней мере, готовы нанести удар , Если вы возмущаетесь и говорите что-то вроде: «Я решаю проблемы, а не обезьяна кода!» тогда вы будете сбиты колышком.

У меня были просто собеседники, отказывающиеся даже начинать попытки. Просто откажись. Нет. Не буду этого делать Я задаю еще один или два вежливых вопроса, благодарю их за потраченное время и заканчиваю интервью.

Я говорю это как менеджер и как разработчик.

Тодд Уильямсон
источник
1
Каковы их основания для отказа в попытке?
Джон Хопкинс
3
Я никогда не спрашивал их напрямую. После их второго отказа я задавал еще пару вопросов, а затем закрывал интервью. Если бы я собирался Угадай, это было бы то, что они слишком нервничали, чтобы попытаться (если я был благотворительным), или что они не могли понять это на месте (если я был более циничным).
Тодд Уильямсон
1
Я знаю парня, который отказывается кодировать в интервью. Он также отказывается запоминать все, что он может найти за несколько секунд поиска в Google. Он "решатель проблем".
kirk.burleson
4
Опять же, кодирование доски - это проблема, которую интервьюер дает вам ... что, возможно, должно быть решено? Для меня отказ от кода в интервью равносилен отказу от решения проблемы, которая есть у интервьюера. Отсюда противоречие с термином «решатель проблем», и это больше похоже на то, что парень «отказчик от проблем».
Спойл
@ Спайк Нет, потому что решающим проблемы не нужно знать синтаксис какого-либо языка программирования, не так ли?
Пьер Арло
25

Я думаю, что 99% программистов, которые претендуют на работу (и не получают ее), могут бороться за это. Но не 99% программистов, которые продуктивно держат работу.

Такова природа нашего современного процесса поиска работы. Многие люди, которые обращаются, не имеют квалификации.

Этот пост Coding Horror также говорит о том, как мы преподаем информатику в наши дни. В прошлом (особенно в MIT) вы должны были изучать такие вещи, как Lisp, что в значительной степени требует от вас понимания таких понятий, как рекурсия.

В настоящее время людей учат Java, потому что он широко используется в промышленности, и акцент сместился на синтаксис, а не на глубокое программирование. Я не люблю Java; на самом деле, я думаю, что это идеальный первый язык программирования. Но я не видел, чтобы мои преподаватели учили его глубоким принципам программирования.

Роберт Харви
источник
11
Да, я думаю, что наша система образования (по крайней мере, в США) является большой частью этого. Я знаю человека, который получил 2-летнюю степень по программированию, закончил с отличием и не мог читать или писать код.
Рэйчел
8
Аргумент против обучения Java является слабым. Концепции можно преподавать на большинстве языков (например, recusrion легко пишется на Java). Я не согласен с тем, что преподавание преподаваемых концепций становится все слабее, но я не виню это произвольно за язык реализации.
Стивен Эверс
1
О таких вещах, как Рекурсия, учат, они просто не привыкают. Вы получаете ту же оценку за написание оператора IF из 100 строк, что и за рекурсивную функцию (по крайней мере, вы делали это там, где я был), а оператор IF из 100 строк легче писать, когда вы спешите (т.е. вы пропустил домашнее задание до 5 минут, прежде чем вам нужно его сдать)
Рэйчел
1
@SnOrfus: Я не виню в этом и Java. Я не приводил аргументов против обучения Java. Да, вы можете учить этим концепциям на Java, но я не видел, чтобы это произошло, во всяком случае, в тех классах Java, которые я посещал. Тем не менее, MIT изначально выбрал Scheme для своих вводных классов программирования, потому что он имеет очень простой синтаксис, поэтому вы начинаете думать о концепциях программирования на ранней стадии, не обращая особого внимания на синтаксис языка.
Роберт Харви
4
Кто на земле идет в университет, где они "учат Java". Языковые школы программирования менее чем полезны (независимо от того, являются ли они Java, C ++, Lisp или чем-то еще); это то, что у вас в США? Там, где я изучал CS, вы более или менее учили себя прог-языку по мере необходимости (я полагаю, исключением будет класс Paradigms). Университетские курсы преподавали математику, теорию КС, множественные парадигмы программирования, исчисление и т. Д. Любой, кто заканчивает это, может легко решить FizzBuzz, потому что нам приходилось решать более сложные задачи, просто чтобы пройти курсы.
Андрес Ф.
20

Я ненавижу это говорить, но

Основная причина, по которой я не смог получить ответы на вопросы по программированию, - это ошибка автора, а не автора.

Я хорошо помню одно интервью, в котором меня спрашивали, как создать определенный алгоритм поиска в коллекции, который будет работать в постоянное время (одинаковое количество просмотров независимо от того, сколько элементов в коллекции). Я шарил и шарил на нем 20 минут, прежде чем сдаться. Именно тогда этот гений, проводивший собеседование, продолжил демонстрировать ответ как нечто, действующее почти постоянно, но все же не постоянно. Немного похоже на высказывание «Дайте мне ответ ноль», а затем принять 0,1.

Если не считать того, что я видел слишком много случаев, когда кто-то из опрошенных задает вопрос, который не соответствует следующим критериям:

  1. Они знают все возможные правильные ответы.
  2. Они знают, почему правильные ответы верны.
  3. Они знают, как на самом деле предоставить достаточно информации, не давая ответ.
  4. Вопросы «решения проблем» не основаны на знании нераскрытого факта (это самая большая проблема, которую я видел).
  5. Чтобы написать ответ, потребуется менее 1 минуты, если вам не нужно его выяснять. Если для того, чтобы набрать код, потребуется 5 минут, это действительно требует большего решения проблем, чем может быть вписано в словесную часть интервью.
  6. Вопросы основаны не только на том, что «однажды я столкнулся с проблемой или мне ее дали в школе, поэтому вы должны знать, как ее решить прямо сейчас ». Держу пари, у вас было больше 2 минут, чтобы ответить на этот вопрос, почему вы не предоставляете кандидату такую ​​же любезность.

Серьезно (1), я думаю, что просить людей писать код в устной части интервью глупо.

Серьезно (2), я думаю, что брать интервью у людей, не прося их написать код, также глупо.

Серьезно (3), вы должны либо дать им «домашнюю работу», попросить их принести образцы кода, либо дать им ноутбук и пару вопросов и тихий офис для работы над ними. Затем оставьте их в покое, пока они над ними работают. Я обычно придерживаюсь последнего подхода, так как он ограничивает их способность получать помощь извне (читерство), и я могу ограничить время.

MIA
источник
Была ли у вас беседа с интервьюером, объясняющая, почему их решение не было постоянным? Если бы я был интервьюером, а вы смогли бы лаконично и без злого умысла убедить меня, что я был неправ, я бы сразу нанял вас на работу.
Неми
1
@ Неми - Да, я сделал. Речь шла не о человеке с правом найма, но я получил предложение на эту должность.
МВД
8
int? result; for (int i = 0; i < int.MaxValue; i++) { T item = (i < array.Length) ? array[i] : someDummyItem; if (item == whatWereLookingFor) result = i; } return result;- постоянное время :)
конфигуратор
Поправьте меня, если не прав, но я думаю, что хэш-таблицы имеют постоянное время доступа, при условии, что они выполнены правильно и нет коллизий. Поэтому поиск с использованием хеш-функции должен быть возможен в постоянное время.
Trylks
Хеши могут иметь коллизии. Вот почему его обычно называют амортизированным постоянным временем.
Буровая установка
10

Все, что вам нужно сделать, это поиск по FizzBuzz. Там была огромная волна постов в блоге. Говоря в общем, блоггер сказал: «Я сказал людям написать это [на каком-то языке], и вот такие ошибки они совершили», а затем перечислил некоторые подводные камни. Веселье начинается в комментариях, где люди говорят: «Ха! Это тривиально на [каком-то другом языке], все, что вам нужно написать, это:», а затем код. Следующий комментарий всегда находит ошибки в первом. Похоже, что некоторые очень хорошие разработчики не понимают это с первого раза, на любом языке. Некоторые из ошибок:

  • Я попросил от 1 до 100, а вы сделали от 1 до 99 или от 0 до 99
  • возиться с тем, печатать ли номер вместе с шипением и / или гудением
  • разногласия по поводу "fizzbuzz" против "fizz-buzz"
  • пропущенные оптимизации, как сравнение дважды, когда один раз будет делать
  • еще больше

Когда я нанимаю, я прошу людей написать для меня код на доске, ничего более сложного (я знаю, вы не думаете, что это сложно), и многие кандидаты терпят неудачу. Я имею в виду то, что пишу в стиле «если», «потом», «конец» и «если», но также ставлю фигурные скобки (я думаю, это просто для безопасности) или пишу на C # (и сначала спрашиваю, C #?), Но нигде не должно быть ни одной точки с запятой. Не заводи меня на логические ошибки!

Кейт Грегори
источник
2
@Джефф большинство разработчиков сначала пишут что-то, что не скомпилируется. Хорошие видят и исправляют простые синтаксические ошибки. Подчеркнутые, хорошие или спокойные, хорошо, программисты пишут функцию, но не имеют кода для ее вызова, пишут что-то, что не является сверхоптимизированным, страдает (и не замечает) одно за другим или может пропустить синтаксическую ошибку или две. Ужасные программисты пишут код, который далеко не компилируется, делает совершенно неправильные вещи и т. Д. Например, цикл до 3 или до 5, так как это вопрос, вместо цикла до 99 или 100 или 101 (иш.) Или даже нет код вообще. Вы действительно не можете поверить в это, пока не увидите это.
Кейт Грегори
7
Если {"If {} Then {} EndIf" квалифицируется как полный провал} Тогда {Ваш стиль интервью неисправен и / или вам невероятно повезло, что вы можете отстранить кандидата на такой тривиальной основе} EndIf
Sparr
7
Я программирую как минимум на дюжине языков ежемесячно. Сядьте перед компьютером и попросите поработать на компьютере, которого я не трогал в течение месяца, и я буду совершать подобные ошибки в течение первых пяти минут, пока я возвращаюсь в паз, обычно на мои ошибки указывают компилятором или интерпретатором.
Спарр
2
@Sparr - конечно. Поэтому, если я попрошу вас взглянуть на доску, вы, вероятно, заметите ее и скажете: «Ой, я использую много языков». Если нет, я скажу: «На каком языке вы это написали?» и тогда вы будете. Это не вопрос с подвохом или ловушка. Некоторые люди на самом деле никогда не писали код и утверждают, что они написали. В этом суть таких вопросов.
Кейт Грегори
2
Но я думаю, что эти вопросы не годятся для этого. За пять минут до начала этой цепочки комментариев я не мог сказать, требовал ли VB скобки вокруг блоков кода. Я мог бы сказать вам, что If / Then / EndIf выглядит в основном как VB [.Net]. И я пишу код на VB в течение ... около двух часов каждые три месяца (задачи rentacoder.com, я никогда не берусь за настоящие рабочие места на VB, я ненавижу это).
Спарр
10

Я прочитал статью о кодирующем ужасе, о которой вы упомянули, и мое мнение таково, что Джефф прав ... но когда он последний раз брал интервью?

Когда вы проходите собеседование, вы, как правило, находитесь в состоянии сильного стресса, и вам часто приходится отвечать на теоретические вопросы (без интеллигенции, без Google, без резких уточнений, ... только ваша память обеспокоена стрессом). То же самое в тестах. Стресс не помогает тебе.

Я заметил, что единственный способ узнать, подходит ли кто-то на должность, - это поработать с ним какое-то время ... Просто возьмите последние 10 человек, которых вы наняли, из 100 (может быть, больше), сколько было действительно хорошо нанимать???

Работодатель должен нанять решателя проблем, а не обезьяну, которая знает о модулях.

Вы не можете тестировать «на время всех заявителей», поэтому необходимо провести с ними собеседование. Вот почему я сосредотачиваю свои вопросы на этом (решение проблем) и делаю прошлые контрольные проверки.

Мое мнение таково, что FizzBuzz опасен для компании, которая ищет разработчиков для поддержания своего роста.


источник
28
ИМХО, проблема в том, что FizzBuzz - такой низкий вопрос, что, если вы не можете ответить на него даже в состоянии стресса, вы заслуживаете того, чтобы люди смеялись вам в лицо, если вы называете себя «программистом». Если бы это было что-то немного более сложное, например, «реализовать пузырьковую сортировку», то эти оправдания и опасения были бы оправданы, но не для FizzBuzz.
дсимча
23
FizzBuzz это хорошо, что это для: фильтрация людей , которые не знают ничего от людей чего - то . И, зная что-то, все еще может быть недостаточно, чтобы сделать работу. Это не тест на принятие решения о найме, это тест «ты собираешься тратить мое время на собеседование». Некоторые менеджеры по найму пытаются зайти слишком далеко, чтобы заставить их сделать свою работу за них.
Стивен Эверс
31
Боже мой, по модулю не какой-то эзотерический оператор. Это основная операция, с которой все разработчики должны иметь опыт, если они хотят называть себя профессиональными программистами. Независимо от того, если кто-то может написать FizzBuzz, это не значит, что вы нанимаете их. Это просто быстрый отправной пункт, чтобы увидеть, может ли этот человек даже попытаться расположить поток управления, необходимый для выполнения задачи.
webbiedave
12
Я думаю, что FizzBuzz полезен просто потому, что он настолько ошеломляюще тривиален. Требуется цикл for, два оператора if, по модулю и print. Любой, имеющий какой-либо значимый опыт программирования, должен иметь возможность справиться с этим, не задумываясь. Если кто-то борется с этим на собеседовании, я считаю это вполне приемлемым лакмусовой бумажкой.
Адам Кроссленд
11
@snorfus: Подано под "чужой проблемой". Я бы предпочел пропустить лодку на одном хорошем разработчике с вредной социальной тревогой, чем тратить драгоценное время и деньги на обучение и ждать результатов от кого-то, у кого нет навыков программирования. Не можете справиться с другими людьми? Смотрите терапевта.
Aaronaught
10

Недавно мне было поручено опросить более 50 программистов на руководящую должность, где они будут работать в основном с PHP.

Я бросил проблему fizzbuzz на экзамене, главным образом, чтобы развлечься, и потому что я хотел десять хороших вопросов и имел только девять. В то время я намеревался показать людям, что мы тоже можем повеселиться, даже на вопросах интервью.

80% заявителей решили проблему, но не использовали оператор модуля.

15% соискателей не смогли решить проблему.

5% заявителей решили проблему с помощью оператора модуля.

Хотя моя выборка довольно ограничена (50 кандидатов из одной страны), я могу вам сказать, что:

95% из них имели степень бакалавра или выше в учебной программе CS (университеты здесь конкурируют, пытаясь сделать звучание CS более впечатляющим).

Я был действительно поражен. Ну, напуган .. но поражен. Я не думал, что смогу приблизиться к воспроизведению результатов, так как проблема стала настолько популярной. Это показывает, что 5% моих кандидатов могут не быть супер-программистами, но, по крайней мере, они читают блоги, связанные с программированием.

Тим Пост
источник
Я бы подумал, что использование модульного оператора было самым очевидным, я удивлен, что 95% людей, которые успешно решили проблему, использовали что-то другое. Возможно, это потому, что они были новыми выпускниками и сделали математику тогда?
Jmoreno
Я никогда не изучал оператор модуля ни в одном из моих классов. Если бы я не проходил стажировку и не занимался временем, участвуя в проектах с открытым исходным кодом, я бы никогда не научился этому, пока не попал в индустрию. Кроме того, меня учили на одном из вводных уроков информатики, что троичный оператор - плохая практика кодирования, потому что он слишком запутан и труден для чтения.
Роберт Фрейзер
Что они использовали вместо оператора остатка? x - (x/y)*y?
CodesInChaos
9

В моем последнем раунде приема на работу у меня было 3 строителя с 0, я повторяю ноль, образование в области программирования или опыт работы на должность разработчика программного обеспечения. * Так что это дно ствола. Если вы предполагаете нормальное распределение навыков, то вы можете видеть, как средний уровень квалификации будет довольно низким, и даже «выше среднего» (среди заявителей) все равно будет относительно плохим.

Теперь, если вы ошарашиваете только тех кандидатов, у которых были какие-то навыки программирования, вы обнаружите, что теперь у вас есть:

  1. лжецы
  2. Любители модных слов (однажды прочитал статью о .NET)
  3. плохие настоящие программисты
  4. люди, которые использовали технологию для завершения проекта, но не узнали об этом (см. fizzbuzz вопросы о том, как их идентифицировать)

Кроме того, некоторые вопросы «fizzbuzz», которые я видел, относятся к конкретным доменам. Вы можете постепенно развиваться с языком / фреймворком x в течение ряда лет (отсюда и z-летний опыт работы с x) и не сталкиваться с определенными его частями (например, разработчики библиотек не слишком много знают о разработке компонентов пользовательского интерфейса).

Аналогичным образом, многие разработчики в настоящее время занимаются разработкой обслуживания, поэтому их навыки в области архитектуры / дизайна могут быть слабыми в некоторых областях.

Теперь я не уверен, что 99% является точным, но IME все еще довольно высок. По крайней мере, в диапазоне 80%.

* Нет, мы не звонили и даже не давали второй взгляд на эти приложения.

Стивен Эверс
источник
3
У нас была похожая ситуация, но так как в нашем контракте с клиентом было указано, что у нас будет 4 штатных разработчика, назначенных на проект, и проект был в основном завершен, парень, работающий с гипсокартоном, должен научиться программировать на долларе клиента за 3 дня. недели, оставшиеся на контракт.
Tangurena
Я также видел нечто подобное, когда какая-то государственная программа пособий / страхование по безработице требует, чтобы лицо, получающее пособие, обращалось на определенное количество рабочих мест в неделю. Даже когда у этих программ есть какое-то номинальное требование, чтобы получатель подал заявку на работу, на которую они действительно квалифицированы, ресурсы для оценки того, на какие работы они претендуют, и обеспечения выполнения этого конкретного требования «подать заявку», очень ограничены. ,
Даниэль Мартин,
8

Да, действительно. Вероятно, не 99%, но все еще довольно высоко. Раньше я брала интервью у студентов по информатике для стажировок и найма на полную ставку. Я брал интервью у 25 студентов в колледже. Нам сказали не задавать одни и те же вопросы, потому что студенты говорили. Я быстро понял, что это не имеет значения, потому что из 25 человек я получу только 3 или 4 ученика, которые смогут ответить на мой первый вопрос. "Напиши strcmp"

Я попросил их написать функцию для сравнения двух строк. Возможно использовать функцию для сортировки слов по словарю. Вы будете поражены количеством студентов, которые не понимают, как сравнивать два слова, не говоря уже о том, как написать функцию. И некоторые из этих студентов утверждали, что они получили все оценки в CSc.

Дело в том, что программирование ОЧЕНЬ СЛОЖНО. Многим нравится думать, что они умеют программировать, но они этого не делают.

ChrisMcB
источник
3
Оценка инфляции - отстой, потеря времени для всех!
ДаренВ
8

Некоторые мысли:

  • Я бы не стал возражать против кого-то, если в их программе были какие-то ошибки, но у них явно была правильная идея. Отладка является частью программирования.

  • Я думаю, это грустно, что так много людей обращаются за работой, они не знают, что не могут сделать. Сдается мне как проблема с экономикой.

  • Очень легко задавать людям плохие вопросы, где единственный «правильный» ответ - это тот, который дал бы интервьюер.

Майк Данлавей
источник
2
Что касается 2-го пункта ... потратив много времени на размышления о моем следующем карьерном шаге, изучении различных отраслей и поиске работы, было очень трудно попытаться оценить свой собственный уровень компетентности во многих разных вещах. Очевидно, это большая, большая проблема для (почти) всех.
ДаренВ
@DarenW: Вы получили мое сочувствие. Я думаю, что важно знать, что вам нравится, и работать оттуда. Лично я всегда любил школу и никогда не сомневался в моем интересе к технике. Мои сибсы почти все уверены в том, что они делают. Нет, и легко увидеть, что это борьба. Ваша домашняя страница показывает интерес к пересечению науки и искусства - это здорово. У некоторых людей был плохой опыт в юности, и теперь они могут использовать всю свою энергию.
Майк Данлавей
7

Этот тест очень хорошо охватывает несколько вещей, которые я хочу знать о программисте, которого я мог бы нанять:

  1. Вы вообще можете программировать?
  2. Можете ли вы написать программу с нуля (потому что не каждый может !!!)
  3. Можете ли вы решить проблему, не задумываясь над ней.

Чтобы уточнить последний пункт, существует множество решений для Fizz-Buzz. Вы идете на удобочитаемость? Скорость? Краткость? Вы пытаетесь закончить написание программы быстро? То, как программист атакует эту простую проблему, очень показательно. Если программист не может выбрать решение и довести его до конца, что это говорит вам о том, как этот человек будет выполнять реальную задачу?


источник
6

К сожалению, многим людям с впечатляюще выглядящими резюме не хватает базовых навыков программирования. Я видел много случаев, когда люди, которые перечисляли C и C ++ в своих резюме, не могли ответить на основные вопросы об указателях.

Дима
источник
3

Есть два типа людей, которые я надеюсь, что FizzBuzz поможет мне избежать.

  1. Канцеры без знания программирования или соответствующих знаний программирования. Обычно вы можете узнать их из резюме, но не всегда, и дать им простую задачу программирования - хороший способ дать понять, что они не программист.
  2. Выпускники школ Java, которые закончили курс программирования или степень, но на самом деле не знают, как программировать. Этих людей может быть сложнее отфильтровать, потому что они могут говорить о теории, но у них просто нет практических навыков. Поставить перед ними простую проблему и попросить найти решение и объяснить решение - это очень хороший способ увидеть разницу между Petra Java и Paula Bean.

В любом случае, меня не волнует идеальная реализация. Тест, который вам нужно провести с людьми, претендующими на вакансии разработчика, заключается в том, что они могут программировать вообще.

Тем не менее, я бы, вероятно, не стал бы заниматься этим конкретным тестом по нескольким причинам. Во-первых, это очень хорошо известно, и любая из вышеперечисленных групп будет быстро попробовать. Во-вторых, я бы предпочел использовать вопросы на экране телефона Стива Йегге, чтобы отсеять непрограммистов, прежде чем мы дойдем до того, чтобы их вводить . Если кто-то узнает эти вопросы, это будет означать, что они читали блог Стива Йегге, который подсказывал мне, что они были в топ 1% разработчиков, которые серьезно относятся к своей профессии и, безусловно, требуют интервью. Точно так же, если бы у кого-то был хороший представитель здесь или на ТАК, я был бы склонен взять у них интервью.

glenatron
источник
А) Насколько хорошо "хорошо"? Б) Вы нанимаете? :)
Спарр
3

Трудно поверить, что разработчики не смогут кодировать FizzBuzz, пока вы не увидите «девятку-пять», которые копируют и вставляют свои работы вместе и сознательно стараются не писать код. Я не мог поверить в это, когда услышал, как один из наших старших разработчиков учил C # с 3-летним «опытом», как пользоваться словарем. Интерфейсы? Шаблоны проектирования? стандартный вывод? YAGNI? Мой ведущий никогда не слышал о YAGNI! Удивительно, что эти люди не знают.

Я верю в это сейчас. Я также думаю, что слишком много разработчиков просто делают достаточно.

kirk.burleson
источник
3

Я думаю, что одна из причин, почему это такой популярный вопрос, заключается в том, что есть более чем один способ ответить на него, и в зависимости от того, какой путь выберет кандидат, вы сможете получить представление о том, как они кодируют. Некоторые отличные примеры можно увидеть здесь, если у вас 10K повторений на Stack Overflow.

Что касается статистики 99%, проверьте, откуда это число. Это, вероятно, предвзято. Если это основано на интервьюировании программистов начального уровня для их первой работы, тогда да, я вижу, что это возможно, особенно если большинство их кандидатов выходят из колледжа. На самом деле я могу думать о ком-то, кто, вероятно, выписал бы условие «100 if» как решение этой проблемы.

Рейчел
источник
3
Я подозреваю, что цифра 99% указывает на правду (рекурсивная правда, не меньше) утверждения о том, что 87% всей статистики составляется на месте.
Адам Кроссленд
1
@ Adam Crossland: 100% статистических данных о статистике также составляются на месте.
Мача
Тем не менее, кажется ужасным, что кто-то не может решить fizzbuzz из колледжа. Если они не могут этого сделать, что они могут сделать?
Морган Херлокер
2
@ironcode Я ходил в школу с кем-то, кто не мог даже начать понимать fizzbuzz ... Я был бы удивлен, если бы они даже могли написать что-то, что напечатало бы 100 строк с жестко закодированными значениями fizzbuzz. Они закончили с отличием.
Рэйчел
2

Я нахожу утверждение, что 99% программистов не могут программировать или решать простой тест на кодирование, сильно преувеличены. В случае теста FizzBuzz вы либо сталкивались с этой проблемой раньше и можете легко решить ее с помощью оператора по модулю, либо вы не сталкивались с ней раньше и будете бороться с ней. Он ничего не говорит интервьюеру о ваших навыках программирования.

Я думаю, что проблема со многими программистами, которые, очевидно, оставляют плохое впечатление на собеседовании, заключается в природе технических методов интервьюирования. Интервьюеры ожидают, что кандидаты запоминают и мгновенно воспроизводят синтаксис языка, детали и вычислительную сложность структур данных, аппаратных архитектур, шаблонов проектирования и т. Д. И т. Д. Область компьютерных наук / разработки программного обеспечения огромна. Невозможно и незаметно пытаться запомнить все.

В реальном мире ключом является способность понять поставленную перед вами задачу программирования / проектирования и узнать, где можно найти информацию (вашу IDE, справочные страницы, книги, Google и т. Д.), Как решить вашу проблему. Это то, что интервьюеры никогда не проверяют.

отметка
источник
14
Вы понимаете, как легко FizzBuzz? Вам не нужно сталкиваться с этим. Если вы боретесь, подумайте о смене карьеры.
Джон Смит
Но это может быть решено без деления с помощью деления. Правильное решение с использованием / вместо% будет работать для меня. Поэтому они должны понимать очень основную математику и очень простое программирование.
Almo
0

Я все еще сравнительно младший программист (я кодировал деньги в течение ~ 2 лет и в некотором профессиональном качестве программировал в качестве дополнительной ответственности около 2 до этого), поэтому использую достаточное количество соли.

У меня есть некоторый опыт в создании первого экрана для кодировщиков для проекта крупного предприятия (мы вроде знали, что проект обречен, но в любом случае, они хотели заплатить). Как единственный программист в фирме, занимающейся наймом, мне было поручено рассмотреть резюме и отбор кандидатов.

Это было для правительственного проекта, так что, возможно, это не привлекло самых талантливых кандидатов, но я не получил ни одного приложения от кого-либо с учетной записью github, у которого фактически был показан код, ни от кого, у которого был портфель, поэтому я использовал fizzbuzz ( буквально точная проблема) в качестве первого прохода для всех, кто выглядел так, как будто они могут программировать.

Я предвосхитил это псевдо-извинением, заявив, что я знаю, что это глупо, но я просто хотел увидеть любой работающий код, и, если они захотят, они могли бы послать другой пример равной или большей ценности или чего-то еще, но этого fizzbuzz было бы достаточно.

Результат: я не получил ни одного ответа, который был бы на самом деле правильным, и это было бы сногсшибательно, учитывая количество ответов в Интернете. Никто даже не удосужился заняться плагиатом. Мы должны были просто нанять людей, которые ранее работали над неудачными предыдущими итерациями проекта.

После первоначального шока от этого упражнения и разочарования в связи с тем, как пошло государственное программное обеспечение / заключение контрактов, я почувствовал себя гораздо лучше, когда у меня были такие навыки, такие маленькие победы?

Редактировать: Под неправильным я не подразумеваю ошибку «один за другим» (то есть я просил 100, а не 99) или какую-то другую невинную ошибку, которую легко исправить. Я имею в виду, что он не работает, либо не будет запускаться / компилироваться / и т. Д., Либо ясно показывал, что проблема просто не была прочитана и понята, также значительная часть отозвала приложение, и никто не отправил какой-то другой код.

BSpiros
источник