[心得] 商科大叔轉Google 軟體工程師
先說背景,大叔我是政大商科畢業,今年超過35歲,大學畢業後,當完兵,在國內工作三
年左右,接著到國外唸MBA ,之後在國外工作四年左右,一直都是商科人,現在人在矽谷
Google 總部當碼農。因爲不少朋友詢問過整個過程,我想po出來或許對版友也能有些幫
助。
三年多前下定決心轉職軟體工程師,我開始利用下班時間及週末,透過各種網路資源自學
CS,兩年前找到第一份碼農的工作,近一年前拿到 Google Offer
商轉碼的過程大概能打出兩到三篇文章,在此就不贅述了,我想版友多半還是理科,這篇
主要在分享面試準備心得及鼓勵有志當碼農的版友們
「關於身份」
若是你本身就有綠卡或本來就有美國公民身份,那是最好,即便沒有,也不太需要擔心,
美國對碼農人材的需求量很大,ㄧ路認識許多ㄧ起轉碼的朋友都順利找到願意辦工作簽證
的公司,大小型公司到新創公司都有,Google 同事之中也不乏直接從其他國家投美國的
缺的案例,再來,進Google的最後一個階段是team match ,如果美國走不通,還有在世
界各地的其他辦公室可以去
「關於學歷」
大叔我學士跟碩士都是商科,都不在美國,再舉另一個親身經歷來說,第一份碼農工作是
幫一個美國知名信用卡機構做事,當時也幫忙他們面試新碼農。
因爲該信用卡公司非常有名,來面試的人之中也不少 Ivy League 的人,像是耶魯之類,
最後,我們錄取兩個,其中一個是普通美國大學不相關科系畢業,前一份工作是街舞舞者
。
現在也幫 Google 面試碼農,可以很肯定的告訴你,不會因爲你是哈佛畢業就有加分,也
不會因爲你是島國不知名大學就有劣勢 公司的制度確保面試公平。碼農面試就是一翻
兩瞪眼,題目解不解的出來才是重點,跟學歷沒關係。
另外,我附近的同事有不少都不是 CS 出身,就我所知,有 EE、生科或數學系等,商科
出身的確實較少,但我相信只是商轉碼的人數本來就比較少的緣故。
「如何準備面試」
以個人經驗來說,分為三個階段
1. The Algorithm Design Manual
這是一本頗厚的紅皮書,大約六七百頁,裡頭詳細解說各種經典演算法及資料結構,它的
每一個經典例子我都反覆做了兩三次,直到徹底理解每一行的意義及其關鍵的作用。它可
以替之後刷題打下堅實的基礎,一部份人的共識是,若是能徹底讀通這本書,所有面試題
目都能解,其難度高於大多數面試題目。我個人也是持相同看法。
2. Cracking The Coding Interview
過了第一階段就可以開始做這本書,這也是極知名的書,五六年前可以說搞定了這本書就
能進 Google。到了現在可能難度不足,但近期依舊有朋友面試其他公司遇到ㄧ模ㄧ樣的
題目。 很適合作為高強度刷題前的熱身運動。
3. Leetcode
在 leetcode 上,你不會遇到 Google 的面試題目,但鐵定會遇到類似的觀念,諸如 DFS
, BFS, Priority Queue 或是 Dynamic Programming 等等。個人推薦分門別類的刷,一
個禮拜專門刷一種觀念,我通常是星期一到五每天刷三到四個小時(主要是因為還要上班
養活自己,若是你能全職準備,會建議每天刷個八小時或以上),到了六日則每天刷十二
個小時或以上,把周間的題目複習一次,並做些新題,下一個星期一再換另一種觀念刷,
不間斷地循環。
leetcode 有分 easy, medium, hard ,建議刷 medium 為主,我最終的比例大約是 1 :
8 : 1
剛開始題目做不出來是很正常的事,重點是要學會放棄,並學會快速找到能看得懂的解法
,個人推薦去查找每道題的討論區中比較多人 up vote 的文章,討論區中的人都非常熱
心,很多人會把思考過程拆解的一清二楚,對你自己建構思路很有幫助。
我是限制自己若是 20 分鐘內還完全沒有頭緒就放棄,殘酷的現實是,很多題目若是連頭
緒都沒有,你很可能三四個小時都做不出來,還容易想偏 (這些彎路我都走過),所以
要有放棄的勇氣。
承認自己的弱小,是改善自己的第一步
至於刷到什麼程度可以去面試呢?
我對認識的同事作過調查,老實說,沒有什麼關鍵性的結論,數字落差極大,聽到的數字
(從低到高)有:50, 80, 150, 200, 700, 1000,我是相當佩服刷了 50 題就搞定的一
位香港小弟 (以大叔我的年齡,是真的所有同事都能被我稱為小弟),但他本身底子就極
強。
我個人刷了 180 幾題左右,這數字不含 Cracking The Coding Interview 裡頭的題目,
此外,這180 題中許多題我都做了三遍以上。
面試前幾天對題目的感覺大概是這樣,只要是 medium 的題目,不論是哪種,我大概都能
在 20 分鐘內寫完,hard 的題目,若是 dynammic programming,還是挺有可能寫不出來
,但若是其他類型,大多能在 40 分鐘內解完
「關於面試」
一整天,總共五個面試官,五道題 (當然如果你解得很快,有些面試官還會多給你一道)
,每輪45分鐘,會是全英文,我不認為英文的要求很高,發音有腔調都不是問題,只要足
以講出自己的思路即可,諸如,為什麼要用這種資料結構,為什麼這麼做是最佳解,現在
的解法可能有什麼缺陷等等,但溝通是相當重要的,你應該主動跟面試官釐清一些細節,
主動提出一些 corner case之類的
你可以使用大多數的電腦語言,Google 會找到懂得該語言的面試官
另外,你應該把你的思路寫在白板上,所以要習慣使用它,我是在刷題的時候就開始練習
使用白板,也覺得對思考相當有幫助。
「關於薪資」
個人薪資不便透露,有興趣的可以去 www.teamblind.com ,裡面有許多熱心的網友分享
主要幾個大公司 (Google, Facebook, Amazon, Apple) 的 package,我覺得相當可信。
無法讓你大富大貴,但若你是博士、碩士或大學剛畢業,或剛工作一兩年,Google 軟體
工程師的入門薪資還是足以讓你在灣區養活你跟另一半的。
最後想說的是,大叔我沒有任何相關背景學歷,也不是什麼神人,年近 35 歲開始邊工作
邊學 CS,一步一步緩慢前進,最終也是能找到一份滿意的碼農工作,我相信以台灣優秀
的大學教育,加上版友 20 幾歲青春的肉體及新鮮的肝,來走這條路,只要喜歡寫碼,願
意花時間鑽研,在這大 CS 時代絕對大有可為。
希望這篇心得分享能帶給立志成為軟體工程師的你/妳,更多期待跟自信。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 67.188.178.71 (美國)
※ 文章網址: https://www.ptt.cc/bbs/Tech_Job/M.1587612189.A.F36.html
留言