當前位置:編程學習大全網 - 編程語言 - 如何才能成為谷歌工程師

如何才能成為谷歌工程師

如果小編說,谷歌也曾經錄用過壹位沒受過正規大學教育、連本科文憑都沒有、基本全靠自學成才的草根碼農,大家會不會覺得不可思議?但是,這事兒真的可以有——曾就職於谷歌、Square、DoubleHelix 等公司的資深軟件工程師及創業者大衛·比托(DavidByttow)日前撰文介紹了他從壹介草根到被谷歌錄用的經歷,故事絕對勵誌!

文章摘要: 第壹,鼓起勇氣挑戰很牛的事情,做著做著自己也就變牛了。

第二,與業界“大拿”為友,能改變解決問題和看待世界的方式。

第三,勤能補拙,在大量實踐中彌補基礎知識方面的差距。

第四,抹去簡歷中的教育背景,意外得到面試機會;做足準備,谷歌面試也能變得樂趣十足。事實證明,谷歌對優秀的人才並不完全拘泥於學歷。

其實,我當年非常非常想上大學。我選擇申請加州大學洛杉磯分校(UCLA),但是很不幸,我在高中的平均績點(GPA)只有可憐巴巴的 2.45,所以我也就沒法被大學錄取了。然後,我在普渡大學蓋萊默校區(PurdueUniversityCalumet)進修計算機課程,同時盼望自己有朝壹日能順利轉學或者另謀出路。過了將近兩個學期之後,出路來了——我得到了壹個令人無法拒絕的錄用通知。

第壹步:假裝自己很牛,直到真的變牛 上大學時,我曾經給印第安納州格裏菲斯市的壹家小公司打工,工作內容是幫助本地公司建網站,時薪 12 美元。這份工作與我所夢想的未來職業相去甚遠,但也不算太糟糕。

我埋頭苦幹、不說大話,把好幾個項目做得超乎預期。這為我建立了很好的聲譽,也讓那家公司獲利頗豐。與此同時,我還在並不充裕的業余時間裏嘗試遊戲開發。後來我孤註壹擲,請求公司管理層給我三個月時間和壹點點錢來開發壹款能在網上銷售的遊戲。我做出了漂亮的電子表格和豐富多彩的圖表,向他們展示了***享軟件模式的原理和遊戲的光明“錢途”。當時我也不大清楚自己在做什麽,但他們還是買了我的賬,可能是因為我做的東西顏色很漂亮吧。

開發了兩個多月之後,我在網上發布了壹段演示,引起了加州初創企業 CodeFire 的註意,因為他們做的也是壹模壹樣的太空射擊遊戲,類似於非 3D 的 SubSpace。但引起關註未必就是好事——很不幸,他們向我發出了勒令停止通知函。於是我也只能回復曰:“沒問題,我會到此為止——前提是妳們得雇我開發妳們的遊戲。”他們回以壹份錄用通知,而我笑納了它。

註意:這家公司持有這款遊戲的原始版權,而我在離職前也按照規定提前三周通知了老東家。

第二步:與“大拿”交朋友 這或許是妳能做的最重要的事情之壹——找到妳們行業中的大拿,讓他們做妳的導師,切記學無止境。在 DoubleHelix 工作時,我遇到的大拿是內森·亨特(NathanHunt),他是我見過的最聰明、最謙遜的牛人之壹,而且他對我提出的所有問題都極具耐心,無論這些問題有多麽初級。我成百上千次走進他的辦公室,隨意提出諸如“我如何才能把壹個旋轉矩陣順利插入另壹個?”之類的問題。多年之後,他比我晚壹個月加入了谷歌。

我的每壹位導師都在壹定程度上改變了我解決問題或看待世界的方式,我在此就不壹壹贅述了。

第三步:彌補差距 我沒有正式的計算機學位,因此我明白自己缺乏很多基本知識,例如我曾經用物理引擎解決壹個動態編程問題,結果總也不成功。為了彌補這些差距,我實踐過我所聽聞或讀到過的幾乎所有最常見的數據結構和算法。妳肯定能找到自己需要的信息,但是通過觀察“知其然”與通過實踐“知其所以然”之間存在著巨大的差距。

隨著時間的推移,妳需要做到以下事情:

1. 精通C、C++、Objective-C、Java、PHP、Python 或 Ruby 當中至少壹門編程語言,熟練使用至少壹種其他語言,並且熟悉 Scala、Haskell 或 Lisp。

2. 學習數據結構,實踐大多數常用數據結構,了解它們的復雜性。

3. 解決編程問題,多看多練多思考。

4. 構建自己的已完成(未完成)項目作品集(例如編程框架、移動或 Web 應用、小遊戲,等等)

第四步:找到自信 離開印第安納六年後,我已經在多個平臺上推出了大約 6 款遊戲。我開始感到無聊,需要尋求新的挑戰。我申請了谷歌的職位,覺得被谷歌雇傭能讓我成為“真正的工程師”——對於我這個沒有壹紙文憑的人來說,這就是我為之奮鬥已久的理想。但是,我壹直沒有收到谷歌的回音,而我對此並不感到驚訝。

壹年之後,我重新提交了自己的簡歷,但是這壹次索性把“教育背景”壹欄整個兒去掉了。令人哭笑不得的是,壹名招聘人員居然打來了電話並為我安排了壹次技術方面的電話面試。我問她能否把電話面試安排在兩周之後,她同意了。我需要那段時間——我分秒必爭地臨時抱佛腳,最大限度地向自己的腦袋裏填裝各種算法和數據結構,每天編程 12 到 14 個小時,解了數百道編程題目。我如癡如醉地投入其中,直到我對谷歌面試的恐懼感變成了自信和興奮。

我依然記得在谷歌面試過程中遇到的每壹個人,與他們打交道實在是壹種樂趣。面試官們說起話來風趣幽默,而我相信他們壹定看到了我的興奮和對面試問題的期待。

以下是我遇到的壹些面試題目: 1)給出壹組二維點,計算出它們的 skyline。此題很簡單,解法有好幾種,而我使用了壹種叫做“最大堆”(maxheap)的常用數據結構。

3)講壹講妳最看重的軟件優點。這是壹次“開放性”討論面試,我講到了各種測試以及它們發揮價值的時候(例如單元、整合、驗收),還講到了利於代碼可維護性的壹致風格,等等。這些內容能在《CodeComplete》和《EffectiveJava》等圖書中找到。

我真的非常享受每壹輪面試和解答各種題目的過程。如果我不是有備而來,情況肯定就會大不相同。面試之後,我自我感覺很好,但是我聽說即便招聘委員會最終決定發放錄用通知,也需要 CEO 拉裏·佩奇親自簽字才有效。我很擔心他壹看到我在教育背景方面的不足,我就立馬完蛋了。

但是,這樣的悲劇終究沒有發生——壹天中午,我在聖克拉拉市(SantaClara)吃壽司時接到了電話,然後欣喜若狂地接受了錄用通知。從那天起,我終於可以確信我再也不用回學校念書了。

正如孫子曰:“是故勝兵先勝而後求戰,敗兵先戰而後求勝。”

註:我在谷歌度過了精彩非凡的五年,作為壹名工程師不斷學習和成長,但是現在我已經不在谷歌工作了。

  • 上一篇:服務機器人市場需求、下遊需求驅動及競爭格局(附報告目錄)
  • 下一篇:小白學習Java的具體學習步驟
  • copyright 2024編程學習大全網