FizzBuzz - справді? [зачинено]


60

Якщо мова йде про "тест-інтерв'ю", питання FizzBuzz часто виникає. Про це також є публікація кодування Horror .

Тепер, якщо ви турбуєтесь про читання таких сайтів, ви, мабуть, менше ставитесь до демографії програмістів, які знайдуть FizzBuzz не що інше, як банальне.

Але чи правда, що 99% програмістів будуть боротися з цим?

Дійсно?

Які свідчення підтверджують це?

Деякі приклади з реального життя були б дуже корисні у відповіді на це запитання.


57
Це не 99% програмістів, це 99,5% претендентів (багато з яких не програмісти).
webbiedave

4
Я не повірив, поки не отримав його на співбесіді. Пізніше я влаштувався на роботу, а пізніше все-таки поспілкувався з кеу. Мабуть, 99% - це приблизно правильно. Oo
Fishtoaster

3
Я завжди вважав, що питання fizzbuzz - це міф, а може бути, просто для початківців початківців коледжів, але тоді одного дня мене насправді запитали на співбесіді. Так, чи справді багато кандидатів мають проблеми з цим?
DarenW

2
Я звичайно здаю тест FizzBuzz на співбесіді і звичайно дозволю людям цього не робити. Один графічний дизайнер передав його одного разу, хоча ..... Здивував мене трохи :)
Брендон Вамбольдт

4
@Rogue Coder - Ей, ми не дурні, просто дивні. І більшість з нас смокче математику.
Inaimathi

Відповіді:


46

99%? Ні. Значний відсоток? Так. З власного прямого досвіду опитування людей я можу засвідчити це. Для вас це може здатися незначним, але в області програмування є багато людей, які роками більш-менш підробляють свій шлях і застосовуються на позиціях, що не надходять на вхід, і не відповідають цьому.

Навіть якщо ви МОЖЕТЕ легко вирішити це, але ви дасте мені величезну статику щодо того, щоб вас попросили виконати таке найголовніше завдання, буде рахуватися проти вас. Бути в команді означає, що іноді потрібно робити те, що вам може не сподобатися, але це необхідно. Якщо ви не збираєтеся працювати, перед тим, як ми навіть почали працювати разом, ви вважаєте, що було б найкраще спробувати затвердити свій особливий статус того, щоб бути над тим, щоб робити щось, про що я вас просив, то це буде діяти як знак проти вас.

Мені все одно не важливо, наскільки елегантне ваше рішення (хоча це було б непогано), але побачивши, як ти його врізаєш на дошці і розмовляєш по ньому, я показує, що ти хоча б готовий взяти на себе удар. . Якщо ви обурені і щось скажете: "Я вирішувач проблем, а не мавпа з кодом!" тоді ви будете збитий кілочок.

У мене опитувані просто не хочуть навіть намагатися це робити. Просто просто відмовтеся. Ні. Не зроблять цього. Я задаю ще одне-два ввічливих питання, дякую їм за їх час і закриваю інтерв'ю.

Я кажу це як менеджер і як розробник.


1
Які їх підстави відмовитись у спробі?
Джон Хопкінс

3
Я ніколи прямо не питав їх. Після їх другої відмови я б задав ще пару питань, а потім закрив інтерв'ю. Якби я збирався вгадати, то вони б надто нервували, щоб спробувати (якщо я буду благодійним) або що вони насправді не можуть зрозуміти це на місці (якщо я буду більш цинічним).
Тодд Вільямсон

1
Я знаю хлопця, який відмовляється кодувати в інтерв'ю. Він також відмовляється взяти на себе пам'ять все, що може знайти за кілька секунд Google. Він "вирішувач проблем".
kirk.burleson

4
Знову ж таки, кодування на дошці - це проблема, яку дає вам інтерв'юер… яку потрібно вирішити, можливо? Для мене відмова від кодування в інтерв'ю рівнозначна відмові від вирішення проблеми, яку має інтерв'юер. Звідси суперечність поняттю "вирішення проблем", і це більше схоже на того, що хлопець є "відмовником проблем".
Spoike

@Spoike nope, оскільки вирішувачам проблем не потрібно знати синтаксис будь-якої мови програмування, тепер чи не так?
П'єр Арло

25

