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