目录
正在加载目录...

Amazon SDE VO 四轮高频面经 | Coding + OOD + BQ 分享

六月又陪几个同学过了 Amazon SDE VO ,全都顺利通过。亚麻这套流程已经轻车熟路了,说实话没有那么多花里胡哨的东西——BQ、深挖简历项目、coding、OOD,四轮就这些,高频题来来回回也就那几个方向。搞不定的话可以来约,面前会先 mock 一遍,把这次几个同学遇到的高频题整理出来分享给大家。

Amazon SDE VO 四轮高频面经 | Coding + OOD + BQ 分享

第一轮:Coding

题意 给一棵二叉树和一个目标节点,找出树中所有距离该目标节点恰好为 K 的节点。

思路 这题的坑在于二叉树只能从父到子往下走,但距离 K 的节点可能在父节点方向。我先 DFS 一遍建立父指针映射,把树变成无向图(每个节点不仅知道左右子节点,也知道自己的父节点)。然后从目标节点出发做 BFS,三个方向都能走:左子节点、右子节点、父节点。用 visited 集合记录已经访问过的节点,防止往回走形成死循环。BFS 走 K 步,最后一层访问到的节点就是答案。

时间 O(n),空间 O(n)。面试官一般会追问如果 K 比树的最大深度还大怎么办?答案是直接返回空列表,BFS 走不到那一层自然就退出了,代码不用特殊处理。

第二轮:OOD

题意 设计一个任务调度系统,支持不同的任务类型、优先级,处理任务间的依赖关系和失败重试。

我的设计思路 核心是把业务拆成合理的类:

  • Task 类:记录 task_id、priority、dependencies、status、retry_count 等
  • TaskScheduler 类:维护任务字典 + 优先队列 + 已完成集合

优先级用 PriorityQueue 配合 lt 实现,依赖关系用拓扑排序思路——只有依赖的所有任务都完成后才进入就绪队列。失败重试在执行失败时捕获异常,重试次数没超就重新入队,超限标记 FAILED。

面试官追问方向一般集中在循环依赖检测(拓扑排序记录入度)和并发执行(线程池 + 优先级队列线程安全)。

第三轮:Coding

题意 给定一个无序整数数组,找出最长连续元素子序列的长度,要求 O(n) 时间复杂度。

思路 如果先排序再找是 O(n log n),不满足要求。我把数组转成哈希集合,实现 O(1) 查找。然后遍历每个数,只有当 num-1 不在集合里时,才说明它是序列起点,从起点开始往后数连续长度,更新最大值。

这个解法看起来有嵌套循环,但每个数最多被访问两次,整体均摊 O(n)。

第四轮:BQ

亚麻 BQ 这几个月问得比较集中,基本围绕亚马逊的 16 个Leadership Principles展开 :

  1. Give an example of simplifying a complex problem or creating a novel solution. How was it better than the existing approach?(Invent & Simplify)
  2. Describe a time you had to quickly learn a new skill or domain. How did you approach it?(Learn & Be Curious)
  3. Recall a time you disagreed with a decision but still committed to it. How did you handle it?(Disagree & Commit)

每道题我都用 STAR 格式准备了故事,结果部分一定要有具体数字,这是亚麻面试官最看重的细节。

几点真实建议

这套面经基本就是这几个月亚麻 VO 的高频组合,coding 两轮难度不算顶尖但考察的是经典数据结构的灵活运用,OOD 重点在类设计的合理性,BQ 三道题方向相对固定,提前按这三个 LP 准备好故事基本够用。我们这边带的几个同学都是面前 mock 一遍这几道题加上对应的追问,过的概率都挺稳的,搞不定的话随时可以来约。VO辅助,OA辅助也有。

END