📜  亚马逊面试经历 |设置 319(校内)

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

亚马逊面试经历 |设置 319(校内)

线上回合:
有 20 个基于基本编程、C 输出问题、操作系统的 MCQ。有 2 个编程问题。
1. 给定一个只有 1 和 0 的数组,你必须最大化这个数组中 1 的数量。您最多可以进行一次翻转操作,该操作可应用于一系列连续索引。我使用了类似最大和连续子数组动态编程方法。这个问题类似于

2. 给你一个链表。对于 i=1 到 n/2,从第 i 个数中减去第 (ni) 个数。最后打印修改后的链表。

技术第一轮:
1. 给定三个数字 A、B 和 M。计算 (A*B)%M。所有数字都在 1 到 10^15 的范围内,以防止溢出。首先,我给出了运行循环 A 次的蛮力方法,每次都将 B 添加到答案中并获取 mod。然后,我通过递归计算 A*B/2 并将其乘以 2,从 O(n) 改进到 O(logn)。面试官要求我为其编写完整的代码。

2. 他问我是否知道trie数据结构,我说知道,所以他让我写trie的节点结构。我写了基本的节点结构。然后他问我是否要添加和匹配精确的字符串,那么我将如何修改节点结构。我告诉他在节点中添加一个布尔值,表示字符串的结束。然后他让我写完整的代码来在 trie root 中添加一个字符串。
第二轮技术:
他问我介绍和之前面试中问的问题。
1. 给定一棵二叉树,打印这棵二叉树的边节点。

2. 给你一个联系人数组。每个联系人包含 3 个字符串:姓名、电子邮件和电话号码。如果这些参数中的任何一个与任何其他联系人的参数匹配,则这两个联系人是相同的。查找相同联系人的组。我建议使用参数字符串作为键,索引作为值的哈希图。然后当我们在 hashmap 中遇到匹配的字符串时,连接这两个联系人索引,就像我们在不相交集快速联合方法中所做的那样。到底。使用查找操作查找匹配的联系人。

第三轮技术:
这次面试主要是基于简历讨论。他向我询问了我的实习和项目,还问了我一些操作系统问题。然后他给了我一道国际象棋题。我得到了 8 个棋子和一个骑士的初始位置。我必须回答我是否可以使用我的骑士移除所有 8 个棋子。然后他简化了问题,现在只有一个棋子。我编写了完整的递归代码来解决这个问题,但时间复杂度是指数级的。然后他问我如何找到可以移除这个棋子的最小步数。我修改了我现有的代码,现在返回了一些步骤。

第4轮技术:
这有点像 HR 轮。最初,他向我询问了我最近的实习工作,并从具体问题开始。在我的任何项目中,我解决的最艰巨的挑战是什么?您在团队中工作时会遇到什么样的问题,如何解决这些问题?你有没有写过不可维护的代码,你为什么写它?你有没有遇到过你提出了一些好的方法,但它们被更高的权威扔进了垃圾箱,你是如何解决的?

亚马逊的所有练习题!