我最近完成了在亚马逊的 SDE-1 面试流程。整体来说,过程紧张但收获颇丰。以下是各轮的详细内容:
📅 第一轮 – 技术面试
这轮面试原本被重排了两次。
1. 面向对象设计题
题目背景:
有学生数据,包含字段:rollNo
(字母数字且唯一)、marks
、name
、rank
(可重复)等等。
任务:
- 编写类和函数来:
- 根据给定的 rank 查询所有该 rank 的学生。
- 根据 roll number 查询特定学生。
我的思路:
- 使用了两个 HashMap:
- 一个用来将
rollNo
映射到Student
。 - 一个用来将
rank
映射到一个学生列表。
- 一个用来将
- 面试官对这个方案比较满意。
后续追问:
- 问了 HashMap 在内部是如何工作的。
- 我解释了它底层的数据结构:bucket 数组、哈希计算、碰撞处理(如链表法或者开放寻址法)、扩容机制等。
- 面试官基于这些点又问了一些更深入的问题。
2. 二叉树 – 统计同时拥有左右子节点的节点数量
题目:
统计一棵二叉树里,有左孩子和右孩子的节点数。
我的思路:
- 使用后序遍历(递归)实现。
后续追问:
- 面试官让我再用迭代方式实现,但我没有来得及写出迭代版本。
📅 第二轮 – DSA + 领导力原则
这轮原本也被安排在其他日期,但面试官没有出现,之后重新安排了。
1. 领导力原则问题
Q: 讲述一次你学习了和工作内容不直接相关的新东西的经历。
2. 追问:
Q: 你在那个技术中最喜欢的是什么?
3. 字符串压缩变体
题目:
给定一个字符串,将每一组相同字符按“字符 + 数量”的形式压缩。如果数量超过 9,则从头重新计数。
- 例如:
s = "aaabbc" → a3b2c1
- 再如:
s = "aaaaaaaaaaabbbcc" → a9a2b3c2
解决情况:
- 采用了优化解法,并成功实现。
4. 美丽节点(Beautiful Nodes)
题目:
给定一个 n x n
的邻接矩阵,找出所有“美丽节点”(beautiful nodes)。
- 若
matrix[i][j] = 1
表示节点 i 与节点 j 相连。 - 美丽节点的定义:
- 该节点与所有其他节点都相连。
- 没有任何节点与它相连。
解决情况:
- 我写出了正确且优化的解法。
📅 第三轮 – 领导力 + DSA
1. 领导力原则
Q: 讲述一次你为了解决问题而深入研究(deep dive)的经历。
- 面试官进行了多次追问,考察深度和逻辑性。
2. 领导力原则
Q: 讲述一次你收到负面反馈并如何应对的经历。
- 面试官同样针对这个问题进行了多次追问。
3. DSA – 最长无重复字符子串
题目:
给定一个字符串,返回其中最长的不含重复字符的子串的长度。
解决情况:
- 使用滑动窗口(sliding window)进行了优化解决。
最终结果
在第三轮结束后,面试官表示:
“Recruiter 会联系你沟通下一步。”
这应该是通过的好信号(我强烈希望)。
🔚 个人感想
- 面试官都很友好且专业。
- 问题既考察了知识深度,也考察了解决问题的能力。
- 亚马逊非常注重领导力原则(Leadership Principles)。
- 不要为了回答领导力问题而编造经历,面试官可能会进行追问,会让你陷入尴尬。
- 没问任何核心学科知识,只考了 LP 和 DSA。
- 建议提前为各个领导力原则想好几个真实故事,做好准备。
希望这能帮到正在准备亚马逊面试的你!