Friday, December 4, 2015

Amazon Interview



https://www.amazon.jobs/principles

Customer Obsession

Leaders start with the customer and work backwards. They work vigorously to earn and keep customer trust. Although leaders pay attention to competitors, they obsess over customers.
Ownership
Leaders are owners. They think long term and don’t sacrifice long-term value for short-term results. They act on behalf of the entire company, beyond just their own team. They never say “that’s not my job".
Invent and Simplify
Leaders expect and require innovation and invention from their teams and always find ways to simplify. They are externally aware, look for new ideas from everywhere, and are not limited by “not invented here". As we do new things, we accept that we may be misunderstood for long periods of time.
Are Right, A Lot
Leaders are right a lot. They have strong judgment and good instincts. They seek diverse perspectives and work to disconfirm their beliefs.
Learn and Be Curious
Leaders are never done learning and always seek to improve themselves. They are curious about new possibilities and act to explore them.
Hire and Develop the Best
Leaders raise the performance bar with every hire and promotion. They recognize exceptional talent, and willingly move them throughout the organization. Leaders develop leaders and take seriously their role in coaching others. We work on behalf of our people to invent mechanisms for development like Career Choice.
Insist on the Highest Standards
Leaders have relentlessly high standards - many people may think these standards are unreasonably high. Leaders are continually raising the bar and driving their teams to deliver high quality products, services and processes. Leaders ensure that defects do not get sent down the line and that problems are fixed so they stay fixed.
Think Big
Thinking small is a self-fulfilling prophecy. Leaders create and communicate a bold direction that inspires results. They think differently and look around corners for ways to serve customers.
Bias for Action
Speed matters in business. Many decisions and actions are reversible and do not need extensive study. We value calculated risk taking. 
Frugality
Accomplish more with less. Constraints breed resourcefulness, self-sufficiency and invention. There are no extra points for growing headcount, budget size or fixed expense.
Earn Trust
Leaders listen attentively, speak candidly, and treat others respectfully. They are vocally self-critical, even when doing so is awkward or embarrassing. Leaders do not believe their or their team’s body odor smells of perfume. They benchmark themselves and their teams against the best.
Dive Deep
Leaders operate at all levels, stay connected to the details, audit frequently, and are skeptical when metrics and anecdote differ. No task is beneath them.
Have Backbone; Disagree and Commit
Leaders are obligated to respectfully challenge decisions when they disagree, even when doing so is uncomfortable or exhausting. Leaders have conviction and are tenacious. They do not compromise for the sake of social cohesion. Once a decision is determined, they commit wholly.
Deliver Results
Leaders focus on the key inputs for their business and deliver them with the right quality and in a timely fashion. Despite setbacks, they rise to the occasion and never settle
http://www.mitbbs.com/article_t/JobHunting/32682727.html
Amazon onsite归来,真心求Bless
先说下现在Amazon的group interview。 现在一个组3个人,随机挑选,保证不同校。

早上一定要吃!!
800campus,带着游览了一圈
早上8点到亚马逊,酒店离得非常近,步行10分钟以内,酒店提供免费早餐,建议吃饱一些。
8点15准时,HR领大家进一个面试的大房间,组已经是提前分好,找到自己的名字,认识一下自己的team. 我的这组,一个印度男生,一个白人,看上去年纪比一般的应届生大一些。
这时候你还可以吃点他们提供的点心咖啡,然后HR开始介绍亚马逊企业文化,面试流程,已经西雅图如何美好。
900分大组带到不同的roomroom里有很多桌子和电脑,三个人一桌,每人一台电脑
,电脑装有windowslinux ubuntu,然后开始宣讲,…… 并介绍面试官(官介自己的候尽量住他是哪个的,因把你叫出去谈话候很快就讨论问题了,剩下挺多时间你如果没问题就回去了,这时候你可以多问问们组最近的
)(一个房间里应该有3个面试官,当天只有2个三哥面试官)
桌子上发了一份时间表,这个一定要重点看,安排好今天的计划。小组讨论什么的并不是必须的,大概说一下理解,分一下任务就ok。如果你觉得你准备好了,你就可以开始敲你的代码了,不用别管别的组有没有在讨论。时间很重要!重要的事情强调三遍,时间、时间、时间!

大概9点多开始发题,然后就看题,小组讨论一下,定好自己想做的部份,并且从他们的一个folder把整个project的zip file 下载下来。
C++,python, Java的skeleton code 都在这个folder里,根据自己的选择的IDE,导入project。我用的是Eclipse+Java. Folder里面还有一个README, 手把手教你怎么把project import。
我拿到的问题是一个多目标带权值的优化问题。HR一上来就说了,你们不用奢望一天把这个问题做完,这种想法太可笑。你们可以先实现一个Trivial的想法,然后逐步优化。
一组人拿到的项目是一样的,这个项目已经被分为3个非常独立的部分,有独立的输入,输出和测试用例。所以经过讨论之后,组员各自选择其中的一个部分自己实现。(group interview考察的实现,都是用最简单暴力的算法,一定要快速的实现, code能跑能出结果。快速优化,然后把思路跟两个面试官讲清楚。在过程中,经常关注自己组员的进展,体现leadership
)
从10:30讨论完开始码,我码到13:00左右,写出来一个3,4百行的简单的实现,也跑通了测试。写到4:30,HR会让大家整理自己的代码,提交上去。我从13:00写完基本的算法之后一直想办法优化,可无奈一开始设计的数据结构不够灵活,导致处处掣肘。6点从公司出来的时候我已经能预想到结果了。果然,2天以后收到拒信。
930-945发题目,题目之后细说,分三个部分,每人负责一个,正式开始,给一段
时间读题并小组讨论,之后面试官逐个组去询问思路和任务分配(时间到了就拉你出去聊一下你的思路,30分钟,不看你代码,就听你说问的什么algorithm, data structure, 会问很多run time 之类的。
这时候不需要完全有一个最佳的想法,但是大致的可行的思路最好是已经想出来,并且已经implement差不多了,但是面试官也会和你一同思考,提供他的思路。
我的那部分有两个restriction,我当时想到一个比较简洁的hashmap的方法解决其中一个, 另外一个当时还是在brute force阶段,但是表示也可以用hashmap, 面试官在这个基础上加上了一个不错的建议,所以最后用了hashmap 和 hashset)
上来建议仔细阅读readme file project 按步骤import 同组的印度妹因为没有照readme 捣鼓路径捣鼓了半个小时 

