这道动态规划题,难倒80% 的Amazon求职者,你会做吗?

2,034 阅读5分钟

专栏 | 九章算法

网址 | www.jiuzhang.com

动态规划,作为算法面试中最难的考点,一直以来是童鞋们 Offer 路上的拦路虎。Facebook, Google, Linkedin, Amazon, Uber, Airbnb 都是常常面到动态规划的公司。

下面这道《超级洗衣机》,是2018年8月学员在 Amazon Onsite 面试遇到的动态规划问题。我在学员中做了测试,发现大部分的同学很难一下子无bug写出这道题的答案。

你有n台超级洗衣机。最初,每台洗衣机都有一些衣服或是空的。

对于每一次移动,您可以选择任意m台(1≤m≤n)洗衣机,并将每台洗衣机的一件衣服同时传递给相邻的洗衣机

给定一个整数数组表示每个洗衣机中从左到右的衣服数量,您应该找到最小移动次数,使得所有洗衣机中具有相同数量的衣服。如果无法执行此操作,请返回-1。 n的范围是[1,10000]。 超级洗衣机的衣服数量范围是[0,1e5]。

样例1

输入: [1,0,5]

输出: 3

解析: 
第一次移动:    1     0 <-- 5    =>    1     1     4
第二次移动:    1 <-- 1 <-- 4    =>    2     1     3    
第三次移动:    2     1 <-- 3    =>    2     2     2   

样例2

输入t: [0,3,0]

输出: 2

解析: 
第一次移动:    0 <-- 3     0    =>    1     2     0    
第二次移动:    1     2 --> 0    =>    1     1     1  

Amazon 是有名的大厂,每年招收的 Software Engineer 人数占去全部市场招聘名额的很大部分。

所以,想要拿到 Amazon 的Offer,除了刷题以外,你还需要了解一下, Amazon 技术面试的流程和面试内容都有些什么?


在线编程测试 OA

和大多数科技公司把在线编程测试放在面试的最后阶段不同,亚马逊的开发岗面试一般会从在线编程测试开始。这一轮面试中,一般只会考察基本原理,所以你不用担心有复杂的题目来考察你对算法的理解,但在面试前一定要复习常见编程语言的相关原理。


电 面

如果顺利通过第一轮编程测试,接下来就要和招聘人员进行时长为40-45分钟的电面了。通常亚马逊的电面是在Skype上进行的。亚马逊招聘负责人曾说过,电面招聘人员的工作职责是:和应聘者交谈,然后评判应聘者是否能够适应亚马逊的企业文化和领导原则,如果招聘人员觉得不符合,可以直接 say no。

所以,电面这一关也至关重要,以下是关于如何准备电面的几点建议:

1.提前查找招聘人员的 LinkedIn

在电面之前,提前查看招聘人员的LinkedIn简介,然后把自己了解到的内容融入到电面的谈话中去,这不仅可以帮助你打破尴尬,也可以从侧面告诉应聘者,你认真准备了这场电面。

2.提前准备面试问题

可以在面试前看一些面经,提前对可能问到的问题做好准备。

3.提前做好讨论技能的准备

一般来说,大部分公司在电面时只会对简单的原理和一些行为问题进行提问。但是,亚马逊并不是这样,亚马逊训练有素的招聘人员精通各自的专业领域,他们会讨论你的技术技能,以此评判你是否有资格进入下一轮面试。所以为了能够有良好的面试表现,记得提前做好讨论技能的准备。

4.找一个安静的地方进行电面

安静的面试环境体现和你对面试的重视和对面试官的尊重。


Onsite

通过电面之后,就会进入一整天的现场面试。你可能在这一天内经历四五场面试,其中有两场一定要注意:

1.Bar raisers招聘团队

虽然不是每一个进入亚马逊的员工都需要经过 Bar raisers 面试,但是在亚马逊招聘重要岗位员工时,一般都会都会对该员工进行Bar raisers面试。Bar raisers 大部分是一群分别在各个岗位是精英的评估人,要想成为亚马逊的员工必须要得到他们的认可。即使应聘者应聘的岗位不是 Bar raisers 所擅长的领域,也不影响他们对应聘者的表决权。Bar raisers 招聘团队几乎每周都会对其他团队的应聘者进行面试,这是贝佐斯降低雇佣“错误”员工风险的方法之一,他认为Bar raisers招聘团队能够保证亚马逊招到优秀人才。

2.编程面试

编程面试主要考察的是算法和数据结构,要求用代码实现,并懂得 debug 和处理复杂度问题。

要注意,coding 面试不仅考察编程能力,也考察协作能力。面试官通过本场面试会看你是什么和团队合作的,你是否善于倾听,以及你是怎么处理别人对你的反馈的。


欢迎关注我的微信公众号:九章算法(ninechapter)。
精英程序员交流社区,定期发布面试题、面试技巧、求职信息等
2d09fefd332a1a68bb1c.jpeg