亚马逊访问了我们的校园 (MNIT JAIPUR) 进行了 6 个月的暑期实习计划。符合条件的分支机构是 CS、EE 和 ECE。
第 1 轮:在线评估由 4 个部分组成,在 AMCAT 平台上进行。
代码调试: 7 题 C/C++/ Java (20 分钟)
编码: 2 个问题(70 分钟)
- 合并两个已排序的链表
- 检查一棵二叉树是否是另一棵二叉树的子树
工作方式评估: (20 分钟)
推理能力: 24 题(35 分钟)
技术第一轮(90分钟):首先,面试官让我做自我介绍。然后他直接跳到编码问题。
1.) 使用 STL 的运行整数流的中位数
最初,我告诉他使用插入排序的蛮力方法,向他解释了它的复杂性。然后他告诉我优化它,我给了他使用 min_heap 和 max_heap 的解决方案。他似乎很满意,并告诉我编码。
2)他给了我一棵树,让我打印它的不同视图。他说你有一个固定的时间(30 分钟),必须编写这种方法。
- 左视图
- 右视图
- 顶视图
- 反向俯视图
3) 实施细则
- LRU缓存
- LFU缓存
- LRU缓存和LFU缓存的混合
然后他跳转到操作系统,问我关于分页、缓存以及缓存的好处。
Technical Round 2(50 分钟):正式介绍后,面试官直接跳转到编码问题:-
给我一个公司的情况,其中有一个经理层级。经理可以有不同数量的员工在他手下工作。现在,该员工可以拥有不同数量的在该员工手下工作的员工。这可以达到任何级别。
他让我找两个工人中最年轻的普通经理。
解决方案:基本上是在n-array Tree中找到共同祖先的问题。首先我创建了一个 n 数组树,然后给了他 2 种方法
- 使用递归
- 首先,找到从根到该工作线程的路径,然后比较路径并检查第一个不匹配节点之前的节点。
2)如何找到按字典顺序排列的先前排列?
3) 使用最多 k 笔交易的最大利润
https://leetcode.com/problems/best-time-to-buy-and-sell-stock-iv/
我给了他两个解决方案,第一个是使用递归和自顶向下的方法,第二个是使用底部的方法。
最后,10天后公布结果,选了两名学生进行实习。我就是其中之一。
感谢 Geeksforgeeks 帮助我准备面试。