美国亚马逊公司面经

时间:2018-01-27 面试技巧经验 我要投稿

美国亚马逊公司面经
  美国亚马逊公司面经(一)

  9月的时候校园招聘会,被同学劝去了,投了一个local的投了一个Amazon,然后石沉大海。

  11月看没戏了,就找了local的一个朋友refer我,从2轮面试到签合同一共就2周

  BUT 3月的时候Amazon打电话通知我3天后去校园面试(我当时已经吐槽无力了)。本着到此一游的心情,打了一周pokemon(真的很好玩>.<)

  两个面试官都是美国人。各45分钟

  第一个:Game circle的,问了一个内存相关的问题,我用hash table+double linked list解决了,看起来老美很满意。

  第二个:market place?的,问了一个搜索,因为太久没做了,开始没反应过来,做了recurision,其中有几个bug,但是后来解决了

  3天后意外的来offer...囧 一定是聊游戏太万能了。我的research,job都是聊游戏聊出来的

  我觉得重点

  1)聊天要能聊开,我和第一个老美聊了很久,因为自己背景也和游戏有关,就聊得很开。

  我看到我的题第一反应是用一个ring,因为之前见过这个问题,一个开源软件是用ring解决的,但是我一说ring老美很迷茫。所以我就和他说我还想到了hashtable和list,他说两个都很好,都可以用。所以我决定用这个。即使是做题过程中,和面试官沟通也很重要。

  解决问题写了code之后还有不少时间,我就问他工作时候dress code之类的事,然后吐槽隔壁IBM穿西装面试的。

  第二个老美玩我研究的那个游戏(<.<看头像)。所以也聊得很开心,但是他就严肃多了。

  我写程序中间有3次bug,都是他提出来,然后我解决的。当时觉得完蛋了这肯定不能过。写完了之后他提出针对各种情况怎么优化的问题,我基本答出来了。

  2)基本功还是很重要。其实东西都不难,尤其是有机会推荐大家做做ACM,Google code jam之类的,都很有意思。当时做的时候完全是爱好,没想到面试的时候会用到。

  祝大家好运!

  美国亚马逊公司面经(二)

  7.28号的onsite。一共4轮,下午2点到6点左右.

  第一轮开始,一中国小帅哥,一个洋人小帅哥shadow, 照例自我介绍开始,巨紧张,一听他们是自我介绍就直接开始放空...

  然后就是behavior,差不多的问题。接着上算法,给一个2d array,和两个点的x,y,求以这两个点为左上到右下的对角线的方块区域内所有elements的su。

  然后优化,给思路,想出的是hashmap存处理过的值和对角线坐标,得到肯定,然后讨论其他solution,提示之后得到数组预处理,每个element存以0,0为起点到本点的区域的sum,要求写完整code。然后问求中间一个方块怎么求, 时间不够没要求写code。

  然后又聊了一下之前的一个创业项目,发现超时,结束。

  总的来说有点感觉和之前听说的amazon的面试的画风不太一样了,其实我预感是正确的。

  第二轮,一个阿三小帅哥, 照例自我介绍,behavior,然后设计一个飞机场的locker系统,大致等于停车场,不过在说到总的system部分储存所有locker的数据结构的时候,讨论了不久,关于怎么存,怎么找,怎么快速得到状态。

  然后详细问了我设计的一个dispatcher class, 问算法,要求写出详细的code,完整code,包括声明开始。

  第三轮,又是双人组合???!!! 一来还是自我介绍,behavior,然后开始问process和thread的定义概念...我答了一下,然后就开始多线程的骚扰,可能4,5个问题之后实在招架不住(多线程一直是弱项,而且也没想到考的那么概念性,全是定义式的题目),表示我对多线程的理解程度不深。然后结束多线程,正在醒脑准备算法,然后他画了一个amazon的browser商品购买页面,说我们这有一个button是add to cart, 如果没有库存了就会变灰,你来设计整个构架。询问需要设计到什么程度,比如只是browser前端到后端,在db center之前终止,还是需要包括db center实现完整的逻辑,还是把最后面的warehouse的physical的东西也要包含,答曰:全部...心里一万个草泥马,然后大概画了一个构架,db center当然要分布式,然后warehouse前到db中间设计一个moniter监视产品变化,问有什么缺陷,我说当然客户这边点购买,但是warehouse已经sold out但是还没更新,肯定就不一致了,然后怎么优化,两端加预处理,保留一段状态hold住,blabla一顿说,sharding啊,redundance啊,反正一顿乱说,提问的时候我问了,如果可以的话,你可以告诉我的设计有什么缺陷你可以给点思路我以后好学习吗,答曰:我也不知道!!!!!!!

  第四轮,正在洗刷大脑,准备算法,给自己安慰反正第三轮已经很惨了,不能更惨了,不行早点完事出去吃饭也算解脱了,来一个白小哥,说我是这个team的manager,咱来设计一个交通灯系统吧...WTF,又设计设计设计设计,画风完全不对啊...我再想我没申请错职位吧。. 鐣欏?

  然后优化,如果每个路口有sensor可以知道load有多大,timer不一样怎么设计,然后又问,有很多个block,设计怎么让一台车通过所有的路口都是绿灯,然后还不爽,继续问,我们怎么test所有的case,终于结束。

  其实总的来说,我很享受这次面试,真的非常有挑战性,而且面试官也都很有想法,思想碰撞和脑海中的思路突然的火花感觉很爽,完全忘记什么面经,lc,cc150,其实就是一个完整的自己去挑战。当然除了第三轮,感觉不是很好。

  结束之后,自己有了非常大的信心,原来自己已经可以handle住非常多的场面了,临场的思路也很好,有一种融会贯通的感觉,有自信去挑战其他更高难度的公司了~。当然还是除了第三轮(不过那是知识结构的缺失,我觉得不冤)

  发了长面经,而且也应该是我整个人生中发过最长的帖子了,还是求攒人品,求offer,希望不会死在第三轮上~~也希望能够帮助到需要的人。

  美国亚马逊公司面经(三)

  简单说下背景,EE MS,半路出家补的CS,两年小公司经验

  我先是找在亚麻工作的朋友refer,电面2轮,挂。然后自己换了个邮箱,新建了一个档案,继续在亚马逊网站上投,大约投了一周左右有recruiter联系我安排电面。

  所以最近挂掉的同学可以继续投,每天抽几分钟时间,反正就是点几下鼠标,亚马逊也不像高通那样会限制你投的职位数量,不见得有什么六个月的冷冻期。

  这一次是电面2轮,然后是onsite。

  所以近期一共经历了4轮电面,1次onsite。

  电面1:

  口音很好的阿三,问了一下基本的数据结构知识,3道coding题,都很常规

  逆转链表

  验证一个二叉树是BST

  Two Sum。follow up:如果有重复的数字怎么办。

  电面2

  老美,因为我简历上的最近的project和他现在在做的用的是同一种模型,聊简历就聊了半小时coding题:

  矩阵乘法。我特别痛恨线性代数,当时想不起来怎么做矩阵乘法了,连手算都不会,别说coding了。跟他解释了一下。他说我给你换一题。

  Design classes to represent abstract syntax tree for simple arthitmatic language supporting '+', '-', '' Operations +,-, Example: 1 + (2 * 3) 我这种靠刷题半路出家的没搞明白题目意思,后来问了一些CS同学才知道。于是跟面试官说我不懂意思,面试官说我给你换一题。

  反转字符串。他大概是没想到我这么菜,两道题都不明白意思,随便出的,那必须一分钟写好了。接着问,你会用什么方法来存储一个矩阵。follow up,如果这个矩阵大多数元素都是0或者1,怎么改进?

  过了两天收到了拒信。自己接着网投,大约一两周又收到了recruiter安排电面的信。

  电面3

  重口音阿三

  Two Sum

  Symmetric tree。面试官只让描述了一下算法,没写code。

  OOD题,设计停车场。

  Copy list with random pointer。

  这是次奇葩的面试,我约在周五下午下班时间(本人在东部)。一共面了2小时。第三题做完的时候已经过了一小时。第四题是leetcode新题,当时我还没在leetcode上做到,肚子饿扁了,精神无法集中,心情已经烦躁了。写完以后,面试官总是问,有bug吗,我懒得看,就说没了。然后他指出来,我改。这样来往了大概三次。听面试官口气也比较不耐烦,我也不耐烦,以为挂了。结果过了几天收到邮件居然过了。

  电面4

  重口音阿三

  swap nodes in pairs

  OOD题,设计在线订披萨里的披萨。有各种大小的披萨,披萨可以有各种topping,同一种topping也可以同时上好几个,比如double cheese。写披萨的数据结构,然后写个函数计算披萨价格。

  昂赛(onsite)

  第一轮

  隔壁组的阿三,一大堆leadership问题,大约20分钟吧。OOD设计自动售货机。

  第二轮

  电面4的阿三,组长,更多的leadership问题,几乎整个面试就是问这些。最后问了一点简历上的东西。什么是大数据,让我讲了讲我现在项目中的ML模型。

  第三轮

  组员,一个穿着类似传教士衣服的老美,非常干净的光头,眼神深邃,看起来像外星人。我每次一说话他就开始微笑点头,用意是鼓励我,但我觉得很不爽,不管我说什么他都点头的感觉我就不想说仔细了。边上一个老美shadow。大约15分钟的leadership问题。拿出一张纸,一个打印好的问题。题目很长,读题加上问面试官搞明白题目意思大概就用了5分钟。大意是,code提交系统里,同一个代码文档,有很多个revision。不同的revision之间,有删行,增行,以及修改行。一个程序员可能打开了这个文件中第100个revision,屏幕限制只能同时显示50行代码,在看共5000行代码中的第1000到1050行。设计一个算法和数据结构使得这个程序员在不同的revision之间跳跃的时候,他屏幕上显示的第一行总是对齐。这道题答得很烂。follow up,你会使用什么web技术来implement这个东西,使得其可用。我完全没有front end的经验。这个面试官死得很惨。之后他和shadow带着吃午饭,pizza味道还不错。

  第四轮

  待了8年的白女。leadership问题,大约15分钟。coding题,设计一个类,追踪一个数字stream,要求实现两个函数。一是返回中值,而是增加数字到这个数组当中并更新中值。

  第五轮

  电面3的阿三,边上一个老美shadow。算是OOD题吧,设计整个亚马逊的物品、仓库、卡车互动系统。仓库遍布美国,卡车有油量,仓库之间有些有路径有些没有。我搞了几个类,包括物品、仓库、卡车。要求实现一些功能诸如,从仓库A把一定的物品分给仓库B,分派卡车,装货、卸货函数。

  总结

  我其实比较喜欢阿三做面试官。原因是阿三的题目都比较常规,很多时候都是leetcode原题。虽然未必简单,但这个对于非CS科班出身的人来说可以靠刷题解决。我一共算是9轮面试,其中3个老美,有2个的题目都不太常规,对于我这种底子不牢的,很容易就暴露了。

  6个月冷冻期的说法不必太当真,继续网投,反正点几下鼠标不费力气。

  要做好电面约了1小时,实际面2小时的心理准备。我当时有点小崩溃。

  整体来讲,昂赛有大约1/3时间是在考察leadership,一定要好好准备,这次我是完全没准备过(没有工作经验的应届生可以无视这条)。提供一下这方面的题目面经:

  你有没有遇到过deadline来不及的情况,你怎么解决的。

  你发现你组里一个组员的任务实际上来不及赶上deadline了,你懂他负责的这块,他可能没有你懂,却以为来得及。你们的老板不清楚情况,你该怎么做。

  你想用A方法来实现你负责的这块任务,你老板让你用B方法,但你觉得其实A方法更好,你怎么办。

  你遇到一个问题,有方案A和方案B,必须选一个。它们互有利弊。你时间有限,无法花太多时间考虑,你应该怎么做。 诸如此类的还有不少,不记得了。

  想起来一些manager问的问题。列举你最近6个月看过的技术方面的书。你常看的技术blog,常去的讨论技术的网站。

  感觉A家的电面靠刷题基本就足够了。现在都是用在线文档共享的方法,不像以前要把代码口述给面试官。所以电面基本已经可以考察出候选人是不是会编程。反倒是到了昂赛,有不少非纯coding的题,不是靠刷题能解决的。我最后一次电面结束的时候,面试官告诉我我过了,我就开始专心刷leetcode,也不多,差不多刷了一半。cc150也过了一遍。结果好像在昂赛完全没有用。这次昂赛给我的感觉是,亚麻好像开始注重一个人的综合素质,不靠做题作为唯一标准了。这和我一直以来道听途说的不太一样了。

  美国亚马逊公司面经(四)

  1月29日美国东部时间18:00准时来电话。一开始就让我做自我介绍,把之前本科做的毕业设计详细的介绍了一下,然后问我在做这个项目的时候最具挑战性的是哪部分,说完之后进入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,第二题没有要求,只让把思路详细的说了一遍(当然复杂度什么的肯定各种问)。

  第三部分问了map是如何实现的,和hashmap 有什么区别,还问了tree map(但是我并不清楚什么是tree map,胡乱的说了一下)。最后他还问了哪里要用tree,哪里要用hashmap,用tree的必要性是什么。

  最后感觉他问的问题基本都答上来了,就是最后tree map把我弄的很乱。 希望面试能过吧,求offer

相关文章