Я думаю, що 99% програмістів, які претендують на роботу (і не отримують її), можуть боротися за неї. Але не 99% програмістів, які продуктивно тримають роботу.

Така природа нашого сучасного процесу пошуку роботи. Багато людей, які подають заявку, не мають кваліфікації.

Цей пост кодування Horror також говорить про те, як ми сьогодні навчаємо інформатики. У минулому (особливо в MIT) від вас вимагали вивчити такі речі, як Лісп, що, як правило, вимагає, щоб ви зрозуміли такі поняття, як рекурсія.

В даний час людей навчають Java, оскільки вона широко використовується в промисловості, і фокус перемістився на синтаксис, а не на глибоке мислення програмування. Я не люблю Java; насправді я думаю, що це ідеальна перша мова програмування. Але я не бачив, щоб мої інструктори навчали цим принципам глибокого програмування.


11
Так, я думаю, що наша система освіти (принаймні в США) є великою частиною цього. Я знаю того, хто здобув 2-річну ступінь програмування програмного забезпечення, закінчив з відзнакою і не зміг прочитати чи написати код.
Рейчел

8
Аргумент проти навчання Java - слабкий. Концепції можна викладати на більшості мов (повторний запис легко записується на Java, наприклад). Я не погоджуюсь з тим, що викладання понять, що викладаються, стає слабкішим, але я не звинувачую його в мові впровадження.
Стівен Еверс

1
О, такі речі, як Рекурсія, навчаються, вони просто не звикають. Ви отримуєте таку ж оцінку для написання оператора 100 рядків IF, як і для написання рекурсивної функції (принаймні, ви робили там, куди я пішов), а 100-рядовий оператор IF легше написати, коли ви поспішаєте (тобто ви Ви пропустили домашнє завдання до 5 хв, перш ніж вам потрібно буде його ввімкнути)
Рейчел

1
@SnOrfus: Я також не звинувачую в цьому Java. Я не став аргументувати проти навчання Java. Так, ви можете навчити цим поняттям на Java, але я не бачив цього, як ні в класах Java, які я взяв. З цього приводу, MIT спочатку обрав схему для своїх вступних класів програмування, оскільки він має дуже простий синтаксис, тому ви починаєте думати про концепції програмування рано, не приділяючи багато уваги синтаксису мови.
Роберт Харві

4
Хто на землі ходить до університету, де вони "навчають Яву". Мови програмування є менш ніж корисними (незалежно від того, це Java, C ++, Lisp чи інше); це те, що у вас є в США? Там, де я вивчав КС, ви більш-менш навчали себе проґовою мовою, як це потрібно (винятком буде клас Парадигми). Університетські курси викладали математику, теорію CS, парадигми численних програмувань, обчислення тощо. Кожен, хто закінчив це, може легко вирішити FizzBuzz, тому що нам довелося вирішувати складніші проблеми, щоб просто пройти курси.
Андрес Ф.

20

Я ненавиджу це говорити, але

Основна причина, чому я не бачив відповідей на питання програмування, - це не запитувач, а відповідь.

Я чітко пам'ятаю одне інтерв'ю, де мене запитували, як створити певний алгоритм пошуку колекції, який би працював у постійний час (однакова кількість переглядів незалежно від кількості предметів у колекції). Я нахмурився і наткнувся на нього 20 хвилин, перш ніж здаватися. Саме тоді цей геній, який проводив інтерв'ю, продовжував демонструвати відповідь як щось, що діяло майже в постійний, але все ще не постійний час. Трохи на кшталт того, щоб сказати "Дайте мені відповідь нуля", а потім прийняти 0,1.

Окрім цього, я бачив занадто багато випадків, коли хтось із інтерв'ю задає питання, яке не відповідає таким критеріям:

  1. Вони знають усі можливі правильні відповіді.
  2. Вони знають, чому правильні відповіді правильні.
  3. Вони знають, як насправді надати достатню кількість інформації, не даючи відповіді.
  4. Питання "вирішення проблем" не покладаються на знання нерозкритого факту (це найбільша проблема, яку я бачив).
  5. Написання відповіді пішло б менше однієї хвилини, якщо вам не доведеться розбиратися. Якщо для введення коду знадобиться 5 хвилин, це дійсно вимагає більшого вирішення проблем, ніж може бути вміщено у словесну частину інтерв'ю.
  6. Питання ґрунтуються на більш ніж просто "Проблемі, з якою я стикався одного разу або мені дали школу, і тому ви повинні знати, як її вирішити зараз ". Я думаю, що у вас було більше двох хвилин, щоб відповісти на це питання, чому ви не надаєте кандидату такої ж ввічливості.

Серйозно (1), я вважаю, що просити людей писати код у словесній частині інтерв'ю - це нерозумно.

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

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


Чи були у вас дискусії з інтерв'юером, який пояснював, чому їх рішення не було постійним часом? Якби я був інтерв'юером, і ви змогли лаконічно і без злості переконати мене, що я помилявся, я б найняв вас на місці.
Немі

1
@Nemi - Так, я. Людина, про яку йдеться, не була власником найму, але я отримав пропозицію на посаду.
МВС

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" vs "fizz-buzz"
  • пропустили оптимізацію, як, наприклад, порівняння вдвічі, коли один раз зробили б
  • набагато більше

Коли я приймаю на роботу, я прошу людей зашифрувати мене на дошці, нічого поблизу нічого складного (я знаю, ти не вважаєш, що це складно), і багато кандидатів не вдається повністю. Я маю на увазі, як писати vb-стилі If, then, End If, але також ставити дужки (я просто думаю, щоб бути на безпечній стороні) або писати C # (і запитати спочатку C #?), Але ніде не маючи півкропки. Не запускайте мене з логічних помилок!


2
@Jeff більшість розробників спочатку написати щось, що не збирається. Хороші оглядають і виправляють прості синтаксичні помилки. Підкреслили, що добре або спокійно добре програмісти записують функцію, але немає коду, щоб викликати її, записувати щось, що не є оптимізованим, страждати (і не помічати) поза одним, або може пропустити синтаксичну помилку або дві. Жахливі програмісти пишуть код, який ніде не підходить для компіляції, робить цілком неправильну річ і т. Д. Наприклад, циклічні до 3 або 5, оскільки це питання, замість того, щоб циклічити на 99 або 100 або 101 (іш.) Або навіть ні код взагалі. Ви дійсно не можете повірити, поки не побачите.
Кейт Григорій

7
Якщо {"Якщо {} Тоді {} EndIf" визначається як невдалий} Тоді {Ваш стиль інтерв'ю несправний і / або вам дивно пощастило, що зможете звільнити кандидата на такій тривіальній основі} EndIf
Sparr

7
Я щомісяця програмую щонайменше з десяток мов. Сядьте мене перед комп’ютером і попросіть мене працювати в тому, якого я не торкався протягом місяця, і я буду робити такі помилки протягом перших п'яти хвилин, поки я повернуся в паз, зазвичай маючи вказані мої помилки укладачем чи перекладачем.
Спарр

2
@Sparr - точно. Тож на дошці, якщо я попрошу вас заглянути, ви, мабуть, помітите це і скажете "ой, я використовую багато мов". Якщо ви цього не зробите, я скажу "на якій мові це ви написали?" і тоді ви будете. Це не хитрі питання чи пастка. Деякі люди насправді ніколи не писали код і стверджують, що вони є. У цьому суть таких питань.
Кейт Григорій

2
Але я думаю, що ці питання для цього не підходять. Я не міг вам сказати, за п'ять хвилин до початку цього потоку коментарів, чи потрібні VB дужки навколо кодових блоків. Я міг би сказати вам, що If / then / EndIf виглядав переважно як VB [.Net]. І я пишу код у VB протягом ... близько двох годин кожні три місяці (завдання rentacoder.com, я ніколи не беру справжні роботи з VB, ненавиджу).
Спарр

10

Я прочитав згадувану вами статтю Кодування жахів, і моя думка полягає в тому, що Джефф має рацію ... але коли в останній раз він опитувався?

Коли ви берете інтерв'ю, ви, як правило, піддаєтеся сильному стресу, і вам часто доводиться відповідати на теоретичні запитання (ні інтелігентність, ні гугл, ні переділ, ... тільки ваша пам'ять турбує стрес). Це те ж саме в тестах. Стрес вам не допомагає.

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

Роботодавець повинен найняти вирішувач проблеми, а не мавпочку з кодом, яка знає про модулі.