945-1200 小组讨论和coding时间
(之后继续coding和讨论到430,期间还有一次类似的1 on 1谈话,15分钟.)
1200开始会被面试官叫出去做30分钟左右的1 on 1的谈话,主要谈解题思路和可能面
对的一些问题(3点半交代买,我在3点的时候又被拉出去聊了15分钟,这时候代码已经都写完了,正在写comment, 面试官就随便问问你用了什么data structure, 解释一下你的代码,如果还有时间,你会再做什么,然后说你代码写完跑通了么,我表示应该是跑通了,但是如果有时间,还需要更多的test.)
-聊完回来之后已经3点10分了,只留了10分钟调bug,15分钟写注释、readme和加上传代码,时间相当赶。注释特别重要,一定要留足时间写详细,包括思路啊、时间复杂度啊之类的都加上。如果当时bug再多花一点时间,我估计我就放弃bug了。注释大家可以参考java的官方文档写。
近期流程好像改了,我9点就开始发题了,下午3点半全部束,比以前提早了一个小时(2015/12)
430上交题目,做一个survey,然后离场
430-600 以大组形式与另外3个面试官交流
600面试结束

楼主做的是第一部分,也就是scheduling。题目里会给一个包含6个区域的schedule,然后在这之中会有一些非法的广告,将这些找出来,令原来的sche-间隔-dule合法就ok。另外两个部分因为没做,所以看得不是太仔细。selection大概是让每个区域选一个广告,然后让价值最大。 optimization大概是插入几个广告到输入的schedule内,然后让schedule最优,如何定义最优就看自己的标准了,能说服考官的标准都是好标准。基本围绕你的算法和实现,当然如果你对别人有贡献也可以说说。


首先,题目不是三言两语能说清楚的,反正面A4纸五六页吧,都是这个project的描述
答题就是一些request让你根据不同的条件处理,然后输出结果,和hackercup那种,但是是一个更具体,更详尽的问题

另一方面是题目实在太长啊,记不住啊。描述题目的有10来页,面试官第一次来问我们思路的时候,我都还没看完整个描述。。。

看了之前很多别人的帖子,大概有这些题目,一个是广告投放问题,一个是网页布局问题,还有一个哥们的是prediction + OPTimization.  我说下我的,三部分,Inventory, Shipping, Lock.    每个部分有相对独立的input 文件会存在你的电脑上,所以相对来说别人的output 不会对你的程序造成直接影响,但是从逻辑和project上来说,这三个部分的input 和output都是有相关联的。


问题很实际,我做的是inventory, input有几万行数据,关于产品销售信息,具体字段是什么不便透露但是你可以自己想想 产品能有什么字段,还有一张表示order表,以及运送费用的cost表。 要做的事儿就是预测某个地区某月要存某件商品多少件。 要保证运费低,又要保证商品不会卖空。  只能说到这。 另外自己脑补。


题目1:
首先LZ要说题目太长,真的是非常的长,一本过塑的A4说明,楼主只读了第一部分,也
只做了第一部分,对另外两个部分并不太清楚,重点说LZ做的部分:
项目是一个库存管理和物流系统,因为是NDA,所以LZ不会告诉大家原题的请放心
假设京东商城有一个库存管理和物流系统,它在我国东部,西部,中部各有一个仓库,
假如西部有一个客户在商城上订了某件商品,要求商品N天内到达,那么京东就会从最
省钱又同时能满足需求的仓库为客户调货,举个例子:
客户订了商品A,要求货物发往中部,3天内到达
京东商城自己的物流系统如下:
中部到中部:1xx元,2xx元,3天。。。Nxx
中部到西部:1xx元,2xx元,3天。。。Nxx
。。。。
(不一定同一区域发往同一区域是最省钱的方法,例如中部到中部的1天速递为10元,
但可能西部到中部的1天速递只需要9元)
然后现在有京东商城客户1-4月的订单记录(含有时间,发货目的地,数量,要求送达
时间等信息),要求推算出京东5月时各个区域的仓库中各种商品的进货量,条件是要
最小的运送花费,最少的无效订单(没货了,或者现有情况货物在规定时间内到不了)
以及最少的库存量
 我做的第一题,用的是Hashmap记录每个时间点已经储存的content 

第一次考官叫我出去问我代码的情况,我给他看代码的时候,一边解释一边画图,因为自己英语一般 幸好交流过程还算顺利。然后考官给了个非常好的idea,他说,optimization最有意思的地方在于你有很多个optimize的标准。举个例子,要安排一个货物发货,可以按成本最低来optimize,也就是尽量让货车装满;也可以按照时间最短来optimize,也就是尽量让货物尽早发出去。我紧接着就说了我的idea,考官表示也可以(但的确没他的提议好)。回去以后我就参考了考官的idea,最后综合了两个aspect去实现。第二次叫我出去的是另一个考官,他问我为什么选这个,我说这是the most interesting one,感觉这个答案让他挺满意的,后来他说我的代码没问题。. Waral 鍗氬鏈夋洿氭枃�,



题目是广告系统,就是阿妈总想要在网页上显示广告,网页被分成8个部分,不同的部分有不同的权值乘数(multiplier),从10.3。每一条广告都有自己的权值,每个广告可以在特定的时间出现在几个可选的位置。这个project被分成了三部分:schedulingselectionoptimization,每个人选一个部分做。


LZ
做的是selection,主要说这部分。有这么几个输入文件:广告的ID和权值;网页每部分的权值乘数;某一个时段需要出现广告的位置;某一时段广告可以出现的可选位置。目的就是要某一时刻网页上的权值与权值乘数的积的和最大。
题还是原来的那道题, 广告的schedule, selection, optimization;
我给大家说说每个具体的input output, 题目就是前面有人发的那个.

schedule:
input: scheduleRequestInputStream( 大概是这样, 就是一个写好的io, 可以直接读文件的, 你不用去管他怎么实现的, 读出来的东西会放到一个要scheduleReuques的类里面, 这个类里面有id, location, starttime, endtime), HashMap<String,Integer> contentScoreMap(content id和对应的value),
HashMap<String, Double> locationValueMap(location 和他对应的value).
output: 用一个他给你的io out输出valid schedule和被rejectcontent, 也不需要操心这个io.

selection:
input: scheduleInputStream(应该是这个名字,用来读validschedule), selectionRequestInputStream(重点说下这个: 这个input会把读入的文件写到一个叫selectionRequest的类里面, 这个selectionRequest里面有两个东西, 一个是int time, 还有就是一个List<String> locations, 待会儿输出的时候你需要把这个locations里面每个location对应的content输出), 剩了的就是contentScoreMaplocationValueMap这两个了. selection有两个要求: 1. 要尽量让整个页面的value*score和最大.2. 同一个content不能同时出现在两个location. 如果不能满足这两个条件, location可以为空 .
output: 用它给你的output输出一个row, 这个row的格式是: 时间, 每个selectionRequest里面的locations里面每个location对应的content,还有整个页面的value*score. 其实输出你不需要管,只需要调用他给你的io里的方法输出就是了

Optimization:
和题里面差不多的, 就是多了一个要插入的contentlist吧 好像是这样,我就没打算做这个,所以没咋仔细看.

最后给大家要注意他会给你一个叫testdriverclass, 你可以用这个去读文件,然后把输出写出. 但是这个东西你路径没配置好好像会报错, 所以要注意. 其实也不需要太多关心, 最后只上传你做的那部分的那个class就行了.
,对了, 那三个部分是分别存在三个class里面的, 然后每个里面有个public static的方法, 这就是你要去实现的.
就这么多了, 想起了什么再来加.


但是和面官交流的候感不是很关心你的code,倒是一直用什么数据构,这样有什么benefit,开始用了一个神奇的数据构,询问发现好像没什么好就按照她推荐的数据构重新弄了,不知道这样会不会分。整体感官都挺好但是洋洋地感,就是我一直在也很少问问题,看到你的如果有问题上指出。
整体的建如下:
data structure extremely important.感觉这是他考察的重点吧,不不刻不在建议说多think about your data structure.
想找相似的题目练练怎么办??(来自后面面经)
“上topcoder或者其他网站找一些群面似的目(真正目很NDA也不方便,但大致都是一些shipping, schedueling 目,就是Amazon实际问题化版),自己尝试着做一下,再看看人是怎么做的。在做的候一定要自己几个问题(我什么要用个数据/算法,有没有alternatives可以用,如果有,比各种不同数据/算法的劣。当前solution下,如果数据量很大怎么?如果自己很长时间(比如3个月半年),如何化?在现实会遇到什么问题在的solution到了,如果没有,怎么improve)。如果英不是太好的,在练习尝试把自己的解法以及问题出来,因为这是到候你跟proctor interview候会讨论到的。4. 熟悉IDE和基本的library(如果忘了也没关系,到候可以google)”

  璁哄-------
(题目结束,后面是根据面经摘选出来的概率最大的评分标准)
---------------------------------------------------------------------------------------------------------------------
麻的朋友讨论过招人的准,拿出来大家分享一下
最重要的是code quality。 最好是clean code,简洁有效。数据选择合理。. From 1point 3acres bbs
其次是算法高效或者creativity种的。
在code于hire与no hire之候,会看leadership, teamwork种。

从以前的面经可以看到注释,leadership和合作精神也很重要(以下摘自后面面经)
一共码了200行吧,注释和代码各100行左右。感觉写注释在group interview是非常非常重要的。
“下面几点是Amazon的面试官告诉我的在group interview的加分项,需要格外注意。
2.1 communicationleadership非常非常重要。proctor虽然坐在屋子中间,但他们在时刻注意大家的讨论情况,并且在默默记录。其次别闷头狂写,主动问候别人how is going甚至主动帮助别人解决问题都是你的bonus. 1point3acres.com/bbs
2.2 一定要跟proctor解释清楚自己的思路,用图,说慢点。重点说你用了什么数据结构,为什么用那个,有什么risk,有什么好处,如果用java,一定要熟练Collection里的数据结构,尤其两种ListHashMapPriorityQueue,知道他们各种操作的时间复杂度和优缺点;你用的算法是什么,复杂度是什么,还能不能更优化。这里的bonus是你知道这个task的多个解法,比如greedyDP,虽然DP可以得到optimalresult,但是greedy算法的时间复杂度更低,可读性更好。要是能做到这点,offer基本就到手了。
2.3代码方面,proctor告诉我他们其实之后基本不看代码,因为只要知道了你的算法,然后看到你的代码能work,基本代码这块就够了。但是代码里注释要完全,代码一定要写得干净。“

补充内容 (2014-10-15 10:35):
对了,group interview基本当天面完之后几个proctor开个小会就已经做出决定了。之所以一周左右通知是因为他们需要把结果反馈到HR那里,再由HR统一一个个通知。“

Description: http://www.1point3acres.com/bbs/static/image/common/online_member.gif allenlyn 发表于 2015-11-4 00:24:09 | 只看该作者
其实考察的不仅仅是把题目做出来。OO design system design 只是没有explicitly的考察, 但是如果全部考虑进你的软件和算法设计里,加上一些对未来maintainable code 的预留 肯定是会加分的。

可能失败的原因:
“因为LZ被拒了,所以下面总结的这些经验也不一定对,大家随便看看就好。
1. 从简单的solution开始。LZ面之前已经知道了这一点,但是写的时候不知不觉就在优化上花了太多的时间,导致最后来不及写main,程序跑都跑不了。所以写的时候注意下时间。
2. 多交流。不得不说老美这方面还是要厉害一些,旁边组的老美coding期间交流很多,中国人的话大部分都是分完工之后就开始埋头写自己的代码了。
3. 重视基本的数据结构。面试官会特别问用什么数据结构来实现某个功能或者保存某些数据,这种时候虽然不像传统算法题有具体的时间或者空间复杂度要求,但是你要说得清楚你为什么选这个数据结构,它有什么优点。

楼主个人心得:
1.刚开始拿到任务时候赶紧看内容,比较多,速度看,看完马上选择自己想要的part
2.开始就用最简单的方法去完成,别想各种复杂的算法,就用暴力方法解决,至少会有一个结果。下午再想一下优化。
3.one on one的时候会问一些你代码中时间复杂度和空间复杂度的问题,要好好想一下, 时间我觉得不是很紧,能得到结果最重要,然后再想算法!“

2013(10-12)-[12]CS硕士+3个月-1 - 网上海投| 码农类全职@Amazon
刚接到通知,被拒了,晕。
上周五去参加的群面,题目就是那个广告投放的题,分3个部分,schedule, selection, optimization 我选的第一个,之前就听说是最简单的一个,做起来也却是简单,三下五除二就搞定了,然后还想办法用别的方法做了一下,最后一共用了3种方法写了出来,选了一种最快的方法。中间被叫出去谈了2次,都给了优化的意见,我觉得聊的还不错。. 1point3acres.com/bbs
没想到居然能挂,本来以为妥妥的了,因为听别人说做出来就差不多了,amazon狂招人呢在,我这写的代码自认为质量也还成了,该注释注释,到时真的没有几行代码,100行都没到吧,难道是代码过少了,另外可能就是跟面试官没交流好。总之,挺费解的。. 1point3acres.com/bbs

Description: http://www.1point3acres.com/bbs/static/image/common/online_member.gif 发表于 2013-11-10 00:48:45 | 只看该作者
代码要规范,命名、注释等要注意. 整个群面过程中要体现cooperationleadership,要主动组织
和引导小组讨论,主动发言。
面试前准备小细节:
1.     上来建议仔细阅读readme file project 按步骤import 同组的印度妹因为没有照readme做 捣鼓路径捣鼓了半个小时
2.     读题要快,拿到目开始讨论后,会有面官在周围记录每个人的表,所以迅速读题,迅速开始讨论
3.     零散建议
* 要有看懂别人代码的能力。 先看清楚提供的代码有些什么类,别自己写了半天发现这个类早就实现了。这个非常不好。。一来你实现的估计比提供的搓,二来说明你阅读别人代码有问题.
4.     和面官聊得候先自己那部分的思路然后就是 follow up,比如如何化整个系,如何测试模大了怎么 etc.
5.     尽量不要有 hard code,重要的界条件最好用个静全局量。
6.     看代,有些function/class有了,写完了才发现
7.     范,按照 java doc 准来,不会的用 Oracle 官网学一下。
8.     其他人的表现对你自己的影响应该不大,主要看个人表,开始写之前大家聊聊就行了,开始写了之后大家也就没空聊了。
9.     中午的面官是不会提示edge case的。下午我把完整的程序运行出来后,发现有些奇怪的出才发现edge case。我edge case个面很重要的一个环节edge case没运行出来前很想到,运行后才能发现。最重要的是,下午15min的面,那个面官竟然会直接你有没有考edge case,如果你事前没发现,根本就知道他在什么。所以保你的程序能运行果很关



----------------------- 其他七七八八的面经体会 ----------------------
1. 我面试前看了一些面经,大概有一点概念,面试前一天自己用Java 模拟了一下类似于 OS round robin scheduling,练练手。
2. 熟悉一下自己想用的语言的read in file, write out file. 其实他们都会提供代码handle这部分,但是熟悉一下,还是有好处。
3. 你所有的code,其实只在一个file里面完成,我一开始是在main里面写,也能跑,后来还是被印度小哥提醒,发现原来在另外一个file里面,comment还写着 // implement your code here.
4. 给你的input file很大,可以自己截取最开始的10个entry左右,用小的file 测试代码。.
5. 关于选题,说实话我只看懂了一个,另外两个一开始没有很快有思路。这个时候,一定要speak for yourself, 不要表现得很急,但是也绝不要礼让,想做哪个,就一定要说出来。. more info on 1point3acres.com
我可能是占了作为女生的便宜,组里的白人大叔让我先选了,感觉那个印度小哥也很想做这个。.
6. 选完了题目,就赶紧想思路,赶紧写,数据结构很重要,没有什么算法。而数据结果,无非也就是hashmap, set, arraylist几个,能简单的,不要往 tree 什么的去想。
hashmap, hashmap, hashmap, 重要的东西说三遍。

7. 一定写comment, 讲清楚你的approach。我还写了Java doc。 README没有时间写了,也没有写unit test, 看来这都不是问题,有时间写写,没时间还是保证保证代码。
8. 尽量分成小的method/function写,注意命名,总之代码保持简洁,方便自己写,也方便他们事后读。
9. 第一次30分钟面试的时候,不一定要完全都想通,保持一种与面试官讨论,向面试官学习的心态,把自己的想法有条有理讲清楚,把自己隐约想到,但是还没完全想好怎么做的,也要讲出来,
面试官会帮助你理清思路。
10. 在自己有时间的情况下,尽量帮队友,有时候,可能就是一个很小的地方,当局者迷,你可能一下子就看出来了,他还卡在那里。这样反过来,他们也会帮助你。



[题目]
还是没变,就是那个schedule selection optimization. from: 1point3acres.com/bbs 
面试过程中,考官再三强调,你可以写一个简单的甚至sb的实现方法,但必须能跑通。
schedule
:挺难的。记得有帖子推荐做这个,其实读完题目后我感觉还是有难度的。
selection
:最简单的。说它简单是读完题目后我很快就想到一个solution,而且效率还是很不错的
optimization
(我选了这个):最难的。但当时不知咋的,就想到了solution了,所以选了这个。这题要用hashmap. �-夊垎-紝鐙鍙戝竷
第一次考官叫我出去问我代码的情况,我给他看代码的时候,一边解释一边画图,因为自己英语一般 幸好交流过程还算顺利。然后考官给了个非常好的idea,他说,optimization最有意思的地方在于你有很多个optimize的标准。举个例子,要安排一个货物发货,可以按成本最低来optimize,也就是尽量让货车装满;也可以按照时间最短来optimize,也就是尽量让货物尽早发出去。我紧接着就说了我的idea,考官表示也可以(但的确没他的提议好)。回去以后我就参考了考官的idea,最后综合了两个aspect去实现。第二次叫我出去的是另一个考官,他问我为什么选这个,我说这是the most interesting one,感觉这个答案让他挺满意的,后来他说我的代码没问题。. Waral 鍗氬鏈夋洿氭枃�,
一共码了200行吧,注释和代码各100行左右。感觉写注释在group interview是非常非常重要的。
最后要告诉大家的是,我当时用的是C++,但他们没有配好环境。Visual Studio要注册码,EclipseC++感觉没配好。反正我是没debug也没run。幸好考官说应该没问题。-go(2015(10-12月) 码农类 硕士 全职@Amazon - 内推 - Onsite |Otherfresh grad应届毕业生
Visual Studio 2013, 完全没问题,非常好用。项目打开就能跑,symbol not found 问题在 Debug -> options -> Symbols 勾一下 Microsoft Symbol Servers就行了。



2015(10-12月) 码农类 士 全@Amazon - 内推 - Onsite |Failfresh grad毕业
周三去西雅参加的传说中的残暴的amazon group interview...今天下午机就收到了拒信,真他么的忧伤。。至今没有想明白为啥。。。
早上8点checkin然后hr会激情演扯淡一番。。
大概9点就发题目了。。
商量好之后就可以开始写了,面官9点半开始按序会,有思路。
11点开始按行半小的1v1面。。. @1point 3 acres
下午貌似2点半开始15分的第二。。
三点半基本就要写完了。。然后上码啥束。
是那三道。。大家都知道了也就不述了。。我做的是第三道。。主要也是用的hashmap以及priority queue。。
候面价也不。。果也能跑出来。。然后是跪了。。

下面仅为我个人猜想。。。因为这题目很久都是一的。。播的肯定也越来越广了。。大家也都准的越来越充足做的也越来越好
的也越来越周到。。。。要求也越来越高了。。所以感要么是看要么是看人品了。。
大家加油,祝好运。
ps: 真是羡慕么多拿video的啊。。。。。。


从Amazon面完回来,分享一下面地里。
上来建细阅读readme file 把project 按步import 同的印度妹因没有照readme做 鼓路径鼓了半个小

目就像地里的面经说的那,几乎没有出入。 我做的第一,用的是Hashmap记录每个时间点已经储存的content

目不,建议脑子里构思出算法,然后考什么数据构适合个算法。
希望大家都能找到心的工作!

题目很长(一本小册子),我就不说了,也记不太住。除非是直接把那本册子给你看,否则粗略描述一下题目其实并没有什么意义。
虽然我面之前也试图去搜了题目,当时也有点郁闷没找到一点题目的线索。-.-

3.题目分三部分,一定注意,对代码能力没那么有把握的,写代码没那么快的,题目没看懂的,一定不要选第三部分。。
我做的1. 

4.
不要想什么高大上方法,写出来就好,时间并没有你想象中得多。。
如果面试官觉得你方法不好,第一轮聊天时就会指出来。
什么ML我根本不会,也没到。。。
我一直秉承能写出来就是好的。写出来是指,你自己弄几个input,包括tricky一点的,然后你代码都能跑出正确结果。
因为本身给的输入太多,你根本不知道自己对不对,自己弄个简单点的input,就能看出代码对不对了。
.枃鍘熷垱鑷�1point3acres璁哄
5.
时间表可以参考一下别的帖子,但实际是有浮动的。不过都是两轮,与面试官聊天的时候一定要好好表现。
我感觉这部分好像比重蛮大的,因为他们最后只收了你改动的那个文件,感觉coding部分事后病没有那么看重。
关键是交流。我第一轮聊完后,两个面试官都非常满意,当时就感觉蛮有戏的。
我当时已经写完了所有代码,只差一个comparator没写完,当然有小bug没调,但是思路全部都出来了,跟面试官讲的很清楚,他好像也很有兴趣,第一轮比预计时间聊得要久。

6.
与小组成员的交流很重要,但要强硬的时候还是不能避让。。
太礼貌你就做第三部分了。。你懂的。。
8. 零散建议
*
要有看懂别人代码的能力。 先看清楚提供的代码有些什么类,别自己写了半天发现这个类早就实现了。这个非常不好。。一来你实现的估计比提供的搓,二来说明你阅读别人代码有问题. from: 1point3acres.com/bbs 
*
看看DFS, DS至少要熟悉HashMap...因为我发现跟我一组的ABC美女 并不是很熟悉hashmap -.-
*
好像没有behavior的问题,不过还是准备准备,看看那个principle啥的总是没错的。。
*
没吃过crab pot的可以去吃一下。。第一次吃还是蛮不错的。。


Description: http://www.1point3acres.com/bbs/static/image/common/online_member.gif chaorenkuaile 发表于 2014-11-24 09:35:19 | 只看该作者 Description: 帖奖励

2014(10-12
)-[12]CS硕士+fresh grad 无实习/全职 - 内推| 码农类全职@
本人加拿大master,无任何实习经历,今年九月份开始找工作,一共面了五家公司(M, A, F, G, C),拿到了microsoft, Amazon 和一家小公司的offer,决定从了Microsoft。在找工作期,通地里得了很多帮助,所以写个经验,回下地里,祝大家都能拿到意的offer

Amazon 群面
关于Amazon群面的信息,地里并不多。首先大家都有个区,大多数人都得被分到群面很不好,想方法的要的形式。我最初也是个感,但是自己经历过以后,我个人认为这是一个特有效率的面方式,通率也并不低。所以我建多代码经验的同学,可以主动选择群面:首先群面是不需要做OA/电话的,等于直接onsite省了大把的时间;其次群面考的是你实际解决问题的能力,包括怎么一个问题进行分析提出合理的假,怎么合理的运用数据构以及算法,怎么团队合作等等,平得更重要,刷题对这个并没有太大的帮助,在准上也就不需要花太多时间

接下来说说群面的准然群面不像传统onsite需要刷来准,但是你是可以准以下几点提高你的成功率:
1. 根据地里的经验贴,熟悉下整个流程和各个时间点,大致是发题-读题-组讨论-proctor讨论-code-穿插两次跟proctor的一interview-提交。
2. 熟悉下数据构(特Hashtable, Queue, ArrayList些常用的),问问自己什么用哪种数据构,好和坏时间度,底实现方式等等。
3. topcoder或者其他网站找一些群面似的目(真正目很NDA也不方便,但大致都是一些shipping, schedueling 目,就是Amazon实际问题化版),自己尝试着做一下,再看看人是怎么做的。在做的候一定要自己几个问题(我什么要用个数据/算法,有没有alternatives可以用,如果有,比各种不同数据/算法的劣。当前solution下,如果数据量很大怎么?如果自己很长时间(比如3个月半年),如何化?在现实会遇到什么问题在的solution到了,如果没有,怎么improve)。如果英不是太好的,在练习尝试把自己的解法以及问题出来,因为这是到候你跟proctor interview候会讨论到的。4. 熟悉IDE和基本的library(如果忘了也没关系,到候可以google
5. 熟悉怎么写javadoc,怎么范的使用量名等等些能你的code看起来比较规

在面当天有几点可以注意的:
1. 早上一定要吃!!可以在酒店餐拿点水果或者酸奶之去中午吃,因真的很吃。整个面流程差不多要8个小,我最后都快饿晕了。。
2. 读题目的候要把所有的部分都了,而且要思考下友的部分,因有可能你负责的部分跟他的是有一定系的,而且如何帮助友也是群面考察的一个重要指
3. 看了后,先想一个最简单的思路(比如暴力解),你要保你提出的解法能在2个小code完并且跑通,千万不要想了一个高大上的解法,最后没能实现。什么machine learningprediction model的都不要去想,根本不可能完成,也不是群面考察的重点。
4. 组讨论候不你自己的部分提出思路,也要友的部分提出思路,帮助他分析。proctor一直都在察每一个candidate,你跟友的沟通交流很重要。
5. 在以小形式跟proctor讨论候,一定要把你的思路理清楚,告proctor自己的部分大概是要做什么,你用了哪些assumption,需要用哪些数据构,算法是什么的,如果可以的,大致用pseudocode写出来。proctor你提出来一些建,一定要真听,不明白就
6. 接下来写code候注意模化,出都已经给你写好了,适当加上一些comment,写一部分就测试一部分,尽量在第一次和proctor interview候你有一个能跑的版本。写code候也要问问你的友做的怎么了,有没有什么需要帮助的。
7. 第一次和proctor interview候把自己的算法清楚,并把之前的那几个点也跟proctor讨论[size=14.4444446563721px]什么要用个数据/算法,有没有alternatives可以用,如果有,比各种不同数据/算法的劣。当前solution下,如果数据量很大怎么?如果自己很长时间(比如3个月半年),如何化?在现实会遇到什么问题在的solution到了,如果没有,怎么improve)。
[size=14.4444446563721px]8. 接下来有时间可以做一些improvement improvement可以是更efficient的算法,也可以是对题目更深次的理解。因为题目都比偏向open question,不同的assumption有不同的解法。这时候你可以make more realistic assumptions, 然后develop新的solutionimprovement。当然一切的前提都是你有一个能跑的版本。. From 1point 3acres bbs
[size=14.4444446563721px]9. 第二次proctor interview候可以重点讲讲improvement,就算你没有实现,也可以讲讲你的思路。
[size=14.4444446563721px]10. 最后就是得写好comment/javadoc,写一个readme把你的思路和improvement的想法解一下。
[size=14.4444446563721px]



2014(10-12) 码农类 硕士 全职@Amazon - 网上海投 - Onsite |Other
现在还在西雅图的酒店里,面了一天腰还在疼,写个Amazon group interview的面经吧,希望能涨人品下周拿offer。没有题目,但有几点重要注意事项和体会,绝对是key point
1. 总体感受是比较累,930开始发题,然后赶紧看题讨论,1130第一次跟proctor讨论,然后猛写代码,330第二次讨论,430结束。基本比较好的流程是第一次讨论前整理出思路,设计好需要的数据结构和算法,第二次讨论前完成所有代码编写,之后最后一个小时补充注释、修饰代码。
2. 下面几点是Amazon的面试官告诉我的在group interview的加分项,需要格外注意。
2.1 communicationleadership非常非常重要。proctor虽然坐在屋子中间,但他们在时刻注意大家的讨论情况,并且在默默记录。其次别闷头狂写,主动问候别人how is going甚至主动帮助别人解决问题都是你的bonus. 1point3acres.com/bbs
2.2 一定要跟proctor解释清楚自己的思路,用图,说慢点。重点说你用了什么数据结构,为什么用那个,有什么risk,有什么好处,如果用java,一定要熟练Collection里的数据结构,尤其两种ListHashMapPriorityQueue,知道他们各种操作的时间复杂度和优缺点;你用的算法是什么,复杂度是什么,还能不能更优化。这里的bonus是你知道这个task的多个解法,比如greedyDP,虽然DP可以得到optimalresult,但是greedy算法的时间复杂度更低,可读性更好。要是能做到这点,offer基本就到手了。
2.3代码方面,proctor告诉我他们其实之后基本不看代码,因为只要知道了你的算法,然后看到你的代码能work,基本代码这块就够了。但是代码里注释要完全,代码一定要写得干净。

补充内容 (2014-10-15 10:35):
对了,group interview基本当天面完之后几个proctor开个小会就已经做出决定了。之所以一周左右通知是因为他们需要把结果反馈到HR那里,再由HR统一一个个通知。

因为LZ被拒了,所以下面总结的这些经验也不一定对,大家随便看看就好。
1. 从简单的solution开始。LZ面之前已经知道了这一点,但是写的时候不知不觉就在优化上花了太多的时间,导致最后来不及写main,程序跑都跑不了。所以写的时候注意下时间。
2. 多交流。不得不说老美这方面还是要厉害一些,旁边组的老美coding期间交流很多,中国人的话大部分都是分完工之后就开始埋头写自己的代码了。
3. 重视基本的数据结构。面试官会特别问用什么数据结构来实现某个功能或者保存某些数据,这种时候虽然不像传统算法题有具体的时间或者空间复杂度要求,但是你要说得清楚你为什么选这个数据结构,它有什么优点。

楼主个人心得:
1.刚开始拿到任务时候赶紧看内容,比较多,速度看,看完马上选择自己想要的part
2.开始就用最简单的方法去完成,别想各种复杂的算法,就用暴力方法解决,至少会有一个结果。下午再想一下优化。
3.one on one的时候会问一些你代码中时间复杂度和空间复杂度的问题,要好好想一下。

时间我觉得不是很紧,能得到结果最重要,然后再想算法!. From 1p


2015(1-3) 码农类 硕士 全职@Amazon - 网上海投 - Onsite |Pass
我之前发现group interview的面经非常少,我就来也随便说说吧,特此回报地里各位帮忙。我上周五面的。到今天为止正好一个星期。

来西雅图面试之前没有任何电面和oa,直接onsite

说到准备,也许真的不需要准备什么,平时刷的算法题够了我觉得。因为我的解题算法里面一个是暴力破解,另一个是greedy algorithm。也没有很高端。

接下来我说下面试当天的情况和一些心得体会。早上8点到office,然后被领到一个大屋子坐好,这个时候每两个三个人坐在一个小桌旁,桌上摆着ibm的电脑和草稿纸。这个时候你已经知道你的组员了。我们稍微聊了聊,一男一女都是烙印,学校我都没听说过,唉,不太好意思。。然后就可以随便吃点东西,然后就开始presentation了。大概二十分钟半小时。完了之后这时候大房间被用屏风分开成两部分,每部分中间坐着3个面试官。然后就发题了。真的好长,一共14页吧,三个部分:scheduling, selection, optimization。我的经验是快看,然后开始和组员讨论,然后分工。我看的慢,我组员看的还慢。。而且都没看懂第三部分optimizaiton。然后我们又仔细看,慢到最后proctors过来问我们分组的时候我们还没分好组。然后又多给了我们5分钟。具体题目我就不说了,签了保密协议。我选了selection,然后proctors再过来的时候我说了我暴力方法的数据结构和算法,另外两个烙印貌似没什么思路。然后此时差不多9点半了,然后coding,写到中午12点开始有半小时的1on1的面试,就是看看你的代码写的怎样。.

中午叫我出去一对一的时候我就差一个方程就写完了。然后跟面试官用10分钟讲了一下算法思路和我下午如何optimize,他非常满意。然后就开始让我问他问题了。我就有的没的问了点amazon的问题和leadership。对了,在你coding的时候一定问问组员怎么样了,然后我除了问他们,他跟他们说我对于他们部分的思路,其实说这些有的没的都是跟面试官听的,他们坐在中间就记录这些。当然这有些应试了。但事实是我组员是真的没思路。。。我就给他们讲他们部分应该什么思路实现。下午我就继续把我的暴力方法能跑了,出结果了。然后开始优化。差不多3点半的时候有一个15分钟的一对一面试,那个时候我的optimize的算法已经可以跑出结果了。所以面试的时候我给他跑了一下,然后给他讲了一下算法。面试官一直板着脸,我也不知道对不对,挺虚的。然后他还对我的code提出异议。。好像是我理解错题目了。。。不过既然是开放题目,每个做法都是根据不同假设的,所以我跟他讲了下我的想法。然后他说没时间就带我回房间了。这时候我就开始拼命写readme和注释。最后提交到box里面,我把我的输出结果的filereadme,两个能跑的code文件提交了。然后hr又搞40分钟的presentation。其实有点小瑕疵,我是presentation完了补交的结果file,之前忘记交了。

整个一天的体会是:对于题目迅速解题,用暴力破解算法让code能跑能出结果。快速优化,然后把思路跟两个面试官讲清楚。在过程中,经常关注自己组员的进展,体现leadership

2012(1-3) 码农类 硕士 全职@Amazon - 网上海投 - Onsite |Otherfresh grad应届毕业生
几周前的group interview 感觉是过了(因为有些人被拒了),但是没offer因为sde 已经满了, 写点经验攒人品,求加分
全天流程:直接被带到一个大的房间,坐下后可以拿,hr简单介绍,然后直接开始。中间一次30min 和最后15min 1v1 面试,顺序根据小组来,所以1号组1号人时间很紧。

说几点感想:
1.group interview
其实不难,我感觉也不是特别的强调leadership,因为大多数时间只有一个面试官在现场观察,也不会走你旁边来听你在讲什么,大家只要没事问问别人,然后讨论下问题就行了,没人管你说什么。中间的一对一也是对着程序讨论,所以group interview 非常适合编程熟练英语不怎么好的人,这个后面再说。

2.
我建议快速选一个自己想要做的题目告诉队友,搞清楚自己的部分后跟队友讨论,这样面试官过来的时候可以马上问面试官问题和说出自己的思路。我觉得直接问面试官问题比在那装逼讨论有效果,一是为了搞清楚题目,二是交流。

3.group interview
考察的实现,都是用最简单暴力的算法,一定要快速的实现。如果你在学校做project在没开始前就能对整个project有一个预想的整体步骤,写leetcode会自己写test case,做project不需要抱大腿的话,基本可以拿到题目就可以想到思路,中午就可以实现出主要的方法了。

4.amazon
提供了框架读取数据和输出测试,但是你中午30min面试之前就把那个框架能运行起来, 并且输出期望的结果,我觉得比较困难。而且这种一次写完所有方法,我觉得基本不可能保证你的程序能运行,也不符合基本的流程。我觉得如果平时编程都是按我上面说的这种思路(一次写完,也不测试)做就不太适合group interview。我的方法是实现一个方法就马上测试,保证每一个都是对的,这样的坏处就是要搞清楚amazon的框架具体读的什么输出的什么,好处就是随时都有可以展示给面试官的东西,最后写完直接就可以运行。 �.夊垎鍦�. 

5.
我中午就已经实现了主要的方法,每个人都有面试的时间点会写在白板上,面试前想好怎么说然后空余时间和同组讨论装逼。我的30min面试就是面试官看我的代码,然后让我讲思路,问有没有问题之类的。中午的面试官是不会提示edge case的。下午我把完整的程序运行出来后,发现有些奇怪的输出才发现edge case。我觉得这个edge case是这个面试很重要的一个环节,这个edge case没运行出来前很难想到,运行后才能发现。最重要的是,下午15min的面试,那个面试官竟然会直接问你有没有考虑到这个edge case,如果你事前没发现,根本就知道他在问什么。所以保证你的程序能运行输出结果很关键

因为和亚麻的朋友讨论过招人的标准,拿出来给大家分享一下

最重要的是code quality 最好是clean code,简洁有效。数据结构选择合理。
其次是算法高效或者creativity这种的。
code处于hireno hire之间的时候,会看leadership teamwork这种。

希望大家都能找到心仪的工作!


2014(10-12码农类 硕士 全职@Amazon - Other - 技术电面 |Other
群面经验总结,谢谢地里写面经的前辈们
1.
流程: 9点开始,12点左右每人半个小时一对一讨论,3点左右每人15分钟一对一讨论,其他时间为写代码,或者自由提问。
2.
读题要快,拿到题目开始讨论后,会有面试官在周围记录每个人的表现,所以迅速读题,迅速开始讨论。
3.
表现自己也要帮助别人,这个除了面试官自己观察,也会在一对一的时候提问。
4.
题目先实现最简单的解法,在考虑各种优化的可能性,最简单的解法需要考虑各种edge case.

楼主非大牛就不装大尾巴狼了,只能猜着写一下注意的点吧:
1.
时间挺紧的,有了简单地思路赶紧写,不要想着那些 fancy 的算法。
2.
和面试官聊得时候先说自己那部分的思路然后就是 follow up,比如如何优化整个系统,如何测试,规模大了怎么办 etc.
3.
代码尽量不要有 hard code,重要的边界条件最好用个静态全局变量。. 鐗涗汉浜戦泦,浜╀笁鍒嗗湴
4.
注释要规范,按照 java doc 的标准来,不会的用俩小时去 Oracle 官网学一下。
5.
正确地思路一定是很简洁的,code也尽量简洁,我的注释加代码一共不到二百五十行。
6. group
其他人的表现对你自己的影响应该不大,主要看个人表现,开始写之前大家聊聊就行了,开始写了之后大家也就没空聊了。


2013(10-12)-[12]CS硕士+3个月-1 - 网上海投| 码农类全职@Amazon
刚接到通知,被拒了,晕。
上周五去参加的群面,题目就是那个广告投放的题,分3个部分,schedule, selection, optimization 我选的第一个,之前就听说是最简单的一个,做起来也却是简单,三下五除二就搞定了,然后还想办法用别的方法做了一下,最后一共用了3种方法写了出来,选了一种最快的方法。中间被叫出去谈了2次,都给了优化的意见,我觉得聊的还不错。. 1point3acres.com/bbs
没想到居然能挂,本来以为妥妥的了,因为听别人说做出来就差不多了,amazon狂招人呢在,我这写的代码自认为质量也还成了,该注释注释,到时真的没有几行代码,100行都没到吧,难道是代码过少了,另外可能就是跟面试官没交流好。总之,挺费解的。. 1point3acres.com/bbs

Description: http://www.1point3acres.com/bbs/static/image/common/online_member.gif wonghiukong 发表于 2013-11-10 00:48:45 | 只看该作者
代码要规范,命名、注释等要注意. 整个群面过程中要体现cooperationleadership,要主动组织
和引导小组讨论,主动发言。


Labels

Review (572) System Design (334) System Design - Review (198) Java (189) Coding (75) Interview-System Design (65) Interview (63) Book Notes (59) Coding - Review (59) to-do (45) Linux (43) Knowledge (39) Interview-Java (35) Knowledge - Review (32) Database (31) Design Patterns (31) Big Data (29) Product Architecture (28) MultiThread (27) Soft Skills (27) Concurrency (26) Cracking Code Interview (26) Miscs (25) Distributed (24) OOD Design (24) Google (23) Career (22) Interview - Review (21) Java - Code (21) Operating System (21) Interview Q&A (20) System Design - Practice (20) Tips (19) Algorithm (17) Company - Facebook (17) Security (17) How to Ace Interview (16) Brain Teaser (14) Linux - Shell (14) Redis (14) Testing (14) Tools (14) Code Quality (13) Search (13) Spark (13) Spring (13) Company - LinkedIn (12) How to (12) Interview-Database (12) Interview-Operating System (12) Solr (12) Architecture Principles (11) Resource (10) Amazon (9) Cache (9) Git (9) Interview - MultiThread (9) Scalability (9) Trouble Shooting (9) Web Dev (9) Architecture Model (8) Better Programmer (8) Cassandra (8) Company - Uber (8) Java67 (8) Math (8) OO Design principles (8) SOLID (8) Design (7) Interview Corner (7) JVM (7) Java Basics (7) Kafka (7) Mac (7) Machine Learning (7) NoSQL (7) C++ (6) Chrome (6) File System (6) Highscalability (6) How to Better (6) Network (6) Restful (6) CareerCup (5) Code Review (5) Hash (5) How to Interview (5) JDK Source Code (5) JavaScript (5) Leetcode (5) Must Known (5) Python (5)

Popular Posts