做者 | Ravi Shankar Rajan 程序員
譯者 | IT外文選刊(公衆號回覆「IT666」領取技術學習全網最全資料,更多資源持續更新中!)面試
僅僅做爲一個優秀的程序員,可能還不足以經過程序員面試。編程
好吧,不得不認可,程序員面試是很難的。 學習
面試中會精神緊張。會有不舒服的感受。會有尷尬的感受。也會有種奇怪的恐懼,擔憂咱們可能會在此次面試中表現差勁,併成爲了本身的笑料。可能出錯的狀況層出不窮。編碼
可是,這就給咱們帶來了一個問題。spa
程序員面試爲何難?是隻問技術性的東西,仍是更深層次的東西?對象
達爾文在研究進化論時也有過相似的問題(不,他不是程序員!!!)。有一天在倫敦動物園,達爾文決定作一個實驗。他把本身的臉儘可能貼近把本身和一條有毒的膨身蛇隔開的厚厚的玻璃。他發現,每當毒蛇向他撲來時,他就會本能地日後跳幾英尺,儘管玻璃是沒法打破的,而蛇也沒法傷害到他。blog
達爾文最後得出的結論是,人類儘管智力超羣,但仍舊按照原始的動物本能作出反應。這就是所謂的 "戰鬥或逃跑反應",這是一種對感知到的威脅的生理反應,其目的是爲了讓動物作好逃離危險或與危險搏鬥的準備。資源
而在現代,這些威脅能夠歸結爲名譽的喪失,成爲被人嘲笑的對象,甚至被人吐槽,這一切都會在艱難的編程面試中痛苦地暴露出來。這些可能性是很是真實的,足以讓咱們在面試中慌亂,最終毫無頭緒。開發
「話雖如此,但做爲一名優秀的程序員並不能保證你在面試中成功。每一次的面試,除了技術性的東西外,都是一場神經戰,你須要在緊張的狀況下快速解決問題,把你的想法說得很清楚。」這和通常的技術性的東西是不同的。在此之上,咱們可能也會遇到有一些不好的面試官,他們會把一個好的面試搞得一團糟。
如下是我職業生涯中幫助我成功經過面試的一些經驗。
「我知道這聽起來很老套,但我見過不少程序員坐在面試室外,在面試前的10分鐘內,試圖學習 "一切可能的東西"。這是一個災難性的方法,由於這不只會讓你不那麼自信,更糟糕的是,你可能會在面試時把關鍵的概念搞混。」
你理想的面試準備工做應該在面試前一週開始。一個可行的簡單的方法是製做10到15張幻燈片,突出可能被問到的關鍵點和你的回答。一張幻燈片能夠是這樣的:
記住,你不是在寫一本書。你只是在建立一個像閃存卡同樣的演示文稿,它儲存在你的記憶中,並在面試官提問時讓你回想起來。另外一個好處是,你還能夠在鏡子前演練這些幻燈片,進一步加強你的信心。
是的,這彷佛是大量準備工做,可是當面試很重要而且是你求之不得的工做時,沒有什麼能稱得上是「大量準備工做」。
「這可能聽起來又是老生常談了,但50%的程序員在面試中被拒絕的緣由不是由於他們的技術能力,而是由於他們沒有表現出對這份工做的熱情。」
「請記住,面試官也是在從各個角度評價你是否「適合」這份工做。企業想要的是那些對加入他們充滿激情的求職者。他們很欣賞那些對公司產品有研究的候選人,在面試時能提出本身的獨特看法。道理很簡單,興奮的程序員是快樂的程序員,快樂的程序員是高效的程序員。」
「請記住,任何面試就像約會,在約會中隱含的信息是,你是衆多選擇中的一個,若是你想在衆多選擇中名列前茅,你須要和別人不同。」這就是爲何要認真準備筆記,說明你爲何以爲某公司很讓你興奮,真的會提升你的經過率。帶上準備好的筆記,能夠體現你的準備狀況以及隨之而來的興奮程度。
是的,這是個難點,由於面試官不會幫助每一個候選人。事實上,他將無情地對待他們中的大多數人,而且只傾向於幫助一小部分與他創建了某種信任的程序員。
「是的,這裏的關鍵詞是信任,而在60分鐘內創建信任並不容易,但很是可行。」而關鍵是要明白他到底在期待什麼。一旦有面試問題,你須要絕對清楚地問出問題,若是這意味着要問出更多的細節,不要猶豫不決。
即便你幾乎肯定了答案,也要問問題。這樣作頗有用,由於它能夠驗證你的想法,也能夠吸引面試官的注意力。你還能獲得一個額外的好處,那就是在回答最後的解決方案以前,你能夠有更多的時間來收集你的想法。
「記住,關鍵是要與面試官互動,讀懂他的想法。」若是你沒有任何說明就直接開始編碼,你可能會錯過面試官給你進一步指點或提示的機會。
「記住,僅僅表現出你對代碼的熱情是不夠的。要創建信任,你須要表現得很好。」人們須要感受到你能作到,而且應該以爲與你進一步的對話很舒服。
廣義上說,參加面試的程序員能夠分爲兩種類型,一種是軟弱型,一種是爭論型。
軟弱型,顧名思義就是贊成面試官說的一切。解決問題的方法老是不止一種。始終是如此。一般解決一個問題有多種方法,其中有些方法可能不是最佳的。「而好的面試官都但願你能指出來他們思路是錯誤的。有時也是刻意爲之。因此贊成他說的話可能並非一個好主意。」
「而另外一個極端是爭論型的程序員,他們會在面試官的每個概念中找到漏洞。雖然這在必定程度上是好事,但不斷的爭論只是爲了證實本身的觀點,知足本身的自尊心,可能會讓你站在錯誤的立場上。」畢竟,沒有人願意在永久的衝突模式下工做,這是最壞的自我毀滅行爲。
這裏的關鍵是要慎重選擇你的戰場。你只須要選擇那些你能贏的戰役,展現你的專業知識。軟件開發是複雜的,並且很是主觀的,有些習慣也因程序員的不一樣而差別很大。「所以,改變另外一個程序員(面試官)的「工做方式」只是爲了證實你的觀點,並不會給你加分。」
相反,把精力集中在真正重要的事情上,優先考慮那些會讓你的價值更快地在臺面上發揮出來的戰鬥。
「經過面試是一項技能。做爲一個優秀的程序員是有幫助的,但這只是其中的一部分。你還須要培養本身的思惟能力,才能成爲勝利者。」
在你的職業生涯中,你會有幾回「好的」、「壞的」和「醜的」面試。可是,不要太擔憂這個問題,由於每一次面試都是一次學習的經歷,和流行的觀點(或書籍上的觀點)相反,我認爲沒有靈丹妙藥能100%保證經過面試。你只須要學習,準備,參與,再學習,再提升,才能愈來愈好。僅此而已。
正如Bo Bennett所說的那樣:
「成功,沒有捷徑可言。」
END
外文連接: