真正的程式設計師,請你站出來

2021-05-23 02:39:58 字數 1496 閱讀 2277

我們積極的對外招聘已經有四個多月了,如果要問從這次經歷中有哪些收穫,我只能說,我終於明白,jeff atwood在fizzbuzz這篇文章裡說的並不是玩笑話。(譯者:這篇文章裡說程式設計師不會程式設計)。

在新成立的公司中,我們rethinkdb公司因面試過程最為苛刻而出名。這是事實——我們對面試過程不會有半點妥協。我們期望通過最大範圍的篩選來建立乙個高質量的開發團隊。對於這個初衷,我在之前的一些文章裡提到過多次。在過去的幾個月裡,我們遇到不少人認為我們的要求高的有些離譜,以為我們是在招聘同時具有量子力學和計算科學雙學位的火箭專家。這是誤解。我們只希望招的能程式設計的程式設計師。

為了滿足大眾的好奇,我們公布了一些冒煙測試過程(smoke test),這寫過程只是半個小時內的一次**交流,大概20個候選人中有19人通不過這個測試。(這些候選人都是經過簡歷審查篩選出來的)。我們並沒有 要求他們對乙個複雜的演算法提出解決方案。我們並沒有讓他們去做腦筋急轉彎問題。我們並沒有讓他們做複雜的指標演算法和操作。就像下面的這個問題,絕大多數的 應聘者都不能正確的解答,甚至做滿半個小時,甚至給了大量的提示的情況下:

請寫出乙個c函式,實現反轉乙個單向鏈結表的功能。

就這樣的一道題。我們選了一些簡歷寫的讓人不可抗拒的應聘者(包括做核心開發的,編譯器設計的,還有乙個哲學博士學位的),沒有人能正確的編寫出來,不管給他們多少時間。

我們當然也問了些其它問題。把n個元素插入到乙個vector裡(或者arraylist,或其它的你所選擇的語言裡被稱作動態陣列的東西),最壞的最複雜的一種運算情況是怎樣的?我們並不是考察應聘者對這個資料結構的了解程度,我們只是希望他們用自己的見解闡述一下。我們會告訴他們vector的內部工作原理。你們知道嗎,我們甚至接受o(n log n)次這樣的答案。

如何實現乙個讀-寫鎖?我們並不要你通過**編寫出這樣乙個程式。只是說說方案,如果你的方案裡能提到飢餓矛盾問題(starvation issues),那我們就算你中了頭彩了。我們真的希望老天能不拘一格降人才,可是我們真的沒有找到這樣的人。

我們試探著詢問多工執行的合作模式和搶先模式的區別。我們試探著詢問條件變數的工作原理。20個人中有19個人從頭至尾一句話都沒說出來。

為什麼我們會詢問這些很特別的問題?因為這些知識對乙個大學畢業生來說是他們所學的全部課程中最核心的部分,因為這些知識在我們的日常工作中會以這 樣或那樣的形式被使用。而且,在這四個月的招聘中,我們發現,如果你能理解執行緒和協調程序的區別,你就能知道如何反轉乙個鏈結表,如果你對條件變數有了基 本的了解,你就能獲得更多的機會在眾多的應聘者中證明你是個更好的程式設計師。很多的人都做不到這些。

我們希望所僱傭的程式設計師擁有比我們上面所說的技能更多的能力,而且我們不認為這些要求很過分。只是希望你們對基礎知識有紮實的掌 握,有潛力去完成艱鉅的任務,對你們所開發的程式有虔誠的熱愛。引用我的同事第一次聽到fizzbuzz裡的言論時的反應:「如果他們不能程式設計,他們能幹 什麼?」挑選簡歷需要好幾個小時,每個應聘者需要20多分鐘進行冒煙測試。然後面試過程每個人需要45分鐘。整個過程差不多要15個小時的工作。這占用了 乙個懂技術的工程師大量的時間去發現乙個可用的候選人。

真正的程式設計師,請你站出來。

真正的程式設計師,請你站出來

我們積極的對外招聘已經有四個多月了,如果要問從這次經歷中有哪些收穫,我只能說,我終於明白,jeff atwood在fizzbuzz這篇文章裡說的並不是玩笑話。譯者 這篇文章裡說程式設計師不會程式設計 在新成立的公司中,我們rethinkdb公司因面試過程最為苛刻而出名。這是事實 我們對面試過程不會有...

真正的程式設計師,請你站出來

在csdn論壇上,曾有一篇主題為 這裡90 的程式設計師根本就不算程式設計師 的熱帖,談到並不是每個操作 的人就是程式設計師,那些不熱愛開發行業的人根本不算程式設計師。並列舉了許多 偽程式設計師 的行為特徵。無獨有偶,國外一家技術公司rethinkdb在其 官方部落格上也談到這個問題 我們積極的對外...

真正的程式設計師

1 真正的程式設計師沒有進度表,只有討好領導的馬屁精才有進度表,真正的程式設計師會讓領導提心吊膽。2 真正的程式設計師不寫使用說明書,使用者應當自己去猜想程式的功能。3 真正的程式設計師幾乎不寫 的注釋,如果注釋很難寫,它理所當然也很難讀。4 真正的程式設計師不畫流程圖,原始人和文盲才會幹這事。5 ...