題:
在面試中被問到時,我可以玩FizzBu​​zz嗎?
Evorlor
2016-04-22 05:30:29 UTC
view on stackexchange narkive permalink

FizzBu​​zz是用於對工作面試進行編程的常見白板問題:

編寫一個程序,將數字打印為1到100。但是對於三個的倍數,則打印“ Fizz”而不是數字和為五個打印“嗡嗡聲”的倍數。對於三和五的倍數的數字,打印“ FizzBu​​zz”。

標準答案具有較高的可讀性並使用循環。如果我很喜歡這個常見問題,面試官將如何接受?例如,我將它們全部寫在一行中,還是用某種瘋狂的語法來混淆它?他們會認為“這很有趣!您被錄用了!”還是會因為我沒有顯示我知道如何編寫循環而把我踢到路邊?

這個問題的靈感源於 https://codereview.stackexchange.com/questions/49058/single- line-fizzbuzz-solution-in-linq https://codegolf.stackexchange.com/questions/88/obfuscated-fizzbuzz-golf

評論不作進一步討論;此對話已[轉移為聊天](http://chat.stackexchange.com/rooms/38756/discussion-on-question-by-evorlor-should-i-have-fun-with-fizzbuzz-when-asked-它)。
相關:http://codereview.stackexchange.com/questions/126845/interview-coding-test-fizz-buzz
十二 答案:
Joe Strazzere
2016-04-22 07:02:34 UTC
view on stackexchange narkive permalink

他們會認為“這很有趣!您被錄用了!”還是會因為我沒有顯示我知道如何編寫循環而把我踢到路邊?

這是這個想法的問題-您不知道您的面試官將如何提前採取這種歡笑。

一些雇主會認為您很有趣,機智,並且可能會很有趣。

其他雇主會認為您不成熟,無法遵循簡單的指示,因此不值得考慮。

在嘗試之前,無法知道他們會怎麼想。

我們經常認為我們比其他人看上去更有趣,更聰明。因此,除非您感到非常幸運,或者除非您真的不想要這份工作,否則為什麼在不必這樣做時會打擾您呢?

在面試中直接播放,並保存招募後的花樣和樂趣。

有些人認為您很有趣,很機智,而其他一些公司的員工應該與您一起工作很有趣:-)
不僅這些要點,而且難懂的代碼也很難閱讀。如果必須查看混淆的代碼,則將其丟棄。沒有辦法對其進行評估。 **但是**,使用一些技巧(例如可以減少代碼大小,時間和復雜性的操作)可能會很好,並表明您在控制語言。
@IsmaelMiguel在生產系統中使用的大多數語言中,此類技巧很少在現實世界中使用,難以閱讀且難以維護。簡潔的代碼很好。 XOR掉期和其他惡作劇沒有。
@Lilienthal好吧,不完全是。您可以將範圍生成功能與功能結合使用,以遍歷所有結果並將適當的值更改為“ FizzBu​​zz”(非常籠統)。這可以使用LINQ在C#中輕鬆完成,而使用非常標準的函數在PHP中則可以輕鬆完成。並不總是壞的。這些是生產代碼中使用的2種語言。
這個答案是完全正確的。他們的反應將使您知道您需要了解的有關該公司的所有信息,以及這是否浪費您的時間去與他們一起工作。
@IsmaelMiguel:可以概括您在說什麼(我認為):發問者提到使用循環很容易完成,這是事實。但是某些語言提供了顯式循環的替代方法,而不僅僅是“技巧”,它們是強大的替代方法。如果結果代碼是“好的”,那麼使用這種方法就不會使面試失敗,因為如果您習慣使用LINQ或函數式編程,那麼循環就很笨拙了:-)使用a仍然有區別沒有顯式循環的合法方法,這可能*很有趣,而通過做出惡作劇的方式“很有趣”。
@SteveJessop我的意思就是這樣。但是說得更乾淨一些。
Nemanja Trifunovic
2016-04-22 17:07:29 UTC
view on stackexchange narkive permalink

我會問面試官類似的事情:“您想要我在工作中編寫的代碼還是出於娛樂目的?”讓他們決定。也許他們要求看到兩個版本。

