📜  亚马逊面试经历| SDE(1.5 年经验)

📅  最后修改于: 2021-09-23 05:49:14             🧑  作者: Mango

第 1 轮– Amcat 平台上的在线编码轮:
1) 与此类似的前 N 个竞争对手
https://leetcode.com/discuss/interview-question/460127/

2)与此非常相似的问题,将适用相同的 BFS 概念。给定一个 2D 网格,每个单元格要么是僵尸 1,要么是人类 0。僵尸每小时可以将相邻(上/下/左/右)的人类变成僵尸。找出感染所有人类需要多少小时?
示例:输入:[[0, 1, 1, 0, 1],[0, 1, 0, 1, 0],[0, 0, 0, 0, 1],[0, 1, 0, 0, 0]]]
输出:2
前 N 名竞争对手和僵尸问题都非常有趣和具有挑战性。虽然僵尸问题在描述上是扭曲的,但问题的范围是完全一样的。它不是僵尸,而是在尽可能少的天数内更新相邻的服务器。在此之后,在每一轮中,他们都期待最优化和最高效的代码,因为我有 1.5 年的经验。

第 2 轮 – 开始时询问我的工作经验和项目,然后开始提问。这是由 2 SDE 的 PEN-PAPER-ROUND 拍摄的:
1) 将 BST 转换为双向链表,无需对树进行变形,也无需使用除用于创建 List 之外的额外空间。所以这不应该就地完成。我的解决方案的时间和空间复杂度 – 分别为 O(n) 和 O(1)。

2)你得到一个只有 0 和 1 的子数组,最大化包含 1 的子数组,在这个子数组中你只能翻转一个 0 ,告诉那个 0 的索引。类似于这个 https://www.geeksforgeeks.org/find -将要翻转的零点使连续 1 的数量最大化/
我的解决方案的时间和空间复杂度 – 分别为 O(n) 和 O(1)。

第 3 轮(这是一个管理轮)-讨论我的一个项目,然后直接提出问题,更多的是白板轮:
1) https://www.geeksforgeeks.org/minimum-swap-required-convert-binary-tree-binary-search-tree/
首先询问我的方法,然后编码。
2)实现LRU缓存。
关于 Idea 的详细讨论,然后编码 https://leetcode.com/problems/lru-cache/ 我给出了一种类似于这里需要的方法。 get() 的最坏时间复杂度为 O(1),而 put() 的最差时间复杂度为 O(n)。
3) 找出数组中每个元素的下一个更大的元素。我给出了时间和空间复杂度为 O(n) 的基于堆栈的方法,每个从左到右遍历数组,他想使用相同的方法但进一步优化它,所以我想并告诉他我们可以从右遍历数组向左,它减少了比较次数 https://www.geeksforgeeks.org/next-greater-element/
然后我们就领导力原则进行了长时间的讨论。

第 4 轮 –这是由 SDE 拍摄的,他非常乐于助人而且很酷。首先他告诉我他自己,然后问了我,然后他跳到了问题上。他问我树和图的区别,然后他给了我这个问题。

1)我们得到了一个pair的列表,它表示一棵树的边,可以有一条边导致循环的产生,我必须找到一对,这导致循环。如果有多个边形成一个循环,那么我必须从列表中选择最后一个。首先我告诉他,DFS Approach,然后我告诉他 Disjoint Set,他对第二种方法很满意,然后我实现了它并为这个问题写了一个解决方案。时间复杂度 – O(n^2) 其中 n 是输入中给出的列表的长度。

2)找到最小长度的子数组,其元素总和 >= k 类似于 https://www.geeksforgeeks.org/minimum-length-subarray-sum-greater-given-value/
首先我给了他 O(n^2) 方法,然后是 o(n) 窗口技术,然后我为第二种技术编写了代码。

第5轮(由不同的经理拍摄) -由于这一轮开始得太晚,所以我一直很累。他真的很酷。他问了我的情况以及我到目前为止的经历。然后他给了我一个问题,他想要健壮的、高效的代码,仔细考虑每个测试用例。此代码不应崩溃或给出错误的输出。

1)将数组中的每个元素替换为数组中右侧的下一个更大的元素(更大的位置而不是值)所以我告诉他这与第 2 轮中向我提出的问题非常相似,但他仍然想听我的方法并希望我对其进行编码。我给了他方法并对其进行了编码,然后他发现了其中的一些漏洞,这些漏洞可能是崩溃的潜在点以及他在我的代码中不喜欢的一些东西,然后我再次将其编码为他想。他对我的这次尝试很满意。第一个代码运行良好,唯一的错误是没有检查空数组或空数组以及一些重复的代码。
时间复杂度 – O(n),空间复杂度 – O(n)
然后再次讨论项目和领导力方面。在此之后该过程结束。

判决:选择

谢谢,GeeksforGeeks。它对我的准备工作有很大帮助。