2019 年亚马逊 FT 面试体验(校内)
4轮都是技术轮。
第1轮:
回合以介绍和对项目的简短讨论开始。然后面试官开始提问。
- 对链表进行快速排序
我不得不在纸上写下它的代码。面试官然后问我是否应该继续使用链表或继续做其他事情。我告诉他无论哪种情况我都很好。
- 找到两个链表的交点(它们可能有循环)
首先问题是没有循环。我告诉他我的方法。然后他告诉我在考虑循环的情况下解决它。我讨论了我的方法并为其编写了代码。
第 2 轮:
这一轮再次有2个问题。
- 找到要在数组上执行的最小数量的“+1”操作,使其只有“k”个不同的元素
我最初告诉了一个 O(n³) 解决方案。他告诉我优化它。我将其优化为 O(n²)。他告诉我尝试进一步优化它。我想出了一个 O(n) 方法,但它不适用于特定情况。但是,面试官对此很满意,并告诉我为其编写代码。
- 给定一种化合物,找出其中每个原子的数量。
作为参考,C 6 H 2 (NO 2 ) 3 (CH 3 ) 3
我讲了一种基于堆栈的方法,从右到左遍历字符串。由于时间紧迫,我不必编写代码。
第三轮:
这一轮有2个问题。
- 给定 2 幅图像的四叉树表示,为这 2 幅图像叠加形成的图像构建四叉树。
面试官首先解释了四叉树是什么,以及图像是如何以四叉树的形式表示的。我使用基于递归的方法解决了这个问题。
- 到达第 N步的方法数
我必须为纸上的两个问题编写我的解决方案。
第四轮:
这一轮以介绍开始,然后是对我的项目和实习的详细讨论。然后面试官继续提问。
- 在 BST 中找到第 K个最大的元素
- 实现 LRU 缓存
我只需要为第一个问题编写代码。
尖端:
- 面试官并不期望立即为每个问题提供最有效的解决方案。相反,这样做会使您看起来像是在劫持解决方案。因此,请从您首先想到的方法开始,然后在面试官要求您这样做时进一步优化它。
- 在听完问题后澄清你的任何疑问,否则你最终可能会解决一个错误的问题,这会给面试官留下不好的印象。
- 在您研究方法时与面试官进行对话。面试官可能会指出一些错误并指导您正确的方式。
- 如果您在任何时候遇到困难,与面试官交谈会有所帮助,您也可能会得到一些提示。
- 如果面试官指出你的方法或代码中的错误,不要紧张。只要您以后改正错误,您犯的错误数量就无关紧要。