第1轮:
- 说说你自己。
- 截留雨水:给定 n 个非负整数表示高程图,其中每个条的宽度为 1,计算下雨后能够截留多少水。
- 打印二叉树的左视图。
讨论:我给出了两种方法,一种使用 DFS,另一种使用级别顺序遍历。
他要求比较两种方法并实施有效的方法。 DFS 是高效的,因为按照层级顺序,您需要存储每一层的所有节点,其中一些可能不是 BT 左视图的一部分。
第二轮:
- 说说你自己。
- 查找 BST 中第 k 个最小元素之后的 n 个元素的总和。树很大,你是
不允许遍历树。
讨论:由于不允许数组遍历,所以我们需要对树做一些预处理,比如存储其所有前驱节点的总和。为了找到第k个最小元素,使用顺序统计方法: - 给定一个已旋转 n 次的排序数组。找出 n 的值。它类似于下面的帖子,您只需要找到枢轴元素。如果您有枢轴元素的索引,则可以获得数组旋转的次数。
第 3 轮:
- 数数到达第 n 级楼梯的方法。
它类似于斐波那契数列。面试官问了实现同一个-Recursion,一维数组的各种方法,每个有3个变量和复杂度。
- 设计推荐引擎。
这就像自动建议。我给出了尝试的方法。面试官似乎对这种方法很好,并要求我编写具有时间和空间复杂性的完整代码。尝试的实现:
尝试 | (插入和搜索)
第 4 轮(管理轮 – 通过视频通话)
- 说说你自己。
- 当前工作
- 你最喜欢哪个项目。
- 任何与您的经理发生冲突的情况。
- 您向您的团队提出的任何想法/技术都得到了实施和解决。
- 任何情况下,当您不得不走出舒适区时。
- 从您的经理/团队成员那里收到的最重要的反馈。
- 除了您的项目工作之外,您还做什么来增强您的技术知识。
还有很多。
第 5 轮(最后一轮 – 电话)
- 最初,我被问到关于我所做的工作、我所做的项目和一些管理问题的问题。
- 然后我得到了一个编码问题来解决。他们在电话屏幕面试中使用 Collabedit 工具,其中面试官和受访者共享同一个屏幕。
问题:打印两个给定句子中的所有非重复单词。
例如。陈述 1:我有一支蓝色钢笔。
陈述2:我有一支红笔。
输出:蓝色变成红色
讨论:我建议使用散列方法。面试官要求实施相同的。
注意事项:
- 你必须知道如何计算时间和空间复杂度
- 在每一轮中,他们都会问你最近做过的项目/你最喜欢工作的项目/最具挑战性的工作等——所以你应该为至少一个具有深入细节的项目做好准备。
- 对所问的每个问题从朴素的方法开始,然后继续进行具有更好空间和时间复杂性的解决方案。
- 无需浪费时间阅读操作系统、网络、DBMS 等。他们只关心您所做的项目和您的编码技能,无论您在编写代码时是否涵盖所有边缘情况,了解时间和空间复杂度,是否有更好的方法来解决相同的问题问题等等。
亚马逊的所有练习题!