當前位置:
首頁 > 科技 > 我是如何拿到 Google的Offer的?

我是如何拿到 Google的Offer的?

很多人都在問我,我是如何拿到 Google軟體工程師 Offer 的。所以,我在這篇文章中將專門分享一下我在獲得Google軟體工程師這份工作的過程中所使用的策略。

同樣的策略不僅適用於拿到Google軟體工程師的工作,也適用於在其他頂尖科技公司找到一份這樣的工作,比如亞馬遜、微軟和Facebook等公司的軟體工程師工作。

在這篇文章中,我將分享在這些頂尖科技公司中找到一份軟體工程師工作所需經歷的六步流程。除此之外,我還將討論:

(1)剛開始的時候,如何學會編程?

(2)學會編程之後,還需要學習什麼知識?

(3)如何找到你的第一份編程工作或實習工作?

(4)申請軟體工程師工作的最佳方式是什麼?

(5)如何才能最好地準備編程面試?

(6)擁有計算機科學學位很重要嗎?

(7)就讀於頂尖大學很重要嗎?

步驟1:學習編程

要想成為軟體工程師,學會編程自然是最起碼的要求。

剛開始,要想學習編程,我建議你從一些互動式教學網站著手,比如Codecademy、freeCodeCamp,我聽說 SoloLearn 也不錯。你可以在這些網站上學習到最基本的編程知識。

在這之後,我會通過看視頻教程的方式來學習更多高級的主題。我推薦YouTube、Pluralsight、Lynda.com和Udemy等網站。你可以在這些網站上找到以下主題的編程教程:

Web開發;

移動開發;

遊戲開發。

你可以根據自己的興趣自行選擇。

但問題來了,我應該首先學習哪種編程語言呢?

我的答案其實很簡單:選擇JavaScript或Python,但具體選擇哪一種語言最終還取決於你的個人興趣。

步驟2:做一些自己的個人項目

在你已經學習了一些編程教程之後,你應該通過做一些個人項目來練習你所學到的知識。在這個過程中,你應該找到那些你真正感興趣的項目去做。

例如,如果你喜歡攝影的話,那麼你可以創建一個用於存儲你的所有照片的照片網站。如果你喜歡炒股的話,那麼你可以開發一個能夠為你分析股票圖表的系統。如果你喜歡解決問題的話,那麼你可以嘗試參加一些編程類的比賽。

當你在做一個項目的時候,最開始應該儘可能自己獨立完成。如果你在這個過程中遇到了無法自己解決的難題,這時你可以向線上或線下資源來尋求幫助。比如,如果你遇到了與編程有關的技術問題,那麼可以利用Stack Overflow來諮詢你所遇到的具體的編程技術問題。

步驟3:找到自己的第一份編程工作或實習工作

在做了一些自己的個人項目之後,你應該就能夠找到自己的第一份編程工作或實習工作了。第一份編程工作或實習工作能夠為你今後面試那些頂尖科技公司積累相關的工作經驗。

職業生涯的第一份工作就直接進入Google 這類頂尖科技公司其實也是有可能的,但這種情況比較少。一般情況下,第一份工作就職於一家不那麼知名的公司是一種更加常見的情況。

申請軟體工程師工作的最佳方式

僅僅通過在線申請工作肯定不是最好的策略,因為基本上所有人都在這麼干。

我的建議是,你可以通過使用LinkedIn和實名人脈網來找到自己的第一份編程工作。

在LinkedIn上,首先找到你想應聘的公司的招聘人員。接著,問招聘人員你是否滿足自己感興趣的崗位的條件。如果你不滿足條件,也沒關係,這時你可以問他們如何更好地準備才能更快地滿足該崗位的條件。對於實名人脈網,我推薦你通過Meetup等網站,與當地公司的工程師和招聘人員面對面溝通。

這些還不是全部。

如果你想申請應聘小公司或中型公司,你可以使用LinkedIn和實名人脈網路。但是,如果你想申請Google和Facecbook等頂尖科技公司的崗位,這種策略就沒那麼有效了。

要想申請那些頂尖科技公司的工作崗位,我建議將下面三種策略結合起來使用:

參加你所在地區周邊大學的招聘會和招聘活動;

找就職於這些公司的朋友,讓他們幫忙內推;

線上申請。

將以上這些策略結合起來有助於增加你獲得這些頂尖科技公司面試機會的可能性

最後說一句,我不是很明白為什麼在 LinkedIn 上申請這些大公司的崗位的效率會如此低,我覺得可能是因為在 Linkedin上申請這些公司的人太多了,畢竟他們太受歡迎。

步驟4:學習數據結構和演算法方面的知識

