LV. 42
GP 2k

【閒聊】程式設計師面試必讀

樓主 絕世賤男人 DnaBoss
3 -
本文作者@ guitardave24 ">David Byttow是一名程式設計師,
曾在Google和Square等公司工作過。
在正文之前,先讓我們回答幾個簡單的問題:

第一,你面試過多少家公司;
第二,這些公司中,錄取你的有多少?
記下這兩個數字,然後代入下面這個算式中
(為我自己發明,僅供參考,不具有其他意義):

x = number of companies interviewed with onsite //問題一的數字
y = number of offers received //問題二的數字
value = 100 * log(x) * y / x //最終結果

如果你算出的結果<90,那你真該看看這篇文章了。
如果你所得的分數>120,那你比較強大,
不需要這個,但我建議你不妨看看,權當參考。
首先做個自我介紹:

我沒有本科文憑。十二年前,那時我19 歲,隻身從芝加哥去往南加州,
所有的財產不過一部車和兜里的400 美金,還有車裡裝的別的東西。

但是,當時我已經達到專業級的程式水平,
而且,揣在兜里的還有一份年薪40000 美金的合同。

從那以後,我先後在Double Helix、Namco Bandai、
Google、Obvious 和Square 工作過,

同時還收到過諸如Naughty Dog、Activision、Riot、Games、
Blizzard、Pinterest、Goldman Sachs 以及更多這類公司的橄欖枝。

把這些經歷代入本文開頭的算式中後,我的得分為132。
在我的職業生涯中,我面試過超過500 名程式設計師,
錄取了其中超過10%的人。
並且,至少有15 人在圈子里相當出名,我至今還記得他們。

現在,我給自己幹,想要做點不一樣的東西。

羅列上述經歷的目的在於,
我想用我的親身經歷告訴這個行業的職場新人,
沒有所謂的面試寶典能讓你百分百簽到自己想要的工作,
以Google 為例,

他們的面試流程中到處都是變數,
首先,你的面試官團隊是由隨機抽取的5-7 名軟件工程師臨時組成,
接著,他們會商量著給出一套適當的題目讓你回答,
通常有一道題是關於徒手寫程式的。
偶爾會有個別惡趣味的面試官會進行一些刁難,
但這些面試官通常都是這個小組中的大牛,
並且,面試中是允許你犯個別錯誤的。

但這也不是說面試就是純粹碰運氣,雖
然幫助有限,但我還是想給出一些很有用的小技巧,
讓你有更充分的準備,減少在面試中的慌亂。


技術方面的技巧

第一:ABC(Always Be Coding)。 一力降十惠,
說的多不如做的多,所有工作都是這樣,程式也不例外。
你寫過的程式越多,你的能力也就越高。
但是,你必須做到有目的的程式,
在寫程式之前做到心中有數,明白自己的短板並且加強訓練,

堅持不懈的挑戰自己的極限,努力使自己在各方面都很優秀。
我強烈建議你把自己做過的每個項目——不管是否完成——都整理成作品集,
在這裡推薦GitHub,非常專業的程式分享社區,你可以把自己的作品集放到這。

第二:精通至少一種多重範式程式語言。
精通一門諸如C++這樣的語言能讓你從根本上理解程式,
因為這類語言風格多樣,如何寫程式完全取決於你自己的風格,
你能在一種語言裡體會到不同風格的程式在執行上的差別,
同時要達到這樣的水平還需要大量的實戰與練習。
而且這類語言通常在各個社區中也是最活躍的板塊,
你可以很容易就找到志同道合的朋友來分享經驗。
其他也支持多風格程式的語言還有C#、Java、PHP、Python及Ruby。

關於C++ 的題外話:有一個跟著名的面試題,許多面試官都喜歡問,
是這樣:“如果把C++ 分為十個等級,
1 為最低,10 為最高,你認為你自己處在哪一級?”
希望上帝保佑那些回答9 或者10 的
Bjarne Stroustrup 估計也只會給自己打到8 分甚至更低
(此人為C++ 之父)。
主要原因是這個語言經過這麼多年無數大能的不懈努力,
已經超級複雜,被稱為主流設計語言中最複雜的一款也不為過。

第三:熟悉各種算法的優劣。
先看看這份關於各種算法的對比圖,
確定都理解了之後,試著把這些算法都用自己的方式寫一遍。
這樣你就會對各種算法有更深刻的理解。
面試的時候這幾乎是必考題哦。

第四:熟悉所有常用函數。
你最好把所有的常用函數都用自己使用的語言寫一遍,
不要依賴於現成的函數
這樣會加深你對各個函數以及語言本身的理解。

試著快速寫出下列函數:

向量(動態數組)、鍊錶、堆棧、隊列、
哈希映射、集合、優先級隊列等等。

第五:要更務實。 臨時抱佛腳早就沒有用了,
踏踏實實的打好基本功才是王
花更多的時間去解決各種程式中遇到的問題,
這裡推薦多去TopCoder看看,

那裡有很多不錯的資源。裡邊有各種案例可供學
試著學習裡邊的思考方式來解決自己遇到的問題。
我當初花了整整兩個禮拜在TopCoder上,
到最後我都能閉著眼一隻手寫出迪科斯徹算法,
幾乎能解決所有的圖形問題。
所做的不過是不斷重複程式。
這可能是Google最終要我的原因之一吧。
Eric Schmidt說:“重複從不青睞祈禱者。”

第六:程式是最簡單的。
這麼多年的工作經驗使我明白了一條,
寫程式是一個工程師所有工作中最簡單明確的一部分。
我常掛在嘴邊的一句話是:
“簡單的就像寫段程式一樣。
”我相信對於一個工程師來講,事前準備和事後維護才是更艱難的工作。

比如說,你需要在程式前計劃好你需要寫什麼以及確保寫好的程式能順利運行。
盡量讓面試官知道,你不是一個只懂寫程式的呆子。

需要注意地是,在別人面前寫程式可能會略為彆扭,
最好提前做些這方面的練習,
可以參考下我前任同事Dan寫的這篇《Whiteboarding》。
非技術方面的技巧 需要提前說明的是我在這方面並不專業,僅供參考而已。
第一:明白你為什麼選擇這個公司這分工作。
不管大公司還是小公司,還是極度飢渴的創業公司,
都不會要一個連公司是乾嘛的都不知道的人,哪怕這個人技術牛到一塌糊塗也不行。

第二:一定要滿懷激情。
程序猿是一種沒有固定工作時間的動物,
如果你只是想找一份朝九晚五、有固定工資、
只在偶爾加加班的工作,你還是別乾這行的好,
你一定要愛程式,不管什麼時間什麼地點
,只要有需要,就能隨時投入工作。
愛一行,乾一行,對於程式設計師來說尤其如此。

第三:不懂就問。
面試的時候如果碰到沒有聽明白的問題,
一定不要不懂裝懂,
我曾經見過有些面試的人花了老牛鼻子的勁去解決根本沒問過的問題,
這不只是浪費你的時間,也是浪費我的時間。

第四:保持微笑。 所有面試寶典上都有這條,但是,不要做太過了,
適當的微笑能產生很大的效果。我有時候會在面試完一個人後特別受打擊,
但是下一個面試者簡單而真誠的微笑能讓我一下子心情好起來。
我把我所有能想到的都寫在這裡,希望能對大家有所幫助。
還是開頭那句話,沒有保證百分百成功的面試寶典,
只有不斷的努力,要想干好這份工作,堅持ABC 吧,少年。
3
-
未登入的勇者,要加入討論嗎?
板務人員:

7700 筆精華,前天 更新
一個月內新增 10
歡迎加入共同維護。


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】