Ви не можете протестувати "деякий час усіх претендентів", тому інтерв'ю з ними потрібно. Ось чому я зосереджую свої питання на цьому (вирішення проблеми) і проходжу попередню перевірку.

На мою думку, FizzBuzz небезпечний для компанії, яка шукає розробників, щоб стримувати її зростання.


28
Проблема ІМХО полягає в тому, що FizzBuzz - це таке низьке питання, що якщо ти не можеш відповісти на це навіть під напругою, ти заслуговуєш, щоб люди посміялися в обличчя, якщо ти називаєш себе "програмістом". Якби це було дещо складніше, як-от «впровадити сортування бульбашок», то ці виправдання та побоювання були б виправданими, але не для FizzBuzz.
dimimcha

23
Fizzbuzz хороший у тому, що це: фільтрувати людей, які нічого не знають від людей чогось . І знати щось, можливо, все ще недостатньо, щоб виконати роботу. Це не тест на прийняття рішення про прийняття на роботу, це тест "ти будеш витрачати час на інтерв'ю". Деякі менеджери з найму намагаються зайняти fizzbuzz занадто далеко, щоб вони могли зробити свою роботу за них.
Стівен Еверс

31
Боже, модуль - це не якийсь езотеричний оператор. Це основна операція, з якою повинні мати досвід усі розробники, якщо вони бажають назвати себе професійними програмістами. Незалежно від того, якщо хтось може написати FizzBuzz, це не означає, що ви їх наймаєте. Це лише швидка відправна точка, щоб зрозуміти, чи може ця людина навіть спробувати розставити контрольний потік, необхідний для виконання завдання.
webbiedave

12
Я вважаю, що FizzBuzz корисний просто тому, що він такий нахабно тривіальний. Для цього потрібно цикл for, два if, модулі та print. Кожен, хто має будь-який осмислений досвід програмування, повинен мати змогу вибивати його, навряд чи замислюючись. Якщо хтось бореться з цим в інтерв'ю, я вважаю це цілком правильним лакмусовим тестом.
Адам Кросленд

11
@snorfus: Подається під "чужою проблемою". Я набагато скоріше пропущу човен одного доброго розробника з калікою соціальної тривоги, ніж витрачати дорогоцінний час і гроші на навчання і чекати результатів від когось, хто не має можливості програмувати. Ви не можете впоратися з іншими людьми? Побачити терапевта.
Aaronaught

10

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

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

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

15% заявників не змогли вирішити проблему.

5% заявників вирішили проблему за допомогою оператора модуля.

Хоча мій вибірки досить обмежений (50 заявників з однієї країни), я можу вам сказати, що:

95% з них отримали ступінь BS або вище в навчальній програмі 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 тижнів, що залишаються за контрактом.
Тангурена

Я також бачив, що щось подібне трапляється, коли в деяких державних програмах допомоги / страхуванні по безробіттю особа, яка отримує допомогу, вимагає подання заявки на певну кількість робочих місць на тиждень. Навіть коли ці програми мають якусь номінальну вимогу, яку одержувач застосовує до тих робіт, до яких вони фактично кваліфіковані, ресурси для оцінки роботи, на які вони кваліфіковані, та виконання цього конкретного вимоги "застосувати для роботи" дуже обмежені. .
Даніель Мартін

8

Так, насправді. Напевно, не 99%, але все ще досить високий. Я брав інтерв'ю у студентів з інформатики для стажувань та наймань. Я б опитав близько 25 студентів у коледжі. Нам сказали не задавати однакових питань, бо студенти розмовляли. Я швидко дізнався, що це не має значення, тому що я отримаю лише 3 або 4 учнів з 25, які могли б відповісти на моє перше запитання. "Написати strcmp"

Я попросив їх написати функцію для порівняння двох рядків. Можливо, використовувати функцію для сортування слів за словником. Ви були б вражені кількістю учнів, які не розуміли, як порівнювати два слова, не кажучи вже про те, як написати функцію. І деякі з цих студентів стверджували, що вони отримали всі A в CSc.

Річ у програмуванні ДУЖЕ СКЛАДНА. Багатьом людям подобається думати, що вони вміють програмувати, але цього не роблять.


3
Інфляція сортів відстійна, витрачає час на всіх!
DarenW

