SDE 1 的亚马逊校园面试体验
重点: MustDoCodingQuestion(GeeksForGeeks)、HackerRank
书面回合:
mettl 平台 (https://mettl.com/) 上的 2 个编码问题和 30 个 MCQ。
总时间:1.5 小时。
编码问题:
1.到达终点的最少跳跃次数(https://www.geeksforgeeks.org/minimum-number-of-jumps-to-reach-end-of-a-given-array/)
以 O(n) 时间复杂度求解。
2. 计算数组中的倒数(https://www.geeksforgeeks.org/counting-inversions/)
使用 O(nlogn) 时间复杂度的合并排序解决。
多选题:
树上的问题(BST),给定代码的输出预测(代码以 C、C++ 语言给出)。
就我而言,我已经通过所有测试用例解决了两个编码问题。
第1轮:
我们俩的介绍。
1.询问除了bst、bbst、Heaps、Arrays之外还有什么数据结构来实现HashMap。
讲述了 bst,bbst 方法,并提到我只知道这些数据结构方法的实现,然后他转到下一个问题。
2.检测无向图中的循环(https://www.geeksforgeeks.org/detect-cycle-undirected-graph/)
3.找到第一个访问所有汽油泵的循环之旅( https://www.geeksforgeeks.org/find-a-tour-that-visits-all-stations/ )
4.二叉树中的最大路径和(https://www.geeksforgeeks.org/find-maximum-path-sum-in-a-binary-tree/)
5.通过删除K个连续相同的字符来减少字符串( https://www.geeksforgeeks.org/reduce-the-string-by-removing-k-consecutive-identical-characters/ )
对于问题 3、4,我向面试官提到我已经知道这些问题的解决方案,所以对于这些问题,他只要求解释逻辑以解决它们,而无需编写代码。
对于问题 2、5,需要编写整洁的生产代码,并正确处理所有边缘情况。
第 2 轮:
我们俩的介绍。
1.在相邻之间的差异为1的数组中进行高效搜索( https://www.geeksforgeeks.org/efficient-search-in-an-array-where-difference-between-adjacent-is-1/ )
2.要求详细说明所有范式以及为什么使用范式(DBMS)。
3.要求具体说明进程同步的概念和处理方法,并要求提及所有的进程调度算法。
4. LRU 缓存实现(https://www.geeksforgeeks.org/lru-cache-implementation/)
对于问题 1、4,必须编写整洁的生产代码,并正确处理所有边缘情况。
第三轮:
我们俩的介绍。
1.在一个n数组树中,每个节点可以有一个苹果表示为0(苹果不存在)或1(苹果存在),然后需要找出具有最大苹果数的路径。要求优化时间和空间复杂度。
使用带有一些修改的二叉树直径技术解决。
2.给定一张长椅,有n个座位,坐的人很少,每次有新人坐在长椅上时都告诉座位号,以使他与其他人的距离最大( https://www.careercup.com/question? id=5385816814125056)。在这里,他通过指定我需要为 k 个人找到 k 个这样的位置来扩展这个问题。需要以最佳方式解决。
使用堆概念解决了这个问题。
3.询问操作系统中的生产者-消费者问题,并要求为生产者和消费者编写一个简洁的代码,使用同步机制解决他们的同步问题,而无需忙于等待。并且还要求扩展代码以在分布式环境中工作。
对于问题 1、2、3,必须编写整洁的生产代码,并正确处理所有边缘情况。
栏提升轮:
我们俩的介绍。
1.检查排序数组中的多数元素( https://www.geeksforgeeks.org/check-for-majority-element-in-a-sorted-array/ )
在 O(logn) 时间内使用二分搜索解决。
2.询问当我们输入一个URL时会发生什么以及我们如何能够到达一个站点(预计解释一下域名系统概念)。
对于问题 1,必须编写整洁的生产代码,并正确处理所有边缘情况。
注意:对于所有问题的最佳解决方案,如果坚持得出最佳解决方案,则会给出提示。同样,对于面试中提出的所有问题,他们都提到要编写整洁的生产代码,并妥善处理所有边缘情况。
结论:我在亚马逊获得了全职工作 (SDE 1)。