在面試中,我通常會與Fizz-Buzz交流。我們的招聘人員顯然已經抓住了這一點,並告訴每個候選人都要研究這個問題。
這導致許多人為解決方案記住了數以萬計的一線。問題-他們幾乎永遠都不會正確選擇一線。如果您花15分鐘來重做單線Fizz-Buzz答案,那麼我知道您可能不是該職位的合適人選。
問題是有些人記住單線確實可以在面試過程中,但單行代碼無法編譯/運行,所以我使它們失敗了。大多數候選人似乎都不聽。我說過
請確保您可以在完成後向我解釋。這不是一個棘手的問題,如果您使用的語言功能不是我非常熟悉的,我將輸入您的程序並運行它。如果它沒有運行,那麼我將不能給您任何榮譽。一個簡單的解決方案比一個不起作用的“聰明”解決方案要好。
這似乎沒有幫助,我也不想只說出來。 “通過這個問題的每個人都使用if語句和模數。”有沒有人找到避免“聰明”解決方案的好方法?
問題:很少有人能夠通過Fizz-Buzz。我認為部分問題是人們試圖脫穎而出,成為聰明的候選人。一些Fizz-Buzz失敗最終證明了對SQL和基本編程概念(如繼承)的良好命令。如果他們只是以簡單的方式完成的話,他們可能已經通過了Fizz-Buzz。無論是好是壞,Fizz-Buzz對我來說都是一個試金石,如果您不通過,我們將不會僱用您。
編輯:如果您在Fizz-Buzz上花費20分鐘,就不會繼續前進。如果您花5筆錢編寫一個單線,我不知道它是否有效,直到我嘗試運行它。因為有些候選人在回答這個問題後表現更好,所以我猶豫要縮短面試時間,就像我要徹底解決失敗一樣。
編輯2 問我是否運行Fizz-Buzz的每個副本,包括for / if / modulus的副本。如果控制流程顯然正確,則我不會運行它。
單線的問題從來沒有直觀地看出單線應該做什麼。例如,一個人決定編寫Fizz-Buzz的LINQ版本(對於Java開發人員來說是這樣),然後繼續探討LINQ如何創建集合,然後從中選擇。我從來沒有一個單線候選人清楚地解釋每個命令的作用。
我要尋找的答案類型是
這是為(或while)循環,從1到100。接下來,我計算x / 3和x / 5的餘數並將答案存儲在此處。然後,我決定是否/是否確定應該打印什麼。
儘管存在上述問題,我仍然大量使用Fizz-Buzz的原因
-
即使這個問題非常受歡迎,我們中的少數候選人也花了20分鐘以上的時間(有時是整個面試)來弄錯了。如果您不能在5到10分鐘內創建這個非常簡單的程序,那麼我就不想僱用您。
-
每個簡單的問題都有一個內線,而我從經驗中得知,即使聽起來很簡單的問題也可能非常棘手。我不想自己做,因為我可能會無意中創建一個非常棘手的問題,需要花費5分鐘以上的時間才能解決。
-
使用單線告訴我關於您的信息。使用工作描述中一種語言以外的一種語言會告訴我很多關於您的信息。我的問題與可能被錯誤對待的人有關。
-
記住for / if / if else版本和Fizz-嗡嗡聲是一個非常受歡迎的問題。我試著說假裝我是您見過的最愚蠢的開發人員。您需要能夠向我解釋答案-候選人開始談論Perl regex的酷炫程度(對於Java開發人員而言)。
ol>