8

Деякі думки:

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

  • Я думаю, що сумно, що так багато людей претендують на роботу, яку вони не знають, що не можуть зробити. Мені це здається проблемою з економікою.

  • Дуже легко задавати людям погані запитання, де єдина "правильна" відповідь - та, яку дав би інтерв'юер.


2
З приводу другого пункту ... витративши багато часу на роздуми про наступний свій кар'єрний крок, вивчення різних галузей промисловості та пошук роботи, це було великою складністю, намагаючись оцінити мій власний рівень компетентності у багатьох різних речах. Мабуть, це велика, велика проблема для (майже) кожного.
DarenW

@DarenW: У вас є моя симпатія. Я думаю, що важливо знати, що вам подобається, і працювати звідти. Особисто мені завжди подобалася школа і ніколи не сумнівався в моєму інтересі до техніки. Мої сиби майже всі впевнені в тому, що роблять. Одного немає, і легко зрозуміти, що це боротьба. Ваша домашня сторінка вказує на інтерес до перетину науки та мистецтва - це чудово. Деякі люди мали поганий досвід у молодості, і вони можуть витратити всю свою енергію зараз.
Майк Данлаве

7

Цей тест дуже добре охоплює кілька речей, які я хочу знати про програміста, якого я можу найняти:

  1. Ви можете взагалі програмувати?
  2. Чи можете ви написати програму з нуля (адже не кожен може !!!)
  3. Чи можна вирішити проблему без більш -thinking його.

Щоб детальніше зупинитися на останньому пункті, існує незліченна кількість рішень для фіз-шуму. Ви йдете на читабельність? Швидкість? Стислість? Ви намагаєтесь швидко закінчити написання програми? Про те, як програміст атакує цю просту проблему, дуже важливо. Якщо програміст не може вибрати рішення і переглянути його до кінця, що це говорить про те, як ця людина буде виконувати реальне завдання?


6

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


3

Є два типи людей, які я би сподівався, що FizzBuzz допоможе мені уникнути.

  1. Шансери, які не знають програмування або не мають відповідних знань з програмування. Зазвичай ви можете розпізнати їх з резюме, але не завжди, і надання їм простого завдання програмування є хорошим способом зрозуміти, що вони не є програмістом.
  2. Ява шкіл, які закінчили курс або ступінь програмування, але насправді не знають, як програмувати. Цим людям важче відфільтрувати, оскільки вони можуть говорити про теорію, але вони просто не мають практичних навичок. Поставити перед ними просту проблему і попросити рішення та пояснення рішення - це досить хороший спосіб бачити різницю між Петрою Явою та Полою Біном.

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

Однак, я, мабуть, не переймаюся цим тестом з кількох причин. По-перше, це дуже добре відомо, і будь-яка з перерахованих вище груп швидко би спробувала це. По-друге, я вважаю за краще використовувати питання екрану телефону Стіва Йегге для екранізації непрограмістів, перш ніж ми домогмося їх залучення. Якщо хтось розпізнав ці питання, це означало б, що він прочитав блог Стіва Йегге, який би підказав мені, що вони були в Топ 1% розробників, які серйозно ставляться до своєї професії і обов'язково вимагають співбесіди. Точно так само, якби хтось мав хороший представник тут чи на ТА, я схилявся б з ними взяти інтерв'ю.


А) Наскільки добре "добре"? Б) Ви наймаєте? :)
Спарр

3

Важко повірити, що розробники не можуть зашифрувати FizzBuzz, поки ви не побачите "дев'ятирічних", які копіюють та вставляють свою роботу разом і стисло намагаються не писати код. Я не міг повірити, коли почув, як один із наших старших розробників навчає розробника C #, який має 3-річний "досвід", як користуватися словником. Інтерфейси? Шаблони дизайну? stdout? ЯГНІ? Моя ведуча ніколи не чула про ЯГНІ! Дивно, що ці люди не знають.

Я вірю в це зараз. Я також думаю, що занадто багато розробників просто роблять достатньо.


3

Я думаю, що частина, чому це таке популярне питання, полягає в тому, що існує більше, ніж один спосіб відповіді на нього, і залежно від того, яким кандидатом обраний шлях, можна дати тобі зрозуміти, як вони кодуються. Деякі великі приклади можна побачити тут , якщо у вас є 10K респ на переповнення стека.

