飽受詬病的白板面試,為什麼沿用至今?
本文首發於公眾號「矽谷精英程序員」 · 求知的程序員都在關注 · 公眾號回復「資源」領取獨家學習資源
很多人都覺得白板面試爛!透!了!
明明跟職位要求基本沒有關係,每天卻都有上千名優秀的工程師們僅因為做不好CS 101 types of questions而錯失機會。然而多年以來,白板面試已經漸漸變成了行業入門的標準,不可能瞬間就顛覆。
個人而言,我從剛剛步入職場時就認為「白板面試很愚蠢」。
雖然我很喜歡解決謎題,但是在進行白板面試的時候,我無法傳遞出我可以給公司帶來的真正價值所在,這讓人心很累。與其花時間去練習白板面試的技巧,我更傾向去責怪整個流程、公司、面試問題或者是面試官。
雖然我最後還是找到了工作,但是仍然因此錯失了許多好機會。
GIF/983K
白板面試製度仍會繼續留存
的確,使用白板面試有很高的拒絕優質人才的幾率,但僱傭不合適員工的幾率卻很低。
在花費百萬美金的高薪僱傭一個人之前,公司HR只有一、兩天的時間可以跟潛在僱員互動交流。所以,相對於假陰性率,公司更看重假陽性率。沒能僱到好員工只會相對損失4-5小時的高質量工作時間,但是如果僱到不那麼優秀的人的話,長期的損失是不可計量的。
的確有非常多的優秀工程師不善於進行白板面試,然而同時,能在白板面試中脫穎而出的蹩腳工程師(如果有的話)也很少。
假設一家公司擁有穩定的潛在僱員來源,那麼這家公司對白板面試的推崇就可以理解了。
並無隱藏議程
我之前總是覺得,我在白板面試中被拒並不是因為我表現不好,而是因為我跟面試官的背景不同。我以前當過兵,我做過前端工程師,我不是名校畢業,我用了不對口的編程語言,我用了不對口的框架…
但當我看到一個朋友同時獲得了Google和Facebook的offer,並且這兩家公司搶著要雇他的時候,這種誤解煙消雲散了。我的朋友並沒有名校的CS學位,英文也講的不太好,他只在美國住了1年。但是他苦練的白板面試技巧已經爐火純青了。這就是他成功的唯一秘訣。
我開這個博客的動力之一就源於對白板面試的厭惡。我認為潛在僱主需要一種白板面試之外的途徑來了解我,這個博客確實起了作用,但是跟我的預期稍有不同。
我期待的是,有人對我說:「你很棒,來跟我們一起工作吧」,但是我收到的信息卻是:「你的博客看起來挺好玩的,來面試吧」。
這事發生的頭幾回,我特想哭。
然後我意識到:除非我做了一些真的很驚人的事情,沒有人會以這樣的方式僱傭我的。寫博客或者做一個開源項目並不能給你找到一份工作。得到面試機會,可以;但得到正式工作,不行。
Homebrew的創始人在推特上說:
「Google:我們90%的工程師都用你寫的軟體,但是你不能在白板上反轉二叉樹,所以滾蛋吧。
——Max Howell(@mxcl) 2015年6月10日」
連brew都不能當成Google的敲門磚,那麼那些博客和開源項目更不行了。
那Google的敲門磚究竟是什麼?做好白板面試啊!
我喜歡寫博客,我會一直做下去。如果我的目標是得到更多offer,那我最好把時間都投資到準備工作面試里去。博客是分享知識和促進個人成長的好工具,但是對職業生涯幾乎沒有幫助。它確實可以幫我拿到很多面試機會,但是一個漂亮的簡歷也可以起到同樣的作用。
投資會持續得到回報的
像我剛才說的,我剛工作的時候是一名前端工程師。我只在這個領域全職做了五年。在那段時間裡,我們至少經歷了技術堆棧的三場大革新。剛開始的時候,大家都在用Backbone和jQuery作為主要工具,然後Angular 1佔了上風,在一兩年之後,React成了主流。
我為什麼要說這些?
因為,不像前端技術,白板面試幾乎不會改變。即使我現在已經是Angular 1的高級開發者,沒人在乎的。這個技術太老了。
如果我把這些時間用來把自己培養成一個「高級白板工程師」,那麼這種技能會讓我持續受益很多年。
經驗 !=不需要寫白板
我曾經認為,豐富的經驗就可以讓我避開白板面試。對領導和建築師這樣的職位來說確實是這樣的,但是對普通軟體工程師來說,情況就不同了。
我自己練習白板面試的最佳時間是在大學三年級,那時候我正在學演算法和數據結構,當時我的大腦已經習慣用C快速準確地解答問題。
完成碩士學位的時候,我去參加了第一場技術面試,到底面了什麼我已經不記得了。當我被要求去解釋一下如何計算一個二進位搜索演算法的時間複雜性的時候,我震驚了。我記得應該是一個log(n),但是背後的數學原理我早就忘記了。
如今我在面試很多更有經驗的程序員的時候,我也看到了許多熟悉的震驚/惱火/白眼,然後看他們掙扎著在一分鐘左右完成一個非常簡答的白板問題。或許我就是那個問白板問題的壞人。同時,這也是我犯給出一個假陽性錯誤的最佳工具,畢竟要進一步進行了解的話,還要花費45分鐘的時間成本的。
多年的經驗確實可以在求職上有所幫助,但是這是在他們的面試表現跟其他競爭者一樣好的前提下才成立。如果我一定要在所謂的經驗和白板面試佳績中選一個的話,我一定會選擇白板面試。我相信大部分其他的面試官也是這麼想的。
不要把機會白白浪費
如果我能回到大學二年級,我就會更認真地聽演算法和數據結構的課,我會投入更多時間來準備白板面試。
目前為止,我的職業生涯還算不錯。我在很棒的公司里,跟一群有意思的人當同事。話雖這麼說,但是在過去的五年里,我無疑錯失了許多良機,因為我沒有花足夠的時間來準備白板面試。
這是一個我想要補救的錯誤,我也會鼓勵每一個人,不管是大學一年級新生還是經驗豐富的軟體工程師,去積極準備白板面試。反正不管我們喜不喜歡,白板面試是無從逃避的了。
資源
Programming Interviews Exposed
關於這個話題有很多書可以參考,我最喜歡的一本叫做Programming Interviews Exposed。還有很多其他書提供了例題和解答,但是這些也都可以在在線項目中獲得。Programming Interviews Exposed這本書用簡單易懂的方式概括介紹了面試者應該了解的所有內容。如果一個人要在面試之前讀一本書的話,我會推薦這一本。
Coursera上的演算法專項課程
我在Coursera上選了演算法專項課程的前兩門課(我那位拿到了Google和Facebook雙offer的朋友也選了),是一組由斯坦福的CS教授Tim Roughgarden錄製的視頻講座。我極力推薦這門課,特別是沒有正式CS背景的工程師們,這門課將會對你大有裨益。
在線編程訓練
現在網上有很多面試準備的項目,我最推薦的是Hacker Rank和Leetcode。
結論
我諮詢過許多擅長白板面試的工程師,他們的秘訣就是——練習。
我的教官曾經說過「完美的練習創造完美」。準備白板面試跟軍事操練的道理是一樣的。
白板面試的制度不會改變。我們只能接受事實,然後利用它,把它變成我們的優勢。
面試就是一場規則清晰的高獎金遊戲,只能熟能生巧。
編譯丨溫璐菲
作者丨Alex Kras
TAG:BitTiger |
※面試穿什麼?在線等!
※為什麼面試時,面試官一直在對你微笑,最後卻不錄用?
※拿不到面試的簡歷有毛線用?
※面試的時候將面臨什麼?先來看看微軟面試的5道題
※面試的時候不知道穿什麼?這幾套絕對是你的最佳選擇!面試官:明天來上班!
※面試官:落紅不是無情物的下一句,是什麼?姑娘機智回應,當場錄用
※面試談薪,是一著不慎滿盤皆輸的博弈!
※面試官:什麼東西用之前硬,用完之後軟趴趴?妹子害羞回答被錄用
※面試的時候,什麼表現讓你對面試者瞬間失去信心?
※面試官:你的上一份工作,為什麼要辭掉?小伙淚如雨下,直接被錄用!
※當你緊張面試時,你對面的面試官在想什麼?
※面試官:面前的水果你想吃什麼?90後的機智做法,當場被錄用!
※面試官常用的5大潛台詞,你聽懂了,才不會白白吃虧!
※面試官:什麼水是絕不能喝的?小伙霸氣回答兩字,當場就被錄用
※面試官:你的特長是什麼?90後小伙低頭羞澀的回答,竟被當場錄用
※小伙穿拖鞋面試,面試官:滾出去!小伙霸氣回答,竟然通過面試!
※面試官:哪種田,怎麼也耕不壞呢?女孩神回復,當場錄用!
※面試談薪,是一著不慎滿盤皆輸的博弈
※程序員兩次面試受挫的題,竟這麼簡單!等一下,我怎麼做不出來?
※面試常常碰壁,面試官來告訴你,什麼樣的應聘者最受歡迎