‹ 全部面经
9.4 Amazon SDE 26NG 四轮 VO(已 Offer):三轮 BQ + 路径总和 II
Amazon SDE 26NG 四轮 VO 拿 Offer:三轮 BQ 深挖技术分歧、用户体验差的功能、上线事故,只有一轮 Coding 考二叉树路径总和 II(DFS + 回溯),Follow-up 节点有负数。
Amazon
VO
面试概况
这两天面完了四轮,九月 Amazon 收获一个 Offer 🎉 先分享面经。
四轮里只有一轮技术面,其他三轮看你遇到问题是怎么解决的。
第一轮:BQ
开始自我介绍,然后提问:
- 分享一次技术分歧以及解决的经历。
Follow-up:数据迁移怎么做?回滚方案是什么?为什么不全量切流量?
第二轮:BQ(无 Coding)
- 讲一个上线后用户体验很差的功能案例。
追问:怎么定位瓶颈?怎么衡量优化效果?质量和速度怎么取舍?
第三轮:BQ(无 Coding)
- 有没有上线后出现问题的经历?
我讲的是一次接口出问题的经历。面试官追问后来是怎么解决的,我回答的是:先同步风险,再把降级分成核心接口和非核心接口,优先保证核心链路没问题。
第四轮:Coding —— 路径总和 II
题目:给一棵二叉树和一个目标和,找出所有从根到叶子、路径和等于目标的 paths。
思路:DFS 遍历每个节点,按路径回溯保存结果。如果还需要优化空间复杂度,就把路径记成全局变量,回溯时弹出,避免每层都复制列表。
def path_sum(root, target):
res, path = [], []
def dfs(node, remain):
if not node:
return
path.append(node.val)
remain -= node.val
if not node.left and not node.right and remain == 0:
res.append(path[:])
dfs(node.left, remain)
dfs(node.right, remain)
path.pop() # 回溯
dfs(root, target)
return res
Follow-up:树节点有负数怎么处理? —— 有负数时,不能在路径和超过目标时提前剪枝,因为后面的负数可能把和拉回来,必须走到叶子才能判断。上面的写法本身就不依赖剪枝,所以直接适用。