我認為這是最好的答案。這樣,如果他們要求有趣的方式並且不喜歡它,他們仍然可以要求您在工作中如何做。
這也是我的答案。 “您要簡潔,有趣還是難以理解?”在考慮加入時,我會考慮他們的回應。響應很有趣還是看起來很嚴格?
@Chad為什麼我要雇用一個認為“與我一生中的其他工作相比,在這里工作會很無聊”的人?
Bacon Brad
2016-04-22 06:55:04 UTC
view on stackexchange narkive permalink

這讓我想起外太空的嘶嘶聲。儘管這位準員工認為他的開箱即用會為他鼓掌,但實際上這突出了更壞的特徵。除了顯得自大和自負外,這也很難理解,這給他是否真正理解了即將完成的任務留下了很大的爭議。很快他就變得不適合他了。另外,編程申請人應該已經知道,雇主只希望看到一個簡單的解決方案,表明他們是一名實際的程序員。除非您故意要進行面試,否則不要偏離客觀和預期的結果。

您甚至不會給申請人提供解釋其代碼的機會,甚至可能不會給他們提示以“正常”方式進行編碼的提示?這就是為什麼很難找到優秀的程序員的原因。
@JeffO:如果程序員故意偽裝他們的技能,那麼他們應該很難找到。
@JeffO以非“正常”方式進行編碼的編碼器,生成的代碼不夠健壯,缺乏可維護性和靈活性,因為他過於“聰明”,因此不是生產團隊中的優秀編碼器。通常,這些編碼員作為“獨行俠”更好,可以自己完成整個較小的項目。聰明的代碼很不錯,但是有它的位置,一個好的編碼員會知道什麼時候恢復為花哨的代碼。當有人問“嘿,介意在這裡編碼一個快速排序,我們需要它嗎?”時,有人為Fizzbuzz編寫了巧妙的代碼會生成一些非常困難的代碼(維護,閱讀等)。
-1
@TMN-為什麼您會得出這樣的結論?再次,您讓他們知道您更喜歡標準方法,如果他們不能這樣做,那麼您可以得出結論,他們沒有能力,但是以前沒有。
@Patrice-為什麼要求他們以常規方式進行如此困難?參加面試的每個人都不是心智讀者。確定他們是否有厭惡正確做事的想法並不難,您可以選擇不僱用他們。如果您不願意告訴他們您的期望,就會冒錯過優質候選人的風險。
@baconface-這就是為什麼我建議您不要在沒有任何反饋的情況下將這個人扔掉。沒有人能夠完美地完成所有工作。我寧願僱用一個願意在更正後進行更改的人。如果他們選擇不進行更正或沒有能力,那麼我決定不僱用他們。對於新員工的尋找,我沒有任何歧義。
@JeffO您正在從事什麼工作?雜技編碼器,還是編碼器?認真地說,生產代碼就是生產代碼。在我的日常活動中,我不會告訴您“哦,請給我快速排序........但是是通常的方式”,對嗎?如果我必須向您指定要實現哪種代碼,那是因為您不知道。如果您不知道,我不應該僱用您。如果您不能在專業環境中猜到,那麼您的代碼應該簡單,可維護,易讀,靈活且健壯....那麼您可能需要查看用於評估代碼的指標。
@JeffO:有多種不稱職的方式。一個不了解簡單編程問題的目的就是一個。
Patricia Shanahan
2016-04-22 07:57:09 UTC
view on stackexchange narkive permalink

可能是顯示FizzBu​​zz或變體的明智解決方案的選項。首先展示一個非常乾淨的簡單解決方案。

如果面試官只是點頭然後繼續下一件事,那就結束了。

如果他們想討論您的解決方案,您也許可以介紹一個聰明的人。另一種選擇,那就是說這只是為了娛樂,而不是您在真實代碼中不會做的事情。

Criggie
2016-04-22 12:37:50 UTC
view on stackexchange narkive permalink

在面試linux系統工作時,我被打了嘶啞,因為那是他們對程序員的面試。 (這家公司僱用了很多編碼員)

所以我用bash shell腳本回答了這個問題,而不是用一些偽代碼虛張聲勢。這意味著我的答案與該職位相關且有用。

答案:面試是表明您很適合該職位的機會,而不是表明自己關。證明您可以正確完成工作,這是面試中的任務。

keshlam
2016-04-22 06:39:31 UTC
view on stackexchange narkive permalink

恐怕@paparazzi正確了。沒有人喜歡智能資產。

您的目標是表明您可以編寫最漂亮,最易維護,最高效的代碼;這就是他們想僱用的。

