亚马逊参观了我们的校园,招聘 SDE-1 FTE。一共4轮(1个编码测试+3个技术面试)
第 1 轮(编码测试):该轮有 4 个部分,调试、编码、工作风格评估和能力。调试和 aptitude 很容易,甚至不需要任何准备。你只需要在所有这些回合中都快一点。
在编码回合中,从这个问题池中为每个人选择了 2 个随机问题。
- https://leetcode.com/discuss/interview-question/344650/Amazon-Online-Assessment-Questions/
尝试新旧部分中的所有问题。
第 2 轮(技术面试 1):
- 一个BST的两个节点互换,修正BST。
- 给定一个数字 N,计算可以构造的数组的数量,使得元素的总和为 N。一个约束是每个元素应该大于 3。
例子:
Input: 6 Output: 2 Possible arrays: [3,3], [6]
我给出了递归解决方案。他们想要该解决方案的时间复杂度。这有点像 (N-6)^(N/3)。然后他们要求使用 DP 优化解决方案。
第三轮(技术面试二):
- 给定 2 个数字 N 和 M,计算它们中设置位的数量。他首先让我做一个函数来返回一个数字的集合位数,然后要求我编写解决方案。他想要像这样的最优化的解决方案。 https://www.geeksforgeeks.org/count-total-set-bits-in-all-numbers-from-1-to-n-set-2/ 我无法给出。
- 给定依赖关系,如 A->B、C、D 和 B -> D 和 D -> E。打印任务的顺序。例如 EDBCD A。我想出了拓扑排序解决方案 https://www.geeksforgeeks.org/topological-sorting/。他想寻找所有边缘情况并检查代码是否完美。我发现存在循环依赖的情况并相应地更改了代码。
- 然后他询问了一些操作系统和网络问题,例如信号量和互斥锁的区别、TCP 和 UDP 的区别以及银行家算法是什么。然后他跳到我的简历上,询问我做过的实习。
第 4 轮(技术和管理):对我来说,这一轮只有 45 分钟。
- 给定一棵二叉树,找到具有最大节点的级别并给出该级别的节点总和。他希望我只使用队列而不使用其他任何东西,然后他要求优化它,因为树很大。然后他询问相同的时间复杂度。我错过了一个边缘情况。
- 告诉我您遇到复杂问题的经历以及您想出的解决方案?然后他问我是否可以做一些不同的和更好的事情。
- 告诉我什么时候我不得不在短时间内处理大量数据?再次问我是否可以采取任何不同的方法。
检查这个以获取更多详细信息。 https://www.amazon.jobs/en/landing_pages/in-person-interview
最终有8个学生4轮,包括我在内,6/8被选中?
注意:他们对每个算法的时间复杂度都非常认真。准备行为问题,并阅读上述链接中提到的领导原则和 STAR 格式。
他们希望每个问题的可运行代码也涵盖所有边缘情况。