亚马逊最近访问了我们的校园,招聘实习生进行 6 个月的实习。
第 1 轮:在线测试
第 1 轮是 90 分钟的在线测试。它托管在 HackerRank 平台上。有 20 个 MCQ 问题和 2 个编码问题。 MCQ 问题每题 1 分。每个错误的 MCQ 答案都有 0.25 的负面标记。 MCQ 问题来自数据结构、DBMS、能力等。
编码问题是:
一季度。反转给定字符串的单词
Q2。电话号码中的可能词
注意:至少做一个编码问题来完成这一轮是非常重要的。即使你的 20 个 MCQ 都答对了,但你没有做任何编码问题,那么你被选中的机会也非常低。我建议每个人在最初的 30 分钟内做他们能做的所有 MCQ,然后在最后的 60 分钟内用于编码问题。
我做了 15 个 MCQ 和 2 个编码问题。我被选中参加下一轮。总共有19名学生被选中进入下一轮。
第二轮:面试
面试官首先问我关于我在简历中提到的一个项目。然后他问了我两个问题。
一季度。我们得到一个映射:A 被映射到 1,B 被映射到 2,C 被映射到 3……Z 被映射到 26。我们得到一个数字 n,我们必须告诉它可以形成多少个不同的字符串使用给定的映射编号 n。例如,
输入:121
输出:3
解释:我们可以将数字 n 读作 1、2 和 1。形成的字符串将是 ABA (1=A, 2=B)。我们也可以将数字 n 读作 12 和 1。形成的字符串将是 LA (12=L, 1=A)。我们也可以将数字 n 读作 1 和 21。形成的字符串将是 AU (1=A, 21=U)。所以我们可以使用给定的映射从数字 121 中形成最多 3 个不同的字符串。
我给出了一个递归的解决方案,面试官对我的解决方案很满意。所以他让我把我的解决方案写在一张纸上。我编写了解决方案,然后他检查了我的代码。一旦他满意了,我们就继续下一个问题。
Q2。 https://www.geeksforgeeks.org/remove-bst-keys-outside-the-given-range/
过了一会儿,名单公布了。 10名学生入围下一轮。我也进入了下一轮的候选名单。
第三轮:最终面试
这是整个过程的最后一次采访。面试官先让我做自我介绍,然后问了我的一个项目。然后他问了我几个问题,具体如下:
一季度。什么是二叉树? BT 中有哪些不同类型的遍历?这些遍历有什么区别?哪个遍历基于BFS,哪个基于DFS?
我恰当地回答了问题。他对我的回答很满意。
Q2。螺旋形式的层序遍历
一旦我给了他解决方案,他就让我把它写在纸上。他用一些测试用例手动检查了我的解决方案。一旦他满意了,我们就进入下一个问题。
Q3。什么是最大堆?什么是最小堆?堆在现实生活中有哪些应用?
第 4 季度。如何插入堆?什么是时间复杂度?
Q5.如何从最小堆中删除最小元素?什么是时间复杂度?
Q6.给定一个包含 n 个数字的数组,我如何从该数组构建一个最小堆。什么是时间复杂度?
我恰当地回答了他。我告诉他我们可以在 O(n) 的时间复杂度内解决上述问题。然后他让我证明复杂度是 O(n)。我用一个示例数组证明了这一点。他对我的回答很满意。
Q7.有来自一些无限数字列表的恒定数字流,您需要从中维护数据结构,以便在任何给定时间点返回前 100 个数字。假设所有数字都只是整数。
Sol:我给了他一个使用 min-heap 的解决方案。我们可以创建一个包含 100 个元素的最小堆。前 100 个元素很容易处理。假设我们得到了列表中的第 101 个元素。如果这个数字小于二叉堆的根,那么我们不需要做任何事情。如果这个数字大于二叉堆的根,那么我们需要用这个元素替换根元素,并在二叉堆的根上调用 percolate-down 过程。
我的面试官以这个问题结束了我的采访。
我建议每个人在选择亚马逊之前,先通过 geeksforgeeks.com 至少 5 人的亚马逊面试经历。最后,我会说重点是数据结构、操作系统、DBMS 和网络。在数据结构中,主要关注二叉树、二叉堆和链表。