在您自己的時間表達對任務的煩惱。

我不確定這是一個答案,而不是對另一個答案發表評論。
當時,這是基於評論的答案,這是合法的。如果您發現它沒有增加價值,請不要投票。
哦,我懂了。我認為引用的帖子是答案,而不是評論。
kojiro
2016-04-22 15:43:36 UTC
view on stackexchange narkive permalink

在使用嘶嘶聲的數十個屏幕過程中,我渴望有一個候選人創造性地解決它。編程是一個創造性的職業,一個創造性的非bs解決方案可以解決常見的編程問題,從而幫助您脫穎而出。該條對於發出嘶嘶聲很低,因此打高爾夫球之類的事情可能會很浪費,但是有些解決方案可以在原始的硬編碼的 for 循環和神秘的咒語之間取得平衡。 / p>

考慮嘶嘶聲與其他更實際的編程問題類似的方式。為面試官提供一種更改問題參數的方法。提供編寫適合該工作的替代解決方案。 fizz buzz應該具有哪些適合不同編程範例的界面?

在證明您可以做得很好的約束下,發揮創造力的樂趣。這就是我們行業需要的創造力。

是的,那麼您可能想問更多創造性的問題。 FizzBu​​zz的唯一價值是淘汰那些絕對不會削減的產品。
@xxbbcc Fizz嗡嗡聲對此很有用,但我不同意這是唯一的價值。每天我們都會看到博客文章抱怨挑戰性的採訪問題同樣愚蠢。由於許多程序員都不會遇到困難的編程問題,因此請“逆轉這棵樹!”,“實現E!的篩網”。相反,他們執行CRUD操作。好的客戶為愚蠢的簡單操作設計了好的接口,因為他們知道“顯而易見”的想法與客戶的想法不同,即使該客戶是API用戶也是如此。嘶啞的嗡嗡聲讓我知道一個好的編碼員是否會認真對待工作中的“愚蠢”部分。
關於FizzBu​​zz,這完全不是我的經驗。這是一個需要被問到的糟糕的問題,但這並不能告訴您有關應聘者所知道的知識以及他/她的工作方式的很多信息。我發現了解決問題的方法,指出了代碼示例中的問題效果更好。
根據經驗,@xxbbcc是正確的。沒有人給我關於嘶嘶聲的真知灼見。完全超越它的人只是想超越它。但是OP正在詢問他/她是否應該具有創造力。我的回答是“是的,只是要有專業創造力”。
我會說不,不要像FizzBu​​zz這樣的問題發揮創造力-沒有人正在尋找創造力。每個人都知道這是一個壞問題。如果您想查看候選人是否具有創造力,請詢問問題和多種替代解決方案,以查看候選人可以提出哪些變化。您根本不需要創意代碼。我個人更喜歡創意思想家而不是創意編碼員。
我有一種有趣的感覺,我們可以進行一段時間的對話,最終發現我們甚至不同意“創意”的真正含義。讓我們接收有差異的看法。
是的,我想這很明顯。 :)
Akavall
2016-04-22 17:27:26 UTC
view on stackexchange narkive permalink

1)說您以前看過FizzBu​​zz。

2)做最直接的解決方案。

3)提及您對其他機智解決方案的了解。

有些訪問者可能對他們感興趣,而有些則沒有(我不會)。尋求一個機智的解決方案的問題在於,它幾乎可以保證FizzBu​​zz將花費更多的時間,並且您可能無法獲得或有更少的時間來獲得其他必須解決的問題。

+1表示誠實,並告訴他們您之前看過FizzBu​​zz。如果申請人對我誠實,我推薦他們的可能性要高10倍。另外,如果我知道有人知道這一點,那麼我會更感興趣地看到他們可能也知道的有趣的解決方案變體。
RemcoGerlich
2016-04-22 12:20:10 UTC
view on stackexchange narkive permalink

FizzBu​​zz是一個非常簡單的練習,我希望它並不是那麼普遍。

如果您查看描述它的原始博客帖子,您會發現它是發明是出於一種目的:檢查人們是否可以完全編程 。顯然,參加編程工作面試的人存在或存在問題,他們甚至不能從頭開始編寫一個非常簡單的例程,並且淘汰了他們。

除此之外,它並不有趣,所以只是克服它,繼續進行訪談。

