📜  亚马逊面试体验(校内)

📅  最后修改于: 2021-11-18 01:46:06             🧑  作者: Mango

第 1 轮:在第一轮中,我被问到了 2 个编码问题

  1. https://www.geeksforgeeks.org/maximum-size-sub-matrix-with-all-1s-in-a-binary-matrix/
  2. https://www.geeksforgeeks.org/find-the-next-lexicographically-greater-word-than-a-given-word/

我能够解决这两个问题。面试官是个很冷酷的人,首先我们讨论了brute force方法,然后他让我进一步优化解决方案,最后我给了他一个有效的方法。他很满意,然后让我用我想要的任何语言来实现代码。所以我用 C++ 实现了这两种解决方案。

第 2 轮:他们再次问了我 2 个编码问题

  1. 给定一个无穷大的整数流和 K,找出任意时间点流中 K 个最大元素的总和。这个问题类似于这个:https://www.geeksforgeeks.org/kth-largest-element-in-a-stream/

    我首先给了他一个时间复杂度为 O(n*k) 的方法,想法是将 k 个元素的数组按排序顺序保存,并且每当出现大于 min 元素的新整数时,丢弃 min 元素并将新元素放入数组。但是面试官问我可以进一步优化吗,想了几分钟我给了他另一种时间复杂度O(n*log(k))的方法。这个想法是维护一个大小为 k 的最小堆,如果新整数大于最小整数,那么只需用新整数替换最小并更新总和。面试官很满意,让我实现min-heap的代码和实际问题陈述。

  2. 给定 n 台机器及其完成工作的开始时间和结束时间以及 K 条生产线,找出使产量最大化所需的最少额外生产线数量。

    限制条件:一条生产线上一次只能有一台机器工作。它类似于这个问题:https://www.geeksforgeeks.org/maximum-number-of-overlapping-intervals/。

    解决方案:让 m 为最大重叠间隔数,那么如果 m<= k ans 将为 0。否则, ans 将为 mk。如果我被困在任何地方,面试官也会给我提示。

最后,他们会根据他们的领导原则向我提出行为/情境问题。

  • 讲述你做过的任何项目,其中使用了你不知道的新技术。所以,这个问题基本上是在谈论亚马逊的领导原则:深入、学习和好奇

在亚马逊,他们的主要目标是了解您的思维过程、您解决问题的方式以及您获得优化解决方案的速度。因此,始终首先讨论或告诉他们您的方法,然后尝试对其进行优化,并且不要忘记它们非常重要的边缘情况,如果需要,请提出澄清问题并告诉他们您的假设(如果有)然后讨论您的最终方法,这是时间复杂度和空间复杂度,并与其他算法进行比较,如果面试官满意就去实现。

注意:不要在没有与面试官讨论的情况下实施解决方案,因为这肯定是一张红牌,你会被淘汰

第 3 轮:这是最后一轮,由一名经理进行。他先自我介绍,然后让我做自我介绍。之后,他直接跳转到问题解决,问了我2个编码问题

  1. 给出一个由 1 和 0 组成的二维数组,其中 1 表示一个人,0 表示一个空单元格,找出需要撤离的最少人数,以便我们可以阻止新冠病毒的传播并保持社交距离。如果两个 1 在列方向或行方向彼此相邻,则删除其中一个,对角相邻的 1 不需要删除
    Example: 1 1 0
             1 1 1
             1 1 1
    Output:  0 1 0
             1 0 1
             0 1 0
  2. 给定书的一页、光标位置和关键字,返回光标附近包含关键字作为子字符串的前 k 个单词。我只能解决第二个问题。

然后我们讨论我在简历中提到的项目。

所以,无论你在简历上写了什么,都要做好准备,阅读亚马逊的领导原则,并尽可能多地练习编码问题。