📜  亚马逊面试经历| 379(校内实习)

📅  最后修改于: 2021-11-17 07:54:41             🧑  作者: Mango

第1轮:
第一轮有 20 个 MCQ,评分方案为 +1 和 -0.25。 MCQ 涵盖的主题包括 DSA、操作系统、网络、OOAD、计算机体系结构、C、C++、 Java基础知识。有 2 道编码问题,每道题 10 分。

  1. 给定一组 2 个字母 (A, B),找出可以形成的给定长度的字符串的数量,该字符串至少包含一组三个连续的 B。

    例子:

    Input: 3
    Output: 1
    
    Input: 4
    Output: 2
    
  2. 有’n’个朋友带礼物参加万圣节派对,他们交换礼物,每个人收到的礼物数量数组都给了你。检查这样的排列(数组)是否可能,如果可能的话,给出相同的排列。

    例子:

    Input: 
    3
    1 1 1
    Output: 2 3 1
    

26 人入围了面对面的面试。

第 2 轮:

我的面试持续了大约 1 小时 45 分钟;超出预期,一般是 30 分钟。在这一轮中,我们在 DSA 上进行了测试。我的面试官很好,在我们进入面试的实际过程之前,他让我感觉很舒服。他自我介绍,问我介绍,给我简要介绍了亚马逊的实际业务,他们的 AWS 服务、Prime 服务、安全性和 Alexa。

候选人被问及以下问题:

    (我是倒数第二的人,所以收集了朋友的问题:P)
  1. 求给定二叉树中所有节点的垂直和。
  2. 找出给定直方图下的最大面积。
  3. 找到给定二叉树的锯齿形遍历。
  4. 在给定的二叉树中从末尾找到第 ‘k’ 个节点的值。
  5. 将“1”添加到给定数字(以单向链表的形式)而不反转链表。
  6. 在给定的数字中找到满足 a + b = c 的三元组。
  7. 找出给定字符串最大的重复子序列。
  8. 给定一个无限大的数组,找到给定的元素。
  9. 在给定的一组建筑物中可以截留的最大雨水。
  10. 给定一个无限大的数组,每个元素都有与它们关联的标签,大约有 10,000 个标签(比如说),然后对给定的数组进行排序以获取所有标签 0 的第一个,标签 1 的下一个,依此类推,O(n)。

    我得到了第 10 个问题,我被要求以尽可能多的方式解决这个问题,从 O(n*n) 解决方案开始到 O(n*log(n)),最后到 O(n)。我被要求为面试官喜欢的任何方法在纸上编写算法。最后,在与我的面试官讨论之后,我们得出的结论是我的算法是可行的。我被要求对 O(n) 算法进行伪代码。然后,我被要求选择一种舒适的语言(C、C++ 或Java)。我选择了Java,我被要求在纸上编写整个解决方案,并正确实现所有功能。我的代码的模块化和循环控制以及渐近复杂性都经过了测试。

我只得到了一个问题,但其他问题都进行了 2-3 个问题的测试,一个是困难的,其余的则是简单的。
本轮过后,11人入围下一轮。

第 3 轮:

我的面试持续了大约 1 个小时;超出预期,一般是 30 分钟。这是最后一轮。我的面试官让我放松一下。他问我关于我的项目、我熟悉的语言以及我在大学里的俱乐部活动。然后,我们讨论了我的一个项目一段时间。我们就我的项目讨论了松耦合系统和强耦合系统。然后他问我是否适应动态规划,我说我不太适应,所以,他问我是否适应树木。我说是’;他问了我两个关于树的问题。

  1. 给定一个二叉搜索树,找到并打印所有叶节点。
  2. 在不使用任何额外空间的情况下,将给定的二叉搜索树转换为双向链表。

这里采用了与第二轮相同的方法。我被要求对解决方案进行伪编码,并用我选择的语言(C、C++、 Java)对其进行编码。然后,他问我是否对操作系统感到满意;我说是’。他从分页、碎片化、安全性、作业处理、操作系统类型开始。他几乎涵盖了操作系统的所有概念。这些问题是基于应用的,而不是直接与主题相关的。

最终,有 4 人入围,并获得了与亚马逊合作的机会。