那不是描述它的原始帖子。顯然它在這裡(鏈接到您鏈接的文章):https://imranontech.com/2007/01/24/using-fizzbuzz-to-find-developers-who-grok-coding/
告訴我怎麼回事兒。我們有一個大學畢業的孩子,他不知道子函數和函數之間的區別。
@RichardU很簡單。其中之一可以發射核導彈並摧毀朝鮮。另一艘是潛艇。
@RichardU:用什麼語言?例如,在Perl中沒有區別。
VB,VBA中的@KeithThompson,一個Function返回一個值,一個sub不返回
即使在今天,它也消除了很多穀殼。它還揭示了認為某些任務就在他們下面的候選人。 OP可能是後者的一個例子。
HLGEM
2016-04-22 19:46:57 UTC
view on stackexchange narkive permalink

面試有兩個目的。首先是根據僱用您的想法出售他們,其次是讓他們根據決定是否要他們出價來出售您。因此,考慮一下您想要以這些方式做的任何事情,這是否對我有幫助,還是對我不想工作的地方進行淘汰?

您是否只願意在他們認為您的創造性答案很有趣的地方工作?尋找工作將需要更長的時間,但可能更適合您的個性。

這會打動他們嗎?好吧,這要取決於一個好的,紮實,正確,無聊的答案,而不是一個經過深思熟慮的有趣答案。經過深思熟慮但極富創意的答案可以完美地使您脫穎而出,但是...

FizzBu​​zz是一個淘汰的問題。這並不是要炫耀您的高水平技能或幽默感,面試官會使用它來確定此人是否完全具備任何技能。如果您從未進行過任何面試,那麼會有多少人實際上無法解決所有問題,您會感到驚訝。這是很少幫助您的原因,只會損害原因的問題之一。有點像您五年後在哪裡看到自己的問題,或者為什麼要離開當前職位問題。

因此,我個人將另闢way徑,炫耀自己具有創造力或高水平的技巧,能在人群中脫穎而出。我將通過展示我的實際成就並能夠以比大多數人更高的水平處理面試中真正的技術部分(而不是淘汰問題)來做到這一點。這些都是面試的重點,也是您應該花費時間的地方。完成FizzBu​​zz的工作並完成工作,然後專注於真正顯示您是誰以及您可以完成的事情。

我要打個比喻:“炫耀您的高水平技能”:要求您在(回收)箱中放入一張紙。您可以按常規方法進行操作,也可以將其收起,從房間的另一側瞄準鏡頭,戴上眼罩然後下沉。假設它消失了,您已經證明了自己沒有被要求證明的技能,它可以是好,也可以是中性,或有時是壞的。假設它沒有成功,則您沒有完成可以想像的最簡單的任務,因此您未通過面試。“聰明”的代碼很“聰明”,因為這是避免嘗試時出錯的必要條件。
user8365
2016-04-22 13:35:01 UTC
view on stackexchange narkive permalink

我希望您能像編寫自己的模數函數一樣以典型方式進行操作。您需要表達您的解決方案的意圖是能夠提出一種替代方案,以及您不會在生產代碼中嘗試此類操作的概念,除非您可以為一個晦澀難懂的替代方案提供充分的理由。

不幸的是,有些人會過多地了解這種方法。尋找優秀的程序員很困難,但是他們堅持要尋找任何可能使您不適應其企業文化的人格特質的暗示。真可惜如果部分文化是要對自己太認真,那麼您可能想要這樣做只是為了淘汰那些沒有幽默感的預期工作。

Goose
2016-04-23 01:31:23 UTC
view on stackexchange narkive permalink

我認為使用fizzbuzz來表明自己有趣或聰明是不合適的。

我確實認為使用fizzbuzz來展現更多的能力比編寫循環的能力更合適。 p>

  • 您可以編寫一個面向對象且可擴展的fizzbuzz。

  • 您可以編寫一個功能性的fizzbuzz。

  • 您可以編寫考慮到優化的Fizzbuzz。

  • 您可以編寫包含測試的Fizzbuzz。

  • 您可以編寫一個fizzbuzz api。

  • 您可以編寫一個現有fizzbuzz的git克隆(但之後自己編寫,以確保他們可以編碼) )

打高爾夫球或混淆的嗡嗡聲是毫無意義的,而且可能不尊重這項任務。面試是為了展示知識。給您任何問題或任務時,請記住這一點。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...