Щодо статистики 99%, перевірте, звідки це число. Це, мабуть, упереджено. Якщо це засноване на програмістів початкового рівня, які беруть співбесіду на першу роботу, то так, я можу бачити, що це можливо, особливо якщо більшість їхніх кандидатів надходять прямо з коледжу. Я насправді можу подумати про когось, хто, ймовірно, виписав би умову 100, якщо заява як рішення цієї проблеми.


3
Я підозрюю, що цифра 99% вказує на істинність (не менш рекурсивну істину) твердження про те, що 87% всієї статистики складаються на місці.
Адам Кросленд

1
@Adam Crossland: 100% статистики про статистику також складається на місці.
Macha

І все ж здається жахливим, що хтось не міг вирішити fizzbuzz поза коледжем. Якщо вони не можуть цього зробити, що робити?
Морган Херлокер

2
@ironcode Я пішов до школи з тим, хто навіть не міг почати розуміти fizzbuzz ... Я був би здивований, якби вони навіть могли написати щось, що роздрукувало 100 рядків із твердим кодом значення fizzbuzz. Вони закінчили з відзнакою.
Рейчел

2

Я вважаю, що 99% програмістів не в змозі запрограмувати або вирішити простий тест кодування дуже перебільшено. У випадку тесту FizzBuzz ви або стикалися з цією проблемою раніше, і можете легко вирішити її з оператором модуля, або ви раніше не стикалися з нею і будете боротися з нею. Це нічого не говорить інтерв'юеру про ваші навички програмування.

Я думаю, що проблема багатьох програмістів, очевидно, залишає погані враження під час співбесіди, полягає в природі технічних методів інтерв'ю. Інтерв'юери очікують, що заявники запам’ятовують та миттєво відтворюють синтаксис мови, деталі та складність обчислювальної структури даних, архітектури обладнання, схеми проектування тощо тощо. Область інформатики / інженерії програмного забезпечення є величезною. Неможливо і нечутливо намагатися запам’ятати все.

У реальному житті головним є вміння зрозуміти задану програмуванням / дизайном, призначену вам, і знати, де знайти інформацію (IDE, довідкові сторінки, книги, google тощо), як вирішити свою проблему. Це те, що інтерв'юери ніколи не перевіряють.


14
Ви усвідомлюєте, наскільки легко FizzBuzz? Вам не потрібно з цим стикатися. Якщо ви боретеся, то врахуйте зміни кар'єри.
Джон Сміт

Але це можна вирішити без модуля за допомогою поділу. Правильне рішення з використанням / замість% працювало б для мене. Тому їм потрібно розуміти дуже основну математику і дуже базове програмування.
Альмо

0

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

У мене є певний досвід створення першого екрана для кодерів для великого корпоративного проекту (ми якось знали, що проект приречений, але так, вони хотіли платити в будь-якому випадку). Як єдиний програміст фірми, яка займається наймом, мені дали завдання переглянути резюме та перевірити заявників.

Це було для урядового проекту, тому, можливо, це, мабуть , не приваблювало найталановитіших заявників, але я не отримав жодної заявки від когось із обліковим записом github, на якому насправді був показаний код, ні від кого не було портфоліо, тому я використовував fizzbuzz ( буквально точну проблему) як перший перехід на кожного, хто схожий на те, що може програмувати.

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

Результат: Я не отримав жодної відповіді, яка була насправді правильною, що вражає враження від обсягу відповідей в Інтернеті. Ніхто навіть не покладався на плагіат. Нам довелося просто поїхати з наймом людей, які раніше працювали над невдалою попередньою ітерацією проекту.

Після первинного потрясіння від розчарування та розчарування щодо того, наскільки накручене урядове програмне забезпечення / контракти, я почував себе набагато краще щодо власної майстерності, тому невеликих перемог?

Редагувати: Під неправильним я не маю на увазі помилку за одним (тобто я просив через 100, а не 99) або якусь іншу невинну помилку, яку легко виправити. Я маю на увазі не функціональний, або не запускає / компілює / тощо, або чітко показав, що проблема просто не була прочитана і не зрозуміла, також значна частина вилучила програму, а не надіслала натомість якийсь інший код.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.