亚马逊面试体验(校内)
亚马逊参观了我们的校园进行 FTE 以及 SDE-I 的实习。
最初的编码测试是在hackerearth上进行的:
1. 大约 18 个基于 CPP 和时间复杂度的 MCQ。
2. 2道编码题:
- 查找包含该字符串的所有不同字符的最短子数组。
- 在 L 和 R(indexes) 之间的数组中找到最大出现的元素,该元素已连接 k 次。
在 MCQ 中以高分完成单个编码问题就足以入围下一轮。
在编码轮次之后,大约有 16 名学生被选中。
第一轮:面试官年轻友好。他让我介绍自己以及我的实习项目。然后他从编码问题开始:
1. 求连接两个节点的路径中所有奇数值节点的总和。我的解决方案是将两个节点的路径存储在向量中,然后在 LCA 之后取所有节点的总和。
2. 实现 sqrt(使用二分查找)。
面试官对我的回答很满意,让我给它们编码,然后试运行它们。
第 2 轮:面试官直接从编码问题开始。他给了我一些标准问题,例如二叉树的俯视图、直方图中的最大面积和连接绳索的最低成本。最后一个问题是:
查找数组中满足 A[i] > A[j] & i < j 的所有对。例如:arr[] = [5, 7, 8, 2, 1],答案应该是:(5, 2)(5, 1)(7, 2)(7, 1)(8, 2)( 8, 1)(2, 1) 总计 : 7
我意识到它基本上是:https://www.geeksforgeeks.org/counting-inversions/。
第三轮:面试官是个很有经验的人,是某个大部门的经理。这一轮似乎是 HR 轮,因为他问了我一些问题,比如——我在过去 1 年中感到最重要的那一刻,我在实习期间遇到的困难等等。
最后他给了我一个设计问题来实现谷歌地图。我想出了不同的方法,最后用贪婪的方法给了他解决方案。然后他告诉我编写 Djikstra 的算法,我这样做了。他还想提出一种算法来获得第二最短路径。
第四轮:面试从介绍开始,他给了我一些编码问题。第一个问题是找到给定节点的有序继任者,给定一个指向该节点的指针。
我问他是否可以做一些假设,所以我想出了一个使用父指针的方法。
下一个问题是基于 Graph。对于给定的有向图,如果我们可以在任何两个未连接的节点之间添加一条边,则找到从源到目的地的最短路径。
我通过形成一个连通矩阵,找到全对最短路径(Floyd Warshall),然后检查 src 和 dest 节点之间的所有中间节点,为他提供了一种解决方法。
他对解决方法感到满意,但问我是否可以提出更好的方法。他最终给出了一个基于 BFS 的解决方案,尽管其中存在很多漏洞。
所有学生都被要求离开并等待结果。
最后他们入围了 3 名学生,我就是其中之一 🙂 。
提示:提出解决方案是不够的。他们想要一个功能齐全的编码解决方案,同时涵盖所有角落案例。
我要感谢 GeeksForGeeks 提出的广泛问题以及可用的解决方案。我不是一个有竞争力的程序员,但是 Leetcode、Interviewbit 和 GfG 等不同的网站确实帮助我解决和学习了广泛的问题。