📜  亚马逊专访 |第 54 组(SDE-1 校外)

📅  最后修改于: 2022-05-13 01:58:35.328000             🧑  作者: Mango

亚马逊专访 |第 54 组(SDE-1 校外)

这是亚马逊通常的面试流程:1 次笔试、1 次电话面试和 4 次 F2F 面试。
有时他们只需要高效的算法,有时只需要简洁高效的生产级代码。大多数情况下,算法和代码都会被问到每个问题。
面试官非常友好。在第一次f2f面试中,我在回答第一个问题时非常紧张和磕磕绊绊,面试官告诉我不要担心,想花多少时间就花多少时间。他的这个表情让我一段时间后平静下来,我能够轻松地解决这个问题。
文章末尾提供了一些问题的解决方案。

笔试(同 Set-53 Amazon Interview Experience):
1. 给定 2 个字符串,判断 2nd 是否是 1st 的子字符串。 (如果你用 KMP 解决那就太好了)
2.给定2个矩形,判断它们是否重叠。
3.给定具有各种价值的硬币列表(每种类型的硬币无限),找出可以产生给定值的方法。 (DP 是预期的。)由于不能保证价值 1 的硬币会出现,如果给定的值是不可能的,我们必须返回 -1。

电话面试:
1. 给你一个整数数组。您必须从哪里(左元素的总和)=(右元素的总和)找到数组中的索引。元素本身被排除在外。
2. 从无序的 DLL 中删除一个节点。算法非常简单。需要编写清晰简洁的代码。
3. 树的锯齿形遍历。他问我是否知道这个问题。我说是的,然后我们继续讨论其他问题。
4. 给你一个整数数组(正数和负数)。您必须找出其中是否存在任何总和为零的数字序列。如果有任何打印开始索引,否则打印-1。
例如: 1 2 3 -1 4 -3 2 是数组,序列是 -1 4 -3,它返回总和为零。
代码和算法,两者都是必需的。

F2F采访1:
1. 找出字符串中最长的偶数回文子字符串。
2. 面试官问我知道的数据结构有哪些。我告诉他很多。他选择了 HashMap 并询问了很多关于它的详细问题。

F2F采访2:
- 告诉我你自己和你目前正在做的工作。
1.写幂函数。例如。 2^3=8。尽可能优化它。简单的。
2. 二叉树中的最长路径。

F2F采访3:
- 告诉我你自己,你的工作,优势和劣势,你在当前工作中面临的挑战,为什么选择亚马逊。
1.具体记不太清了,大概是:从无序循环链表中删除一个值为K的节点。算法是直截了当的。需要生产级工作代码。
2. 2人国际象棋的OO设计。
3. 你有一些包,你必须决定它们的构建顺序。
一个包应该在依赖它的包之前构建。
例如。 A={B,C}, B={D}, C={}, D={E}, E={}, F={}
因此,包“A”的一种可能的构建顺序是 E、D、B、C、A。
您必须编写一个函数,该函数将获取包名称并返回其构建顺序。您有 API,它将返回调用包所依赖的包列表。例如,当您将参数作为包 A 调用时,API 将在列表中返回 B 和 C。

F2F采访4:
-告诉我你的工作和你所面临的挑战。
1. 给你一棵二叉树,其中每个节点都有左、右和下一个指针。 Next 指针最初为空。您必须以这样一种方式修改树,即每个节点的下一个指针都将指向同一级别的下一个节点。
需要编写 O(1) 空间复杂度代码。

例如。

1                                     1
      2       3              ======>   2----------------->3
    4  5        6                    4-->5----------------->6  

答案:
电话面试:
1.它可以是一个递归过程。
例如,对于 7 3 1 4 5 6。我可以编写一个类似“public int getEqualSumIndex(int index, int left_sum)”的过程
我可以这样递归调用它: int right_sum=getEqualSumIndex(index++, left_sum+arr[index])
可以有这样的返回总和:right_sum+arr[index];
我可以这样比较总和:left_sum==right_sum
代码非常容易编写。
4. 我想出了这个算法:从左边开始,通过添加当前元素得到 sum_till_now。将 sum_till_now 和当前索引存储在 HashMap 中。
如果和值重复,则数组中必须有一个序列使和为零。 (重复总和值的相应索引)+1 将是总和为零的序列开始的索引。

F2F 1:
1.最初我认为这是一个DP问题,因为它与“最长回文子串”问题相似,并试图修改该DP解决方案。但由于它是 O(n^2) 空间复杂度解决方案,我被告知在 O(1) 空间中进行。一段时间后,我想出了一个简单的迭代解决方案。在字符串中找到两个相同的字符,然后尽可能扩大其左右。这是一个 O(n^2) 时间解。我编码相同。

F2F 2:
2.二叉树的直径

F2F 3:
3、如果能把它和图联系起来,其实就是拓扑排序。虽然当时我不记得排序的名称,但我向他解释了这个概念,以及我们如何修改 DFS 以获得构建顺序。我编码相同。之后他告诉了我算法的名称。
拓扑排序

两天后,我接到了我被选中的电话。

许多许多祝贺作者。如果您喜欢 GeeksforGeeks 并愿意做出贡献,您还可以撰写文章并将您的文章邮寄至 review-team@geeksforgeeks.org。在 GeeksforGeeks 主页上查看您的文章并帮助其他 Geeks。

亚马逊的所有练习题