亚马逊面试经历 | 348 组(用于 SDE II)
最近,我在亚马逊海得拉巴校区接受了 SDE II 职位的增值服务团队的采访。
电话会议:1:15 小时
- 给定一组单词,打印字谜。
- 关于排序算法的问题。
i) 应该使用什么排序算法对字符串进行排序?
ii)何时合并排序优于快速排序? - 这个问题是基于拓扑排序的。问题是围绕 Maven/Gradle 的工作提出的。给定要安装的软件包的依赖关系。
例如,
A -> B, C, D (这意味着 A 依赖于 B, C & D。因此, B,C & D 应该在安装 A 之前安装)
B -> F
D -> E
打印应安装软件包的顺序。
后来这个问题被修改并问:
给定包的顺序,判断是否具有给定的依赖项,是否可以按给定的顺序安装包。
第 2 轮:(面对面)1:20 小时
每次 f2f 采访都由两位采访者进行。一个在提问,另一个在观察候选人的行为🙂
- 这一轮几乎涵盖了从当前项目到数据结构和问题解决到行为问题再到高级设计的所有内容。
- 给定一个数组,找到最大的连续和。数组可以有 +ve 和 -ve 元素。
- 两个链表的总和,并将结果存储在第三个链表中。
行为问题:
- 你是如何帮助你的同事的?
- 举例说明您提出了某种方法但您的团队负责人不喜欢,以及您是如何说服他的。
设计问题:设计 BookMyShow 网站。问我,我将如何设计 UI 页面?
我不喜欢 BookMyShow 的哪些方面?然后设计数据库、表、约束等。
我完全掌握了这一轮。
问了我目前正在开发的产品的架构。让我用 20 分钟画出框图和不同组件之间的交互。
后来转到数据结构和解决问题的问题。
第三轮:(面对面)1:30 小时
问了我目前的项目。
我的这一轮并不顺利。这纯粹是关于数据结构的。
- 给定一棵二叉树,找到具有最大 BST 根的最大 BST 子树。
GeeksforGeeks 链接
我给出了最初的方法,我想在 Inorder 中遍历树并将其存储在一个数组中。
之后找到元素以递增顺序出现的子数组。采访者展示了这种方法的一些问题。
后来将方法修改为自下而上的方法。方法很好,但我无法编写清晰且运行的代码。 - 面试官很困惑是否让我进入下一轮。他又问了我一个问题:
给定一个排序的字母数组,找出每个元素的计数。告诉他二进制搜索的方法,他很满意。
GeeksforGeeks 链接
第 4 轮:(面对面)1:30 小时
问了我目前的项目。
这一轮完全是在设计上。
- 给定一张带有一些Java代码的纸。我需要审阅代码并作为审阅者提供评论。
- 设计像网站一样的调查猴子。
更多的重点是创建/编辑调查的管理员相关活动,显示管理员用户创建的所有调查。
为管理员创建的每个调查生成一个唯一链接。
从 UI 页面设计开始,到调查中的每个 CRUD 操作应通过 Ajax 调用将哪些信息发送到服务器。
用于存储调查信息的每个表的结构。作为开发人员,我将如何在服务器端创建分层架构。
分层架构:Ajax -> Servlet -> 用于调查上的 CRUD 操作的类 -> 事务处理程序 -> 持久层这一轮非常令人满意,一切都很顺利。
第 5 轮:(面对面)1:00 小时
本轮由增值服务团队经理主持。
他非常友好,并给出了自己的介绍。
问了我目前的项目。
- 给定一个字母数组和一个英文单词字典。
我需要找到可以从这些字母中形成的最大可能的有效字典单词。
我经历了存储字典单词的 Trie 方法。
GeeksforGeeks 链接 - 设计 Outlook 会议请求处理程序,一个低级设计问题。
我给出了一些解决方案,他似乎很满意。 - 行为问题:举个例子,当你提出一些想法但被产品经理拒绝时。
拒绝这个想法的原因。
对于 SDEII,不仅仅是数据结构和问题解决,亚马逊还寻找设计和方法。
所有的面试官都非常友好,他们在面试过程中提供帮助。
始终尝试从给定的问题中了解面试官在寻找什么。如果不清楚,请毫不犹豫地清楚地询问他们。