美國(guó)亞馬遜公司面經(jīng)
美國(guó)亞馬遜公司面經(jīng)(一)
9月的時(shí)候校園招聘會(huì),被同學(xué)勸去了,投了一個(gè)local的投了一個(gè)Amazon,然后石沉大海。
11月看沒(méi)戲了,就找了local的一個(gè)朋友refer我,從2輪面試到簽合同一共就2周
BUT 3月的時(shí)候Amazon打電話通知我3天后去校園面試(我當(dāng)時(shí)已經(jīng)吐槽無(wú)力了)。本著到此一游的心情,打了一周pokemon(真的很好玩>.<)
兩個(gè)面試官都是美國(guó)人。各45分鐘
第一個(gè):Game circle的,問(wèn)了一個(gè)內(nèi)存相關(guān)的問(wèn)題,我用hash table+double linked list解決了,看起來(lái)老美很滿意。
第二個(gè):market place?的,問(wèn)了一個(gè)搜索,因?yàn)樘脹](méi)做了,開(kāi)始沒(méi)反應(yīng)過(guò)來(lái),做了recurision,其中有幾個(gè)bug,但是后來(lái)解決了
3天后意外的來(lái)offer...囧 一定是聊游戲太萬(wàn)能了。我的research,job都是聊游戲聊出來(lái)的
我覺(jué)得重點(diǎn)
1)聊天要能聊開(kāi),我和第一個(gè)老美聊了很久,因?yàn)樽约罕尘耙埠陀螒蛴嘘P(guān),就聊得很開(kāi)。
我看到我的題第一反應(yīng)是用一個(gè)ring,因?yàn)橹耙?jiàn)過(guò)這個(gè)問(wèn)題,一個(gè)開(kāi)源軟件是用ring解決的,但是我一說(shuō)ring老美很迷茫。所以我就和他說(shuō)我還想到了hashtable和list,他說(shuō)兩個(gè)都很好,都可以用。所以我決定用這個(gè)。即使是做題過(guò)程中,和面試官溝通也很重要。
解決問(wèn)題寫(xiě)了code之后還有不少時(shí)間,我就問(wèn)他工作時(shí)候dress code之類的事,然后吐槽隔壁IBM穿西裝面試的。
第二個(gè)老美玩我研究的那個(gè)游戲(<.<看頭像)。所以也聊得很開(kāi)心,但是他就嚴(yán)肅多了。
我寫(xiě)程序中間有3次bug,都是他提出來(lái),然后我解決的。當(dāng)時(shí)覺(jué)得完蛋了這肯定不能過(guò)。寫(xiě)完了之后他提出針對(duì)各種情況怎么優(yōu)化的問(wèn)題,我基本答出來(lái)了。
2)基本功還是很重要。其實(shí)東西都不難,尤其是有機(jī)會(huì)推薦大家做做ACM,Google code jam之類的,都很有意思。當(dāng)時(shí)做的時(shí)候完全是愛(ài)好,沒(méi)想到面試的時(shí)候會(huì)用到。
祝大家好運(yùn)!
美國(guó)亞馬遜公司面經(jīng)(二)
7.28號(hào)的onsite。一共4輪,下午2點(diǎn)到6點(diǎn)左右.
第一輪開(kāi)始,一中國(guó)小帥哥,一個(gè)洋人小帥哥shadow, 照例自我介紹開(kāi)始,巨緊張,一聽(tīng)他們是自我介紹就直接開(kāi)始放空...
然后就是behavior,差不多的問(wèn)題。接著上算法,給一個(gè)2d array,和兩個(gè)點(diǎn)的x,y,求以這兩個(gè)點(diǎn)為左上到右下的對(duì)角線的方塊區(qū)域內(nèi)所有elements的su。
然后優(yōu)化,給思路,想出的是hashmap存處理過(guò)的值和對(duì)角線坐標(biāo),得到肯定,然后討論其他solution,提示之后得到數(shù)組預(yù)處理,每個(gè)element存以0,0為起點(diǎn)到本點(diǎn)的區(qū)域的sum,要求寫(xiě)完整code。然后問(wèn)求中間一個(gè)方塊怎么求, 時(shí)間不夠沒(méi)要求寫(xiě)code。
然后又聊了一下之前的一個(gè)創(chuàng)業(yè)項(xiàng)目,發(fā)現(xiàn)超時(shí),結(jié)束。
總的來(lái)說(shuō)有點(diǎn)感覺(jué)和之前聽(tīng)說(shuō)的amazon的面試的畫(huà)風(fēng)不太一樣了,其實(shí)我預(yù)感是正確的。
第二輪,一個(gè)阿三小帥哥, 照例自我介紹,behavior,然后設(shè)計(jì)一個(gè)飛機(jī)場(chǎng)的locker系統(tǒng),大致等于停車場(chǎng),不過(guò)在說(shuō)到總的system部分儲(chǔ)存所有l(wèi)ocker的數(shù)據(jù)結(jié)構(gòu)的時(shí)候,討論了不久,關(guān)于怎么存,怎么找,怎么快速得到狀態(tài)。
然后詳細(xì)問(wèn)了我設(shè)計(jì)的一個(gè)dispatcher class, 問(wèn)算法,要求寫(xiě)出詳細(xì)的code,完整code,包括聲明開(kāi)始。
第三輪,又是雙人組合???!!! 一來(lái)還是自我介紹,behavior,然后開(kāi)始問(wèn)process和thread的定義概念...我答了一下,然后就開(kāi)始多線程的騷擾,可能4,5個(gè)問(wèn)題之后實(shí)在招架不住(多線程一直是弱項(xiàng),而且也沒(méi)想到考的那么概念性,全是定義式的題目),表示我對(duì)多線程的理解程度不深。然后結(jié)束多線程,正在醒腦準(zhǔn)備算法,然后他畫(huà)了一個(gè)amazon的browser商品購(gòu)買頁(yè)面,說(shuō)我們這有一個(gè)button是add to cart, 如果沒(méi)有庫(kù)存了就會(huì)變灰,你來(lái)設(shè)計(jì)整個(gè)構(gòu)架。詢問(wèn)需要設(shè)計(jì)到什么程度,比如只是browser前端到后端,在db center之前終止,還是需要包括db center實(shí)現(xiàn)完整的邏輯,還是把最后面的warehouse的physical的東西也要包含,答曰:全部...心里一萬(wàn)個(gè)草泥馬,然后大概畫(huà)了一個(gè)構(gòu)架,db center當(dāng)然要分布式,然后warehouse前到db中間設(shè)計(jì)一個(gè)moniter監(jiān)視產(chǎn)品變化,問(wèn)有什么缺陷,我說(shuō)當(dāng)然客戶這邊點(diǎn)購(gòu)買,但是warehouse已經(jīng)sold out但是還沒(méi)更新,肯定就不一致了,然后怎么優(yōu)化,兩端加預(yù)處理,保留一段狀態(tài)hold住,blabla一頓說(shuō),sharding啊,redundance啊,反正一頓亂說(shuō),提問(wèn)的時(shí)候我問(wèn)了,如果可以的話,你可以告訴我的設(shè)計(jì)有什么缺陷你可以給點(diǎn)思路我以后好學(xué)習(xí)嗎,答曰:我也不知道!!!!!!!
第四輪,正在洗刷大腦,準(zhǔn)備算法,給自己安慰反正第三輪已經(jīng)很慘了,不能更慘了,不行早點(diǎn)完事出去吃飯也算解脫了,來(lái)一個(gè)白小哥,說(shuō)我是這個(gè)team的manager,咱來(lái)設(shè)計(jì)一個(gè)交通燈系統(tǒng)吧...WTF,又設(shè)計(jì)設(shè)計(jì)設(shè)計(jì)設(shè)計(jì),畫(huà)風(fēng)完全不對(duì)啊...我再想我沒(méi)申請(qǐng)錯(cuò)職位吧。. 鐣欏?
然后優(yōu)化,如果每個(gè)路口有sensor可以知道load有多大,timer不一樣怎么設(shè)計(jì),然后又問(wèn),有很多個(gè)block,設(shè)計(jì)怎么讓一臺(tái)車通過(guò)所有的路口都是綠燈,然后還不爽,繼續(xù)問(wèn),我們?cè)趺磘est所有的case,終于結(jié)束。
其實(shí)總的來(lái)說(shuō),我很享受這次面試,真的非常有挑戰(zhàn)性,而且面試官也都很有想法,思想碰撞和腦海中的思路突然的火花感覺(jué)很爽,完全忘記什么面經(jīng),lc,cc150,其實(shí)就是一個(gè)完整的自己去挑戰(zhàn)。當(dāng)然除了第三輪,感覺(jué)不是很好。
結(jié)束之后,自己有了非常大的信心,原來(lái)自己已經(jīng)可以handle住非常多的場(chǎng)面了,臨場(chǎng)的思路也很好,有一種融會(huì)貫通的感覺(jué),有自信去挑戰(zhàn)其他更高難度的公司了~。當(dāng)然還是除了第三輪(不過(guò)那是知識(shí)結(jié)構(gòu)的缺失,我覺(jué)得不冤)
發(fā)了長(zhǎng)面經(jīng),而且也應(yīng)該是我整個(gè)人生中發(fā)過(guò)最長(zhǎng)的帖子了,還是求攢人品,求offer,希望不會(huì)死在第三輪上~~也希望能夠幫助到需要的人。
美國(guó)亞馬遜公司面經(jīng)(三)
簡(jiǎn)單說(shuō)下背景,EE MS,半路出家補(bǔ)的CS,兩年小公司經(jīng)驗(yàn)。
我先是找在亞麻工作的朋友refer,電面2輪,掛。然后自己換了個(gè)郵箱,新建了一個(gè)檔案,繼續(xù)在亞馬遜網(wǎng)站上投,大約投了一周左右有recruiter聯(lián)系我安排電面。
所以最近掛掉的同學(xué)可以繼續(xù)投,每天抽幾分鐘時(shí)間,反正就是點(diǎn)幾下鼠標(biāo),亞馬遜也不像高通那樣會(huì)限制你投的職位數(shù)量,不見(jiàn)得有什么六個(gè)月的冷凍期。
這一次是電面2輪,然后是onsite。
所以近期一共經(jīng)歷了4輪電面,1次onsite。
電面1:
口音很好的`阿三,問(wèn)了一下基本的數(shù)據(jù)結(jié)構(gòu)知識(shí),3道coding題,都很常規(guī)
逆轉(zhuǎn)鏈表
驗(yàn)證一個(gè)二叉樹(shù)是BST
Two Sum。follow up:如果有重復(fù)的數(shù)字怎么辦。
電面2
老美,因?yàn)槲液?jiǎn)歷上的最近的project和他現(xiàn)在在做的用的是同一種模型,聊簡(jiǎn)歷就聊了半小時(shí)coding題:
矩陣乘法。我特別痛恨線性代數(shù),當(dāng)時(shí)想不起來(lái)怎么做矩陣乘法了,連手算都不會(huì),別說(shuō)coding了。跟他解釋了一下。他說(shuō)我給你換一題。
Design classes to represent abstract syntax tree for simple arthitmatic language supporting '+', '-', '' Operations +,-, Example: 1 + (2 * 3) 我這種靠刷題半路出家的沒(méi)搞明白題目意思,后來(lái)問(wèn)了一些CS同學(xué)才知道。于是跟面試官說(shuō)我不懂意思,面試官說(shuō)我給你換一題。
反轉(zhuǎn)字符串。他大概是沒(méi)想到我這么菜,兩道題都不明白意思,隨便出的,那必須一分鐘寫(xiě)好了。接著問(wèn),你會(huì)用什么方法來(lái)存儲(chǔ)一個(gè)矩陣。follow up,如果這個(gè)矩陣大多數(shù)元素都是0或者1,怎么改進(jìn)?
過(guò)了兩天收到了拒信。自己接著網(wǎng)投,大約一兩周又收到了recruiter安排電面的信。
電面3
重口音阿三
Two Sum
Symmetric tree。面試官只讓描述了一下算法,沒(méi)寫(xiě)code。
OOD題,設(shè)計(jì)停車場(chǎng)。
Copy list with random pointer。
這是次奇葩的面試,我約在周五下午下班時(shí)間(本人在東部)。一共面了2小時(shí)。第三題做完的時(shí)候已經(jīng)過(guò)了一小時(shí)。第四題是leetcode新題,當(dāng)時(shí)我還沒(méi)在leetcode上做到,肚子餓扁了,精神無(wú)法集中,心情已經(jīng)煩躁了。寫(xiě)完以后,面試官總是問(wèn),有bug嗎,我懶得看,就說(shuō)沒(méi)了。然后他指出來(lái),我改。這樣來(lái)往了大概三次。聽(tīng)面試官口氣也比較不耐煩,我也不耐煩,以為掛了。結(jié)果過(guò)了幾天收到郵件居然過(guò)了。
電面4
重口音阿三
swap nodes in pairs
OOD題,設(shè)計(jì)在線訂披薩里的披薩。有各種大小的披薩,披薩可以有各種topping,同一種topping也可以同時(shí)上好幾個(gè),比如double cheese。寫(xiě)披薩的數(shù)據(jù)結(jié)構(gòu),然后寫(xiě)個(gè)函數(shù)計(jì)算披薩價(jià)格。
昂賽(onsite)
第一輪
隔壁組的阿三,一大堆leadership問(wèn)題,大約20分鐘吧。OOD設(shè)計(jì)自動(dòng)售貨機(jī)。
第二輪
電面4的阿三,組長(zhǎng),更多的leadership問(wèn)題,幾乎整個(gè)面試就是問(wèn)這些。最后問(wèn)了一點(diǎn)簡(jiǎn)歷上的東西。什么是大數(shù)據(jù),讓我講了講我現(xiàn)在項(xiàng)目中的ML模型。
第三輪
組員,一個(gè)穿著類似傳教士衣服的老美,非常干凈的光頭,眼神深邃,看起來(lái)像外星人。我每次一說(shuō)話他就開(kāi)始微笑點(diǎn)頭,用意是鼓勵(lì)我,但我覺(jué)得很不爽,不管我說(shuō)什么他都點(diǎn)頭的感覺(jué)我就不想說(shuō)仔細(xì)了。邊上一個(gè)老美shadow。大約15分鐘的leadership問(wèn)題。拿出一張紙,一個(gè)打印好的問(wèn)題。題目很長(zhǎng),讀題加上問(wèn)面試官搞明白題目意思大概就用了5分鐘。大意是,code提交系統(tǒng)里,同一個(gè)代碼文檔,有很多個(gè)revision。不同的revision之間,有刪行,增行,以及修改行。一個(gè)程序員可能打開(kāi)了這個(gè)文件中第100個(gè)revision,屏幕限制只能同時(shí)顯示50行代碼,在看共5000行代碼中的第1000到1050行。設(shè)計(jì)一個(gè)算法和數(shù)據(jù)結(jié)構(gòu)使得這個(gè)程序員在不同的revision之間跳躍的時(shí)候,他屏幕上顯示的第一行總是對(duì)齊。這道題答得很爛。follow up,你會(huì)使用什么web技術(shù)來(lái)implement這個(gè)東西,使得其可用。我完全沒(méi)有front end的經(jīng)驗(yàn)。這個(gè)面試官死得很慘。之后他和shadow帶著吃午飯,pizza味道還不錯(cuò)。
第四輪
待了8年的白女。leadership問(wèn)題,大約15分鐘。coding題,設(shè)計(jì)一個(gè)類,追蹤一個(gè)數(shù)字stream,要求實(shí)現(xiàn)兩個(gè)函數(shù)。一是返回中值,而是增加數(shù)字到這個(gè)數(shù)組當(dāng)中并更新中值。
第五輪
電面3的阿三,邊上一個(gè)老美shadow。算是OOD題吧,設(shè)計(jì)整個(gè)亞馬遜的物品、倉(cāng)庫(kù)、卡車互動(dòng)系統(tǒng)。倉(cāng)庫(kù)遍布美國(guó),卡車有油量,倉(cāng)庫(kù)之間有些有路徑有些沒(méi)有。我搞了幾個(gè)類,包括物品、倉(cāng)庫(kù)、卡車。要求實(shí)現(xiàn)一些功能諸如,從倉(cāng)庫(kù)A把一定的物品分給倉(cāng)庫(kù)B,分派卡車,裝貨、卸貨函數(shù)。
總結(jié):
我其實(shí)比較喜歡阿三做面試官。原因是阿三的題目都比較常規(guī),很多時(shí)候都是leetcode原題。雖然未必簡(jiǎn)單,但這個(gè)對(duì)于非CS科班出身的人來(lái)說(shuō)可以靠刷題解決。我一共算是9輪面試,其中3個(gè)老美,有2個(gè)的題目都不太常規(guī),對(duì)于我這種底子不牢的,很容易就暴露了。
6個(gè)月冷凍期的說(shuō)法不必太當(dāng)真,繼續(xù)網(wǎng)投,反正點(diǎn)幾下鼠標(biāo)不費(fèi)力氣。
要做好電面約了1小時(shí),實(shí)際面2小時(shí)的心理準(zhǔn)備。我當(dāng)時(shí)有點(diǎn)小崩潰。
整體來(lái)講,昂賽有大約1/3時(shí)間是在考察leadership,一定要好好準(zhǔn)備,這次我是完全沒(méi)準(zhǔn)備過(guò)(沒(méi)有工作經(jīng)驗(yàn)的應(yīng)屆生可以無(wú)視這條)。提供一下這方面的題目面經(jīng):
你有沒(méi)有遇到過(guò)deadline來(lái)不及的情況,你怎么解決的。
你發(fā)現(xiàn)你組里一個(gè)組員的任務(wù)實(shí)際上來(lái)不及趕上deadline了,你懂他負(fù)責(zé)的這塊,他可能沒(méi)有你懂,卻以為來(lái)得及。你們的老板不清楚情況,你該怎么做。
你想用A方法來(lái)實(shí)現(xiàn)你負(fù)責(zé)的這塊任務(wù),你老板讓你用B方法,但你覺(jué)得其實(shí)A方法更好,你怎么辦。
你遇到一個(gè)問(wèn)題,有方案A和方案B,必須選一個(gè)。它們互有利弊。你時(shí)間有限,無(wú)法花太多時(shí)間考慮,你應(yīng)該怎么做。 諸如此類的還有不少,不記得了。
想起來(lái)一些manager問(wèn)的問(wèn)題。列舉你最近6個(gè)月看過(guò)的技術(shù)方面的書(shū)。你常看的技術(shù)blog,常去的討論技術(shù)的網(wǎng)站。
感覺(jué)A家的電面靠刷題基本就足夠了,F(xiàn)在都是用在線文檔共享的方法,不像以前要把代碼口述給面試官。所以電面基本已經(jīng)可以考察出候選人是不是會(huì)編程。反倒是到了昂賽,有不少非純coding的題,不是靠刷題能解決的。我最后一次電面結(jié)束的時(shí)候,面試官告訴我我過(guò)了,我就開(kāi)始專心刷leetcode,也不多,差不多刷了一半。cc150也過(guò)了一遍。結(jié)果好像在昂賽完全沒(méi)有用。這次昂賽給我的感覺(jué)是,亞麻好像開(kāi)始注重一個(gè)人的綜合素質(zhì),不靠做題作為唯一標(biāo)準(zhǔn)了。這和我一直以來(lái)道聽(tīng)途說(shuō)的不太一樣了。
美國(guó)亞馬遜公司面經(jīng)(四)
1月29日美國(guó)東部時(shí)間18:00準(zhǔn)時(shí)來(lái)電話。一開(kāi)始就讓我做自我介紹,把之前本科做的畢業(yè)設(shè)計(jì)詳細(xì)的介紹了一下,然后問(wèn)我在做這個(gè)項(xiàng)目的時(shí)候最具挑戰(zhàn)性的是哪部分,說(shuō)完之后進(jìn)入code部分。
算法考得很簡(jiǎn)單,總共兩道題:
第一題:
You are given a string of length n which contains only letters from the English alphabet (a-z,A-Z).
Compress it by replacing consecutive repeated characters by one instance of the character and an integer
denoting the number of repetitions. If there is no repetition of the character, leave it as it is.
For example the string "aaaaabbbbbbbbbccccdeeeeeee" should be reduced to "a5b9c4de7".
As you may observe, the letter 'd' is not repeated, so no number is displayed after it.
Input Format:
There will be one line of input.
String of length n
Output Format:
Print the compressed string.
. visit 1point3acres.com for more.
Sample Input #00:
aaaaabbbbbbbbbccccpqrstuv
Sample Output #00:
a5b9c4pqrstuv.
in:
aaabbbaaaD
out:
a3b3a3D
第二題:
you have a list of words, some are duplicated. return a list containing the words for which there is an ODD number of occurances.
sample input:
joe
mary
joe
steve
kalpesh
isaiah
steve
steve
isaiah
john
hello
should return: steve, john, hello, mary
第一題寫(xiě)了code,第二題沒(méi)有要求,只讓把思路詳細(xì)的說(shuō)了一遍(當(dāng)然復(fù)雜度什么的肯定各種問(wèn))。
第三部分問(wèn)了map是如何實(shí)現(xiàn)的,和hashmap 有什么區(qū)別,還問(wèn)了tree map(但是我并不清楚什么是tree map,胡亂的說(shuō)了一下)。最后他還問(wèn)了哪里要用tree,哪里要用hashmap,用tree的必要性是什么。
最后感覺(jué)他問(wèn)的問(wèn)題基本都答上來(lái)了,就是最后tree map把我弄的很亂。 希望面試能過(guò)吧,求offer
【美國(guó)亞馬遜公司面經(jīng)】相關(guān)文章:
碧桂園2017面經(jīng)01-29
美國(guó)面簽技巧06-26
中信銀行天津分行面經(jīng)01-27
cvte銷售工程師面經(jīng)01-29
美國(guó)留學(xué)面簽流程解析06-29
美國(guó)簽證面簽技巧10-24
招商銀行武漢分行面經(jīng)01-28