像 Google 和微軟這類頂尖科技公司,他們在面試中都會問數據結構和演算法方面的問題。所以,如果你還沒有掌握這方面的知識,那麼你應該抓緊學習了。

有很多這方面的課程,其中比較受歡迎的一些課程是:

Coursera 上的斯坦福大學課程

YouTube 上的 MIT 課程

Skiena著作的《演算法設計手冊》(The Algorithm Design Manual)

《演算法》(另一本書)

你應該多多嘗試一下上面的這些課程資源,然後選擇自己最喜歡課程去學習。

步驟5:為編程面試做準備

Google和微軟等頂尖科技公司的編程面試的難度是非常大的,但是準備這些公司的編程面試的方法是很簡單直接的。

一旦你對數據結構和演算法方面的知識有了深刻理解之後,推薦你使用下面三種用來練習編程面試的資源:

Leetcode:一個用來練習編程面試問題的互動平台;

Cracking the Coding Interview?(攻克編程面試): 一本關於編程面試的非常受歡迎的書;

Daily Coding Problem?(每日編碼問題):每天會通過郵件的方式給你布置一個給你編程問題。

在你自己練習編程面試幾周時間之後,接下來你就應該開始進行模擬面試了。

如何模擬面試?

一般情況下,你可以找朋友配合來模擬面試,從上述資源中選一些面試問題來問對方。

然後,在紙上或在Google Docs上解答每一個模擬面試問題,並向你的朋友解釋你的答案。你需要分別從應聘者和面試官這兩個角度做模擬練習,這樣你就可以親自感受做面試官的感覺是什麼樣的了。

在你做了20次左右的模擬面試之後,你基本上就會為面試你真正想加入的公司做好準備了。

步驟6:申請、申請、再申請

在申請頂尖科技公司的崗位的時候,要利用我在上面提到過的三種策略:

參加你所在地區周邊大學的招聘會和招聘活動;

找就職於這些公司的朋友,讓他們幫你內推;

在線申請。

如果你第一次申請失敗了,也不要擔心。事實上,這些公司的招聘崗位的競爭是非常激烈,申請失敗是家常便飯。

就拿我自己來說,為了進入Google做 軟體工程師,我申請了5次 Google 的這個崗位,最終才獲得這份工作。

現在做個簡單的總結:

步驟1:學習編程

步驟2:做一些自己的個人項目

步驟3:找到自己的第一份編程工作或實習工作

步驟4:學習數據結構和演算法方面的知識

步驟5:為編程面試做準備

步驟6:申請、申請、再申請

難道真的這麼簡單?沒錯,確實就這麼簡單。但是,想要完成上述說的這六個步驟,是需要花費很多時間和精力的。

最後再補充幾個問題:

要想申請頂尖科技公司的軟體工程師崗位,我必須要擁有計算機科學學位嗎?

答案很簡單:不是的。但是,擁有計算機科學學位對應聘這類崗位是有很大幫助的。如果你擁有計算機科學學位,那麼說明你已經掌握了第1-4步中的大部分內容(學習編程、做自己的個人項目、找到第一份編程工作或實習機會、學習數據結構和演算法方面的知識)。如果你沒有拿到計算機科學學位,那麼你就需要自學這其中的大部分知識了。

但是這裡還有一點需要注意的是,即使你已經拿到了計算機科學學位,想要在Google、微軟這類頂尖科技公司找到一份軟體工程師的工作依然是需要做大量準備工作的。

我需要就讀於像麻省理工學院、斯坦福大學、卡內基梅隆大學這樣的頂尖大學才能成功應聘頂尖科技公司的軟體工程師崗位嗎?

答案同樣是:不。就讀這些頂尖大學會對你應聘頂尖科技公司的軟體工程師崗位所有幫助,但並非必要條件。Google的前任人事高級副總裁Laszlo Bock也是同意這個觀點的。

Bock 曾寫過一本名為《重新定義團隊:谷歌如何工作》(Work Rules!)的書。他在這本書中曾這樣寫道:與麻省理工學院等頂尖院校中那些表現一般的學生相比,Google更喜歡在一些知名度較低的院校中表現優異的學生。

我認為這是有一定道理的,因為如果你很聰明,而且很勤奮,你去哪所學校就讀其實並沒有那麼重要。

要想申請應聘頂尖科技公司的軟體工程師崗位,我的 GPA成績需要非常好嗎?

答案依然是:不。

擁有很高的 GPA 分數可能對獲得面試機會有點幫助,但是在簡歷中展示自己紮實的實踐經驗和做過的有趣項目相比而言更為重要。

