7.2 面試真題 & 詳解
A friend of mine had an interview a couple weeks ago with Google Inc. He provided me a list of just some of the questions he was asked. I’ve added a few more from others I have talked to who had interviews with the internet giant,Google, as well. See if you can answer them. Many are open ended with several right answers, therefore I did not provide the answers.
1. How many golf balls can fit in a school bus?
2. You are shrunk to the height of a nickel and your mass is proportionally reduced so as to maintain your original density.
You are then thrown into an empty glass blender. The blades will start moving in 60 seconds. What do you do?
3. How much should you charge to wash all the windows in Seattle?
4. How would you find out if a machine’s stack grows up or down in memory?
5. Explain a database in three sentences to your eight-year-old nephew.
6. How many times a day does a clock’s hands overlap?
7. You have to get from point A to point B. You don’t know if you can get there. What would you do?
8. Imagine you have a closet full of shirts. It’s very hard to find a shirt. So what can you do to organize your shirts for easy retrieval?
9. Every man in a village of 100 married couples has cheated on his wife. Every wife in the village instantly knows when a man other than her husband has cheated, but does not know when her own husband has. The village has a law that does not allow for adultery. Any wife who can prove that her husband is unfaithful must kill him that very day. The women of the village would never disobey this law. One day, the queen of the village visits and announces that at least one husband has been unfaithful. What happens?
10. In a country in which people only want boys, every family continues to have children until they have a boy. if they have a girl, they have another child. if they have a boy, they stop. what is the proportion of boys to girls in the country?
11. If the probability of observing a car in 30 minutes on a highway is 0.95, what is the probability of observing a car in
10 minutes (assuming constant default probability)?
12. If you look at a clock and the time is 3:15, what is the angle between the hour and the minute hands? (The answer to this is not zero!)
13. Four people need to cross a rickety rope bridge to get back to their camp at night. Unfortunately, they only have one flashlight and it only has enough light left for seventeen minutes. The bridge is too dangerous to cross without a flashlight,and it’s only strong enough to support two people at any given time. Each of the campers walks at a different speed. Onecan cross the bridge in 1 minute, another in 2 minutes, the third in 5 minutes, and the slow poke takes 10 minutes to cross.How do the campers make it across in 17 minutes?
14. You are at a party with a friend and 10 people are present including you and the friend. your friend makes you a wager that for every person you find that has the same birthday as you, you get $1; for every person he finds that does not have the same birthday as you, he gets $2. would you accept the wager?
15. How many piano tuners are there in the entire world?
16. You have eight balls all of the same size. 7 of them weigh the same, and one of them weighs slightly more. How can you find the ball that is heavier by using a balance and only two weighings?
17. You have five pirates, ranked from 5 to 1 in descending order. The top pirate has the right to propose how 100 gold coins should be divided among them. But the others get to vote on his plan, and if fewer than half agree with him, he gets killed. How should he allocate the gold in order to maximize his share but live to enjoy it? (Hint: One pirate ends up with 98 percent of the gold.)
Do you still think you have what it takes to work for Google?
谷歌面試真題二: 第一題:多少只高爾夫球才能填滿一輛校車?(職位:產(chǎn)品經(jīng)理)解析:通過(guò)這道題,谷歌希望測(cè)試出求職者是否有能力判斷出解決問(wèn)題的關(guān)鍵。
網(wǎng)友的答案:我想,一輛標(biāo)準(zhǔn)大小的校車約有 8 英尺寬、6英尺高、20英尺長(zhǎng)——我能知道這些數(shù)字完全是因?yàn)槲以?jīng)無(wú)數(shù)次被堵在校車后面。
據(jù)此估算,一輛校車的容積約為 960 立方英尺,也就是 160 萬(wàn)立方英寸。一個(gè)高爾夫球的半徑約為0.85英寸,我認(rèn)為一個(gè)高爾夫球的體積約為2.6立方英寸。
用校車的容積除以高爾夫球的體積,得到的結(jié)果是 66 萬(wàn)。不過(guò),由于校車?yán)锩孢有座位等等各種東西,而且高爾夫球的形狀使得不同的球之間會(huì)有不少空隙。我的最終估算結(jié)果是 50 萬(wàn)。這聽(tīng)起來(lái)有些荒唐。如果我直接猜的話,我給出的答案肯定是 10 萬(wàn)以下,不過(guò)我相信我的數(shù)學(xué)水平。
當(dāng)然,如果這里的校車是小布什當(dāng)年坐過(guò)的那種,結(jié)果還要除以2,差不多是 25 萬(wàn)個(gè)。
第二題:讓你清洗西雅圖所有的玻璃窗,你的報(bào)價(jià)是多少?(職位:產(chǎn)品經(jīng)理)答案:這一題我們可以玩點(diǎn)花招,我們的答案是“每扇窗 10 美元”。
第三題:有一個(gè)人們只想生男孩子的國(guó)家,他們?cè)谟袃鹤又岸紩?huì)繼續(xù)生育。如果第一胎是女兒,他們就會(huì)繼續(xù)生育直到有一個(gè)兒子。這個(gè)國(guó)家的男女兒童比例是多少?(職位:產(chǎn)品經(jīng)理)答案:這一題引發(fā)了不少爭(zhēng)議,不過(guò)我們發(fā)現(xiàn),這一題的解答步驟如下:
1、假設(shè)一共用 10 對(duì)夫妻,每對(duì)夫妻有一個(gè)孩子,男女比例相等。(共有 10 個(gè)孩子,5男 5 女);
2、生女孩的 5 對(duì)夫妻又生了 5 個(gè)孩子,男女比例相等。(共有 15 個(gè)孩子,男女兒童都是7.5個(gè));
3、生女孩的2.5對(duì)夫妻又生了2.5個(gè)孩子,男女比例相等。(共有 17.5 個(gè)孩子,男女兒童都是8.75個(gè));
4、因此,男女比例是1:1。
第四題:全世界共有多少名鋼琴調(diào)音師?(職位:產(chǎn)品經(jīng)理)答案:我們的回答是“要看市場(chǎng)情況。如果鋼琴需要每周調(diào)音一次,每次調(diào)音需要 1 個(gè)小時(shí),且每個(gè)調(diào)音師每周工作 40 個(gè)小時(shí)。我們認(rèn)為每 40 臺(tái)鋼琴就需要一名調(diào)音師。”
這個(gè)問(wèn)題又被稱為“費(fèi)米問(wèn)題”(Fermi problem)。費(fèi)米提出的問(wèn)題是“在芝加哥有多少鋼琴調(diào)音師”。一個(gè)典型的答案是包括一系列估算數(shù)據(jù)的乘法。如果估計(jì)正確,就能得到正確答案。比如我們采用如下假設(shè):
芝加哥約有 500 萬(wàn)人居住;
平均每個(gè)家庭有 2 人;
大約有1/20的家庭有定期調(diào)音的鋼琴;
平均每臺(tái)鋼琴每年調(diào)音一次;
每個(gè)調(diào)音師調(diào)整一臺(tái)鋼琴需要 2 小時(shí);
每個(gè)調(diào)音師每天工作 8 小時(shí)、每周 5 天、每年 50 周。
通過(guò)這些假設(shè)我們可以計(jì)算出每年在芝加哥需要調(diào)音的鋼琴數(shù)量是:
(芝加哥的 500 萬(wàn)人口)/(2人/家)×(1架鋼琴/20家)×(1架鋼琴調(diào)整/1年)=125000
平均每個(gè)調(diào)音師每年能調(diào)整的鋼琴數(shù)量是:
(50周/年)×(5天/周)×(8小時(shí)/天)/(1架鋼琴/2小時(shí))=1000
芝加哥的調(diào)音師數(shù)量是:
(芝加哥需要調(diào)音的鋼琴數(shù)量 125,000)/(每個(gè)調(diào)音師每年能調(diào)整的鋼琴數(shù)量 1000)=125
第五題:馬路上的井蓋為什么是圓的?(職位:軟件工程師)答案:圓形的井蓋在任何角度都不會(huì)掉下去。
第六題:為舊金山市設(shè)計(jì)一個(gè)緊急撤離方案(職位:產(chǎn)品經(jīng)理)答案:這又是一個(gè)考察求職者是否能夠發(fā)現(xiàn)問(wèn)題核心的題目。我們?cè)诨卮鹬笆紫纫獑?wèn)的是,“撤離方案應(yīng)對(duì)的是什么樣的災(zāi)難”。
第七題:一天之中,時(shí)鐘的時(shí)針和分鐘會(huì)重合幾次?(職位:產(chǎn)品經(jīng)理)答案:22次。
重合的時(shí)間點(diǎn)分別是:上午,12:00、1:05、2:11、3:16、4:22、5:27、6:33、7:38、8:44、9:49、 10:55;下午 12:00、1:05、2:11、3:16、4:22、5:27、6:33、7:38、8:44、9:49、10:55。
第八題:請(qǐng)闡述“Dead beef”的意義。(職位:軟件工程師)答案:網(wǎng)友給出的正確答案是,在大型機(jī)和匯編語(yǔ)言的時(shí)代,“DEADBEEF”是調(diào)試計(jì)算機(jī)時(shí)所使用的一個(gè)十六進(jìn)制值,以便于在大量的十六進(jìn)制中斷信息中標(biāo)記和查找特定的內(nèi)存數(shù)據(jù)。大多數(shù)計(jì)算機(jī)科學(xué)專業(yè)畢業(yè)生都應(yīng)該會(huì)在匯編語(yǔ)言的課程上見(jiàn)過(guò)這個(gè)概念。
第九題:有人把車停在旅館外,丟失了他的財(cái)物,他接下來(lái)會(huì)干什么?(職位:軟件工程師)答案:下車踏到人行道上。
第十題:你需要確認(rèn)朋友鮑勃是否有你正確的電話號(hào)碼,但不能直接問(wèn)他。你須在一張卡片上寫下這個(gè)問(wèn)題,然后交給愛(ài)娃,由愛(ài)娃把卡片交給鮑勃,再轉(zhuǎn)告你答案。除了在卡片上寫下這個(gè)問(wèn)題外,你還必須怎樣寫,才能確保鮑勃在給出答案的同時(shí),不讓愛(ài)娃知道你的電話號(hào)碼?(職位:軟件工程師)答案:既然只需要核對(duì)鮑勃手中的號(hào)碼是否正確,你只需要讓他在某個(gè)特定的時(shí)刻給你打電話,如果他沒(méi)打過(guò)來(lái)的話,就能確認(rèn)他沒(méi)有你的號(hào)碼。
第十一題:假設(shè)你是海盜船的船長(zhǎng),船員們即將對(duì)黃金的分配方案投票。如果贊成票不到半數(shù)的話,你會(huì)被殺死。你怎樣才能在保證自己存活的情況下拿到最多的黃金?(職位:軟件工程師)答案:將黃金平均分給最有權(quán)勢(shì)的 51% 的船員。
第十二題:有八個(gè)大小相等的球,其中有一個(gè)重量比其他球略重。如何在只用天平稱兩次的情況下找出那個(gè)不一樣的球?(職位:產(chǎn)品經(jīng)理)答案:從八個(gè)球中取出六個(gè),在天平兩邊各放三個(gè)。如果平衡,把剩下的兩個(gè)球分別放在天平兩邊,就能找出較重的球。如果不平衡,較重的球就在天平下沉的一邊,從這三個(gè)當(dāng)中取出兩個(gè)稱量,若不平衡,下沉的一邊較重,若平衡,剩下的就是較重的球。
第十三題:你拿著兩個(gè)雞蛋站在 100 層的大樓上。雞蛋或許結(jié)實(shí)到從樓頂?shù)粝乱膊粫?huì)摔破,或許很易碎,在一樓摔下就破碎。最少試驗(yàn)多少次可以找出雞蛋不會(huì)被摔碎的最高樓層?(職位:產(chǎn)品經(jīng)理)答案:14次。從 14 樓丟下第一顆雞蛋,如果破碎了就逐層往下試驗(yàn),共需 14 次。如果沒(méi)有破碎,往上走 13 層;在 27 樓第二次丟下第一顆雞蛋,如果碎了,換第二顆雞蛋往上走 12 曾測(cè)試,若仍沒(méi)碎,往上走 12 層試驗(yàn)第一顆雞蛋;以此類推,直到走到第 99 層。如果雞蛋要到 100 層高度落下才會(huì)破碎,總共需要 14 次嘗試。’
第十四題:如果用三句話向你 8 歲大的侄子解釋什么叫數(shù)據(jù)庫(kù)?(職位:產(chǎn)品經(jīng)理)答案:這一題考察的是求職者用簡(jiǎn)單的語(yǔ)言闡述復(fù)雜概念的能力。我們的答案是“數(shù)據(jù)庫(kù)是一個(gè)能夠記住關(guān)于很多東西的很多信息的機(jī)器。人們用它來(lái)幫助記住這些信息。出去玩吧。”
第十五題:你被縮小到只有硬幣厚度那么點(diǎn)高,然后被扔到一個(gè)空的玻璃攪拌機(jī)中,刀片一分鐘后就開(kāi)始轉(zhuǎn)動(dòng)。你會(huì)怎么做?(職位:產(chǎn)品經(jīng)理)答案:這一題考察的是求職者的創(chuàng)造性。我們會(huì)嘗試把電動(dòng)機(jī)弄壞。
谷歌面試經(jīng)驗(yàn)一:去年做了不少面試(據(jù)說(shuō)自己的面試次數(shù)在Google全球都是排在前列的,有點(diǎn)兒不敢相信),也參加了好幾次校園招聘之類的活動(dòng),體會(huì)總或多或少有一些。也許可以給大家分享一些不涉及公司秘密的東西,一來(lái)讓大家了解Google為什么聚集了這么多出色的技術(shù)人才,二來(lái)也可以讓那些投簡(jiǎn)歷的朋友在心理上準(zhǔn)備得更充分一些——說(shuō)實(shí)話,的確有些應(yīng)聘者是因?yàn)閷?duì)Google招聘流程,還有面試要求不太適應(yīng),而沒(méi)有展現(xiàn)出自己應(yīng)有的水平的。
毫無(wú)疑問(wèn),Google在最近幾年里一直是世界頂尖技術(shù)人才的聚集地。遠(yuǎn)的不說(shuō),在Google中國(guó),我們身邊就有ACM世界冠軍,奧賽金牌得主,以及若干知名技術(shù)公司的前CTO。但這并不是說(shuō)Google招的全都是那些擁有偌大的名頭或來(lái)歷的牛人,我覺(jué)得,只要有真本事,進(jìn)Google并不像想象中那么難。
關(guān)于招聘流程,其實(shí)開(kāi)復(fù)在《與未來(lái)同行》那本書的第185頁(yè)已經(jīng)講得非常清楚了,不外乎是下面幾個(gè)主要的步驟:
1. 篩選簡(jiǎn)歷
2. 電話面試或筆試
3. 若干輪面試
4. “招聘小組”討論
5. “副總裁小組”最后復(fù)核
6. 發(fā)錄用通知,簽合同
篩選簡(jiǎn)歷似乎和其他公司沒(méi)有什么本質(zhì)的不同。我經(jīng)常會(huì)在內(nèi)部系統(tǒng)中收到招聘團(tuán)隊(duì)轉(zhuǎn)來(lái)的,要我?guī)兔匆豢床⒔o出建議的簡(jiǎn)歷。在國(guó)內(nèi),大多數(shù)人的簡(jiǎn)歷都會(huì)有中英文兩份。只要有中文簡(jiǎn)歷,我一般就只看中文內(nèi)容了。但許多從美國(guó)來(lái)的同事就會(huì)優(yōu)先看英文簡(jiǎn)歷。所以,投簡(jiǎn)歷時(shí)中英文簡(jiǎn)歷要盡量一致。
看應(yīng)屆畢業(yè)生的簡(jiǎn)歷和看有工作經(jīng)驗(yàn)的應(yīng)聘者的簡(jiǎn)歷是大不相同的。
對(duì)于前者,說(shuō)心里話,有區(qū)分度的信息通常不會(huì)很多,不外乎學(xué)習(xí)成績(jī)、論文或著述(如果有的話)、實(shí)踐項(xiàng)目(如果有的話)、競(jìng)賽成績(jī)(如果有的話)等少數(shù)幾項(xiàng),至于自己說(shuō)自己精通某某,熟悉某某,這個(gè)東西水分多少很難講,反正我一般是權(quán)當(dāng)參考的。所以,對(duì)應(yīng)屆畢業(yè)生更常見(jiàn)的做法是在學(xué);蚬九e行筆試,看筆試情況來(lái)決定誰(shuí)可以進(jìn)入下面的流程。
但對(duì)于有工作經(jīng)驗(yàn)的人,簡(jiǎn)歷就非常非常重要了,因?yàn)槟憧梢院苋菀椎乩酶鞣N信息,從兩份簡(jiǎn)歷中比較出應(yīng)聘者的實(shí)力差異(當(dāng)然不是絕對(duì)準(zhǔn)確的,因?yàn)檫要考慮某些人更善于包裝自己的因素)。在寫簡(jiǎn)歷的時(shí)候,大家其實(shí)可以設(shè)身處地地想一想,如果你在審閱一份這樣的簡(jiǎn)歷:應(yīng)聘者聲稱自己精通某某平臺(tái),某某技術(shù)或某某語(yǔ)言,但又舉不出足夠有說(shuō)服力的證據(jù);聲稱自己在前公司做過(guò)項(xiàng)目經(jīng)理、研發(fā)部經(jīng)理等關(guān)鍵職位,但又無(wú)法清楚地描述自己在關(guān)鍵職位上有什么樣的表現(xiàn);聲稱自己做過(guò)N多項(xiàng)目,但又舉不出一個(gè)有技術(shù)含量,或是可以體現(xiàn)自己價(jià)值的……你會(huì)給他或她進(jìn)入后續(xù)流程的機(jī)會(huì)嗎?
電話面試是一件很有趣也很容易惹來(lái)爭(zhēng)議的事情。至少我自己覺(jué)得,雖然電話面試可以省些時(shí)間,但的確比較難于全面了解一個(gè)人,不像面對(duì)面的面試那樣有現(xiàn)場(chǎng)感,也沒(méi)有直接交流時(shí)的各種便利——比如,可以從對(duì)方眼神、表情中發(fā)現(xiàn)他的許多特點(diǎn)。具體到技術(shù)面試上來(lái)說(shuō),電話面試讓對(duì)方寫代碼是比較難的,據(jù)我所知,有的面試官的確會(huì)讓對(duì)方寫一段簡(jiǎn)短的代碼,然后在電話中念出來(lái)。這個(gè)方法是不是真的有效,的確很難講。但同時(shí),我個(gè)人認(rèn)為,電話面試有一個(gè)最大的優(yōu)點(diǎn),就是可以更容易地考察對(duì)方的語(yǔ)言交流能力:因?yàn)殡娫捝系臏贤ú蝗缑鎸?duì)面那么方便,在電話面試中你可以很容易地看到對(duì)方是如何利用這個(gè)“有限信道”來(lái)向你傳遞信息的。能夠在電話面試中清楚、明白地展示自身優(yōu)勢(shì)的人,至少在語(yǔ)言交流方面都不會(huì)有什么問(wèn)題。——順便強(qiáng)調(diào)一下,交流和溝通能力對(duì)于現(xiàn)代軟件開(kāi)發(fā)來(lái)說(shuō),實(shí)在是太重要了。
筆試主要是在招聘應(yīng)屆畢業(yè)生或?qū)嵙?xí)生的時(shí)候使用,去年Google在好幾所高校都做過(guò)比較大規(guī)模的筆試。那些筆試題目中,有一小部分是我出的,所以了解一些情況。和有些公司強(qiáng)調(diào)思維靈活性的智力題不一樣,Google的筆試題最最重視的學(xué)生在CS 專業(yè)上的基本功和靈活運(yùn)用基礎(chǔ)知識(shí)解決問(wèn)題的能力。去年用在校園招聘的筆試題有許多套,大多都分為選擇題和編碼或算法題兩個(gè)部分。做過(guò)這些題目的同學(xué)應(yīng)該比較清楚:選擇題考察的不外是對(duì)CS基礎(chǔ)課、專業(yè)課的掌握情況,可能會(huì)涉及數(shù)學(xué)、邏輯、計(jì)算機(jī)原理、數(shù)據(jù)結(jié)構(gòu)、算法、編譯原理、操作系統(tǒng)等方面;而編碼或算法題考察的則是編程的基本功力(比如對(duì)語(yǔ)法要素的正確使用,代碼的可讀性等等)和靈活運(yùn)用算法知識(shí)解決具體問(wèn)題的能力(比如算法的選擇,算法的優(yōu)化程度等等)。
其實(shí),出筆試題是一件苦差事。要想得到邏輯上沒(méi)有漏洞,適于CS或相關(guān)專業(yè)的學(xué)生解答,易于上手,又有一定區(qū)分度的題目,實(shí)在是太難太難了。每套筆試題都要花費(fèi)工程師許多精力,出完了題目,還要更多工程師來(lái)把關(guān),看有沒(méi)有漏洞。即便如此,去年用在高校的筆試題里還是存在少數(shù)表達(dá)含混或者邏輯上有漏洞的情況——在提高筆試題質(zhì)量方面,我們還得繼續(xù)努力。
若干輪的現(xiàn)場(chǎng)面試是應(yīng)聘者必須經(jīng)歷的,最有挑戰(zhàn)性的,也最能影響面試結(jié)果的環(huán)節(jié)。Google對(duì)人才的要求向來(lái)都很高,這種要求也主要體現(xiàn)在現(xiàn)場(chǎng)面試的環(huán)節(jié)中。一個(gè)應(yīng)聘者在若干輪的現(xiàn)場(chǎng)面試中,可能要面對(duì)的是有不同技術(shù)背景或技術(shù)特長(zhǎng)的面試官,每個(gè)面試官所考察的重點(diǎn)也可能各有側(cè)重,每個(gè)面試官也都有自己喜歡的提問(wèn)方法和面試題目。達(dá)不到標(biāo)準(zhǔn)的人要想在Google的若干輪面試中“蒙混過(guò)關(guān)”,概率應(yīng)該是接近于零的吧。
許多人都想知道Google在面試中最看重的是應(yīng)聘者哪方面的能力。我記得在去年在校園宣講中曾反復(fù)強(qiáng)調(diào)過(guò):僅從專業(yè)角度上說(shuō),Google會(huì)要求一個(gè)應(yīng)聘者既具有扎實(shí)的CS基本功,也擁有靈活的思維方式和解決新問(wèn)題的能力。當(dāng)然,專業(yè)以外的東西,比如真誠(chéng)、坦率,比如交流能力,對(duì)職業(yè)的正確態(tài)度等等,有時(shí)比專業(yè)能力更重要。
因?yàn)槊總(gè)面試官有每個(gè)面試官的特點(diǎn),不大好介紹和評(píng)價(jià)其他同事的面試方法。我自己在面試時(shí),一般喜歡先考察一個(gè)偏重基本功的題目,然后再考察一個(gè)偏重思維靈活性的問(wèn)題。我還有一個(gè)傾向,可能也是某些應(yīng)聘者比較擔(dān)心的,就是邊聊邊問(wèn),根據(jù)應(yīng)聘者的自我介紹,提最有針對(duì)性的問(wèn)題。比方說(shuō),對(duì)方講,自己有五年的C語(yǔ)言編程經(jīng)驗(yàn),精通(老實(shí)說(shuō),面試多了,對(duì) “精通”這個(gè)詞就非常敏感,總覺(jué)得這個(gè)詞背后是有無(wú)數(shù)玄機(jī)的)C語(yǔ)言,那我多半就會(huì)立即考察一下對(duì)方對(duì)C語(yǔ)言指針或函數(shù)調(diào)用的掌握程度;如果對(duì)方說(shuō)自己精通的其實(shí)是JavaScript語(yǔ)言,那我自然會(huì)渴望知道,對(duì)方是不是真的清楚,JavaScript作為一種動(dòng)態(tài)語(yǔ)言或腳本語(yǔ)言有哪些與眾不同的語(yǔ)法特點(diǎn);如果對(duì)方說(shuō)自己對(duì)J2EE平臺(tái)和流行的框架非常熟悉,那我一般會(huì)先從最基本的面向?qū)ο笤O(shè)計(jì)以及最基本Java對(duì)象模型開(kāi)始問(wèn)起;如果對(duì)方說(shuō)自己有豐富的軟件設(shè)計(jì)經(jīng)驗(yàn),那我這里有好幾個(gè)并不一定真正存在的軟件需求,需要對(duì)方畫出系統(tǒng)架構(gòu)的設(shè)計(jì)圖來(lái)。
面試時(shí)現(xiàn)場(chǎng)寫代碼或現(xiàn)場(chǎng)設(shè)計(jì)算法幾乎是一定會(huì)發(fā)生的事情。拿我來(lái)說(shuō),對(duì)方寫代碼時(shí)直接敲在電腦上或是寫在紙上,選用什么樣的語(yǔ)言,或者使用什么樣的代碼風(fēng)格,其實(shí)都是無(wú)所謂的。我最最關(guān)心的是應(yīng)聘者對(duì)編程序這件再普通不過(guò)的事情的理解程度。一般說(shuō)來(lái),只要時(shí)間允許,我都會(huì)和應(yīng)聘者一起,逐行討論他剛寫出的代碼,比如函數(shù)接口設(shè)計(jì)是否合理,有沒(méi)有其他的設(shè)計(jì)方式,變量類型的選擇是否合適,代碼運(yùn)行時(shí)的時(shí)間或空間開(kāi)銷是否太大,代碼中兩個(gè)看上去相似的片段是否可以合并,等等等等。如果是現(xiàn)場(chǎng)設(shè)計(jì)算法,那我一般會(huì)要求對(duì)方在紙上用最直觀的圖示把他的算法思路表現(xiàn)出來(lái)——這多半是因?yàn)槲业哪X子比較慢,如果對(duì)方不能描述得非常清楚的話,我很難判斷他的答案究竟是不是正確。一般說(shuō)來(lái),Google經(jīng)常使用的面試題目都可以從不同的角度入手來(lái)解答,出色的應(yīng)聘者還經(jīng)常能想出面試官?gòu)奈匆?jiàn)過(guò),又完全正確的新答案來(lái)。所以,做面試官也要開(kāi)動(dòng)腦筋,判斷對(duì)方的答案哪一步正確,哪一步有問(wèn)題。幾場(chǎng)面試下來(lái),面試官也要消耗許多腦力和體力的。
面試結(jié)束后,面試官要寫面試報(bào)告,而且要用英文來(lái)寫。寫報(bào)告會(huì)占用不少時(shí)間,我自己的英文并不熟練,一個(gè)45分鐘左右的面試結(jié)束后,就多半要花20到30分鐘來(lái)寫報(bào)告。不過(guò)一年下來(lái),寫面試報(bào)告倒成了自己提高英文寫作能力的一個(gè)重要練習(xí)項(xiàng)目,也算是對(duì)付出的這許多時(shí)間的一種回報(bào)吧。
正如開(kāi)復(fù)在書中所介紹的那樣,所有面試報(bào)告都要送到“招聘小組”和“副總裁”小組評(píng)審。一個(gè)應(yīng)聘者是否能加入Google,就要看這兩次評(píng)審的結(jié)果了。
先大概介紹到這里吧,其他相關(guān)的感想以后再續(xù)。
谷歌面試經(jīng)驗(yàn)二:據(jù)說(shuō)面試的順序于17日筆試成績(jī)有關(guān),我今天下午才面,肯定是考的不咋地。
下午3點(diǎn)到了google,大廳的沙發(fā)上坐了幾個(gè)乖孩子,對(duì)著大屏幕看GoogleEarth。 不知道那東西有啥好看的。
于是偶跑去旁邊的電腦上google,搜搜算法,磨磨槍。 順便跑上來(lái)tk這里的面經(jīng)。
之后一起簽NDA,旁邊一個(gè)家伙居然簽在左下角google(甲方)的位置上。
第一輪開(kāi)始,面試官?zèng)]介紹自己,也不知道是誰(shuí)。 作了三道題。說(shuō)實(shí)話,有的題還是挺考編程功力的。 算法題俺沒(méi)編程序,也忘了分析復(fù)雜性了,就是說(shuō)了思路。 看前面的面經(jīng)說(shuō)坐了幾題錯(cuò)了幾題,不明白怎么會(huì)有做錯(cuò)的。 不知道是不是指最初的解法是錯(cuò)的。俺是在面試官提示了幾次之后給出的算法, 面試官說(shuō)對(duì)了,就開(kāi)始下一題了。
面試官問(wèn)我有什么問(wèn)題要問(wèn)時(shí),我說(shuō)想知道17號(hào)的筆試錯(cuò)了幾道題。 (選擇題我只記得錯(cuò)了一道,working set那題,蒙錯(cuò)了; 最后一道大題想太多了,做得不好)
面試官說(shuō)我的卷子上標(biāo)著錯(cuò)了倆選擇,但他翻了翻發(fā)現(xiàn)就錯(cuò)了一個(gè)。
第二輪比較慘,費(fèi)了半天勁,就做了一道題,時(shí)間就到了。然后就灰溜溜地出來(lái)了。
這些題,說(shuō)實(shí)話,用到的知識(shí)、想法都挺基本的。不能想得太難太復(fù)雜, 就當(dāng)平時(shí)的作業(yè)題來(lái)做的話,應(yīng)該就對(duì)路了。
不管這輪結(jié)果如何,算是個(gè)面試經(jīng)歷,寫在這兒, 作用相當(dāng)于“到此一游”。
谷歌面試經(jīng)驗(yàn)三:下午四點(diǎn)的面,等了一個(gè)小時(shí)…… 三樓某房,難道以前所有面試都在那?
Google面試官gg挺好的。
流程如下:
簡(jiǎn)單自我介紹,該gg此時(shí)看我簡(jiǎn)歷等,簡(jiǎn)單交流
三道題:
第一道,上來(lái)就理解錯(cuò)誤了,該gg反復(fù)提示、交流后,才找到方法 相信此時(shí),該gg已經(jīng)無(wú)語(yǔ)了。
收獲:面試時(shí)一定要多和面試官交流
第二道,沒(méi)有算法,考察細(xì)節(jié)的,我居然把時(shí)間都放在細(xì)枝末節(jié)處了……而真正應(yīng)該 注意的細(xì)節(jié)沒(méi)有考慮到,回來(lái)的路上想出來(lái)兩個(gè)沒(méi)有考慮到的。
第三道,筆試前大家在一起看網(wǎng)上搜到的30道g面試題,熱烈討論。太意外了,簡(jiǎn)直 是太意外了,居然真的問(wèn)到了,ft……但是我居然忘了怎么弄了,是真的忘了。從頭 想……苦思冥想后,依然沒(méi)有想到……感慨自己實(shí)在是太vk了……
最后,該gg讓我問(wèn)他,隨便問(wèn)。
結(jié)束
掛看來(lái)是必須的了,不過(guò),處男面還是積攢了很多經(jīng)驗(yàn),總之,這次沒(méi)有白來(lái)。 下次繼續(xù)努力。
谷歌面試經(jīng)驗(yàn)四:
一個(gè)月前面的google zurich,最后還是被無(wú)情的拒了,努力回憶一下面試過(guò)程,希望對(duì)大家有幫助。 歐洲讀完碩士,研究背景是AI。不算專門的校園招聘,雖然我剛畢業(yè)。
第一輪電話面試,蘇黎世的HR跟我事先約好時(shí)間,大概30分鐘,非技術(shù)面試,但是也很有針對(duì)性,先給我介紹了zurich在google整個(gè)歐洲的情況,和愛(ài)爾蘭的區(qū)別,基本zurich偏研究,hr說(shuō)甚至是PM,也要寫程序的,hoho. 然后根據(jù)我的簡(jiǎn)歷問(wèn)了些問(wèn)題,問(wèn)了我在國(guó)內(nèi)某研發(fā)中心的實(shí)習(xí)的相關(guān)信息,AI中課程的相關(guān)信息,對(duì)何種編程語(yǔ)言熟悉,為什么申請(qǐng)google.對(duì)google的了解程度,搜索技術(shù)方面的基本知識(shí),談的很順利。告訴我會(huì)有3輪電話面試,第一輪非技術(shù)面,然后2輪美國(guó)來(lái)的技術(shù)面,最后一輪onsite,到zurich;緯(huì)持續(xù)1個(gè)多月。
然后第二輪電話面試,直接美國(guó)打來(lái),因?yàn)槲沂茿I背景的,所以第一輪面試的HR就說(shuō)會(huì)幫我找個(gè)同樣背景的工程師來(lái)二面,結(jié)果是個(gè)女工程師,因該也是AI背景的。
基本上問(wèn)題比較基本,首先問(wèn)了我的thesis project, 我搞得是probabilistic relational model,算是bayesian network的一個(gè)extension,用這套理論來(lái)做BI里gene的clustering,她就讓我把我的project跟他解釋一下。 然后她問(wèn)我了AI里的哪些技術(shù)可以做classification, 我提到了決策樹(shù),ANN,SVM,Bayesian Approach等。 接下來(lái)她考得是具體編程的一些知識(shí),數(shù)據(jù)結(jié)構(gòu)方面的知識(shí),某兩種數(shù)據(jù)結(jié)構(gòu)的優(yōu)劣,具體哪兩個(gè)忘了,大概就是List,tree啥的,然后問(wèn)我如果有個(gè)字母組合,比如a,b,c等,如何產(chǎn)生所有的組合,這個(gè)比較簡(jiǎn)單,她讓我把基本的算法寫出來(lái)給她,我用了個(gè)遞歸,然后她又問(wèn)如何提高效率,比如有的組合肯定不是我們所想要的詞的話,該用何種方法來(lái)提高效率跳躍的靈魂好像還提了幾個(gè)問(wèn)題,想不起來(lái)了。
最后就問(wèn)我有什么問(wèn)題問(wèn)她,之前的面試我感覺(jué)都不錯(cuò),面試官也不時(shí)的說(shuō)cool,到了最后這里我就犯糊涂了,由于google搞得東西自己一直是非常感興趣的,之前列了很多的問(wèn)題,但是到最后變成我在告訴它google有哪些地方可以值得改進(jìn)的,給出了好多個(gè)可以改進(jìn)的地方,比如對(duì)搜索結(jié)果的clustering(有的搜索引擎也有這方面的功能),可以用topographic map的方法對(duì)搜索結(jié)果可視化,這樣相關(guān)的關(guān)鍵字或者搜索結(jié)果在整個(gè)圖上就會(huì)出現(xiàn)在鄰近區(qū)域,或者相同顏色的地方,然后可以用google earth那種不斷放大的方法,繼續(xù)對(duì)搜索結(jié)果進(jìn)行專業(yè)化,這種對(duì)搜索結(jié)果的exploring的方式應(yīng)該會(huì)很有趣。 總之類似這種得建議我提了好幾個(gè),然后到最后聽(tīng)出來(lái)面試官好像不太高興了,她可能覺(jué)得我懂得到不多,過(guò)于狂妄~~ 這個(gè)估計(jì)是整個(gè)面試的敗筆,還是經(jīng)驗(yàn)不足。所以大家提問(wèn)題的時(shí)候還是本本分分提幾個(gè)問(wèn)題比較好,別太張揚(yáng)。
然后大概過(guò)了2周就收到google的拒信了。
谷歌面試經(jīng)驗(yàn)五:周圍同學(xué)的一些Google 的電話面經(jīng):
1. 項(xiàng)目經(jīng)歷;
2. 你覺(jué)得哪個(gè)項(xiàng)目最富有挑戰(zhàn)性?你怎么解決那些問(wèn)題的?
3. struct 和 class 的區(qū)別
4. linux 下的一些基本命令
5. 引用和指針的區(qū)別,用法
6. 單向鏈表的刪除操作,已知 head,p(指向被刪除元素),要求復(fù)雜度為 O(1) (題目似有誤)
7. Google Destop Search 的一些技術(shù)法?后面的問(wèn)題更有一些深度:這個(gè)算法(他會(huì)給出一個(gè)正確的算法思路)有什么效率上的問(wèn)題,如何解決;如果這個(gè)算法經(jīng)常要被調(diào)用,如何設(shè)法使效率提高?
9. 對(duì)現(xiàn)在的 Stack(棧)數(shù)據(jù)結(jié)構(gòu)進(jìn)行改進(jìn),加一個(gè) min()功能,使之能在常數(shù),即 O(1),時(shí)間內(nèi)給出棧中的最小值。可對(duì) push()和 pop()函數(shù)進(jìn)行修改,但要求其時(shí)間復(fù)雜度都只能是 O(1)。
10. 用 C/C++編程如何確定所在的計(jì)算機(jī)上棧的增長(zhǎng)方式(是從高到低,還是從低到高)
11. 你要如何實(shí)現(xiàn)類似 Google 的拼寫檢查(即糾正用戶輸入關(guān)鍵字中的錯(cuò)誤單詞)?
12. 如果進(jìn)入 Google,讓你自由地選擇一個(gè)課題,你會(huì)做什么方面的?