亚马逊访问了我们的校园,提供为期 6 个月的实习机会。有 3 轮 – 一轮在线编程和 2 轮面对面的面试。
在线编码回合(时长:1 小时 30 分钟)
- 这一轮是在hackerrank.com上进行的。有 20 个 mcq 与计算机科学和能力相关。其中许多问题都在 GeeksForGeeks 的 MCQ 部分。并且有 2 个编码问题:
- GeeksforGeeks 链接
Input : m=5,n=5. Mat[] = 1 1 0 0 0 0 1 0 0 1 1 0 0 1 1 0 0 0 0 0 1 0 1 0 1 Output : 5 First: (0,0),(0,1),(1,1),(2,0) Second: (1,4),(2,3),(2,4) Third: (4,0) Fourth: (4,2) Fifth: (4,4)
面对面面试-1(时长:1小时)
- 面试官直接开始提问,没有任何介绍。他问我快速排序和合并排序的最坏情况复杂性。然后问了我两个关于树木的问题:
- https://practice.geeksforgeeks.org/problems/tree-from-postorder-and-inorder/1?我说不。然后他问我是否可以从我说是的数组中制作一个二叉搜索树。然后在讨论了方法之后,他要求编写代码。
- 然后他让我写一棵树的层序遍历的代码。还让我计算代码的复杂度
.
面对面面试-2(时长:约1小时30分钟)
- 面试官从一般的介绍开始。然后他开始提问。
- 给定具有开始时间、结束时间和布尔变量 hasConfilct 的 n 个约会,我们必须设置与其他约会冲突的那些约会的布尔变量 hasConflict。
Example: Appointment1: (2:00-3:00) Appointment2: (2:30-3:30) Appointment3: (4:00-6:00)
我必须将约会 1 和约会 2 的 hasConflict 设置为 true。
最初,我是在 O(n^2) 中完成的。但后来他让我优化解决方案。经过一些讨论,我能够在 O(nlogn) 中解决它。 - 鉴于在 Amazon.in 项目的详细信息页面中仅显示从数据库中动态获取的一个字段,我们必须根据以下行提高性能:
“80% 的用户访问了 20% 产品的详细信息页面。”
我说过我们可以将这 20% 存储在 Web 服务器上,这样我们就不必每次都从数据库中获取项目详细信息。他问我将在哪里以及如何存放它。我回答主内存并将使用 BST 来存储它。然后在关于如何使用 get 和 put 操作的大量讨论(大约 30 分钟)之后,他对解决方案感到满意。 - 给定一个放在内存中的链表,如果同时对链表执行操作会出现什么问题。从这里他开始询问线程,因为答案与之相关。
- 当单线程应用程序转换为多线程应用程序时,操作系统必须做出什么样的改变?
- 当操作系统从一个线程执行转移到另一个线程时,采取了哪些步骤?
最后,我被录用了。感谢 GeeksForGeeks 在整个面试准备过程中帮助我。
亚马逊的所有练习题!