事實上,《重新定義團隊:谷歌如何工作》(Work Rules!)這本書中這樣寫道:在過去,Google是非常重視候選人的 GPA成績單的。但是他們後來發現,擁有很高的 GPA 分數與在長期工作中擁有出色的工作表現是沒有很強的關聯性的。發現這個之後,Google 就不再那麼重視 GPA 分數了。

那麼我到底需要什麼呢?

通常情況下,你需要的是強悍的編程技術能力和解決問題的能力,對計算機科學基本知識的紮實理解,同時需要在簡歷中展示你做過的有趣的項目經驗。如果你按照我上面分享的6個步驟去做的話,你是可以具備這些能力的。

最後,我如何才能製作一份好的簡歷呢?

你可以參考我之前曾經 Google 軟體工程師時製作的真實的簡歷。一般情況下,簡歷保持在一頁就好,我自己的簡歷還是有些太長了,不過也不耽誤你用它來作為參考:

                                                    YK Sugi

Experience

Program Manager Intern at Microsoft, Redmond, WA, 5/2015 – 8/2015

      I was responsible for designing and implementing a specific feature within Microsoft Dynamics CRM with developers and other PM"s.  My responsibilities included the initial research, planning the project, designing the product, creating wireframes, and writing and executing on a spec.

Data Science Intern at Microsoft, San Francisco, CA, 6/2014 – 8/2014

      My responsibilities in the Yammer data analytics team were:

Conducted a statistical analysis to deepen our understanding of existing content』s effects on user engagements.

Responsible for creating an internal dashboard tool that is now used to view user engagement metrics such as the number of active users and the summary of their activities on the Yammer website.

Founder and President at Data Science Club at UBC, Vancouver, BC, 10/2013 – 5/2014

Responsible for acquiring more than 120 members

Organized meet-ups to exchange our ideas on data science

Formed a team of several students to work on a machine learning competition on Kaggle

Software Development Intern at Moneytree, Tokyo, 5/2013 – 8/2013

At this iPhone application company, I was responsible for creating JavaScript scripts that screen-scrape transaction information from our users』 bank accounts and credit card accounts.  I also created Ruby scripts that solved miscellaneous business problems, including one machine learning classification problem.

Education

University of British Columbia, Vancouver, BC

BS Candidate/Statistics Major, December 2015

GPA 87.6/100

Suffolk University, Boston, MA

BS Candidate/Physics and Computer Science Majors(transferred out)

GPA 3.964, Undergraduate Honors Program

Technical Skills

Experience in Product Management, Analytics/Statistics, and Software Engineering.

Technical Tools:

Wireframing: Balsamiq, Microsoft PowerPoint

Designing: Adobe InDesign, Photoshop, Illustrator

Statistical Analysis: R

Machine Learning: Python with NumPy and Pandas, Ruby, Spark (prior experience)

Programming Technologies: SQL, MATLAB, Ruby on Rails, Java

Programming Technologies, front end: JavaScript, HTML/CSS, LaTeX

Version Control: Git, GitHub, Bitbucket

Other Skills

Languages: Fluent in English and Japanese

Public Speaking: Experience and ability to speak with passion and confidence in public speaking and stand-up comedy

Awards

TELUS / IEEE Student Innovation Challenge, September 2015

Our team won a third place at the pitch contest where we presented an idea for a device that helps the blind.  Our idea was a device that converts 3-dimensional special information into sound so that blind people can 「see」 the environment by hearing.  We were awarded a $3000 grant to develop a prototype.

Projects

Fireflic,Winter 2014

As a follow-up project of YamBomb! (see below), I designed and developed a mobile gaming app to pass around a 「fire」 amongst friends that 「explodes」 in 24 hours.  A user can attach an article or picture to the fire, so interesting content is passed to many people.  Developed with Javascript.

YamBomb!, August 2014

A colleague at Microsoft and I created a gaming app with which one would send a 「bomb」 that 「explodes」 in 24 hours unless they pass it to somebody else.  It started with a few users and organically grew to more than 70 users within a week of its launch.  We developed the application with Ruby on Rails and Yammer API.

March Madness Prediction,  March 2014

I made a least square model for predicting winners of March Madness, the national college basketball tournament in the United States.  I built this model with different types of regularizations (L1 and L2), utilizing Python libraries such as NumPy and matplotlib.  I ranked at the 32nd place out of 248 teams at the Kaggle competition.

編譯組出品。編輯:郝鵬程。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 36氪 的精彩文章:

曠視科技副總裁謝憶楠:中國人工智慧的系統與準繩
諾基亞X5劉海屏新機799元,小米8終於不是一個人了

TAG:36氪 |