SDE 1 的亚马逊面试体验(校内)
第一轮:编码轮
- 代码调试(20 分钟)
- 编码问题(70 分钟):有 2 个编码问题:
所有大小为 K 的子数组的最大值
计算最多包含 K 个不同字符的所有子字符串 - 工作方式评估(20 分钟):MCQ 评估您的行为和态度
- 推理能力部分(35 分钟):基本能力问题
第二轮:技术面试第一轮
时间:1小时
我被要求自我介绍,然后他问了我两个编码问题:
- 给定 4 位数字,以 24 小时格式计算最大时间。我最初想出了一个使用回溯的贪婪解决方案。虽然这个解决方案是对的,但面试官让我考虑另一种逻辑,因为这个逻辑有点复杂,条件太多编码。他通过说关注位数给了我一个提示。然后让我震惊的是,我可以简单地找到这些数字的所有排列并找到最大有效时间。他对这种方法很满意,并要求我对其进行编码。
- 评价分工。我很快就能够使用图表提出解决方案。然后我被要求写一个代码。
我们还讨论了上述每个问题的时间和空间复杂性。
第三轮:技术面试第二轮
时间:1.5小时
面试官让我自我介绍。然后他转向编码问题:
- 给定 N 个人到一家商店的进出时间。然后您将获得 Q 查询。在每个查询中,都会有一个时间戳。您需要告知该时间戳在商店中的人数。他还告诉我Q会很大。
- 显而易见的方法是进行一些预处理,以帮助我有效地回答每个查询。因此,基于此,我告诉他 2 种空间复杂度 O(N) 的方法,每个查询都可以在 O(1) 中得到回答。然后他让我想出一个 O(1) 空间复杂度的解决方案。经过一段时间的思考,我想出了以下逻辑:
在预处理步骤中,只需对进入时间和退出时间数组进行排序。
现在对于每个查询,我们只需要执行二进制搜索来计算答案。
面试官对这种方法很满意,并要求我对其进行编码。 - 创建一个在 O(1) 中执行以下操作的数据结构:- 插入、删除,如果存在,则获取随机值。我在这个问题上挣扎了一段时间。然后他给了我一些提示。在那之后,我能够得到解决方案。然后他让我快速编写解决方案。
- 在这两个问题之后,他开始向我询问我的项目。他问了我一些基本的问题,比如:
- 描述你的项目
- 你遇到了哪些挑战?
- 你在开发项目的过程中学到了什么吗?
- 你是如何与团队的其他成员合作的?
- 开发这个项目使用了哪些技术?
第 4 轮:技术面试第 3 轮
时间:1小时
- 我首先被要求自我介绍。之后,我们就我的实习进行了 15 分钟的讨论,然后就我的项目进行了 15 分钟的讨论。然后他问我一个涉及 OOPS 概念的编码问题:假设您是一个库“Canvas”的作者,该库用于根据给定的坐标制作多边形。假设你已经实现了'绘图函数。现在,我将如何添加能够绘制任何 N 边多边形的额外功能?此外,他希望这个库以这样一种方式实现,即用户能够覆盖它的一些功能。我们讨论了这个问题一段时间,我想出了一个使用正常逻辑和一些 OOPS 概念的方法。他对我的做法很满意。
我被提供了 FTE + Intern。
提示:
- 确保你有效地向面试官传达你的想法。另外,当面试官说话的时候,要仔细听他说话。他很有可能希望你朝某个特定方向思考。