Amazon AS 面经|Applied Scientist 全流程复盘:电面 + Loop + Bar Raiser
Amazon Applied Scientist 面试几乎每轮穿插 Leadership Principles,算法和机器学习基础之外还要准备经得起追问的项目案例。本文完整还原 Phone Screen 与 Loop 各轮的真题:不平衡数据、Rand10 采样、手写堆、梯度下降、KNN、优化建模与系统设计。
Amazon Applied Scientist 面试几乎每一轮都会穿插 Leadership Principles 行为面试,因此除了算法和机器学习基础,还需要提前准备真实、经得住追问的项目案例。L4(Entry Level)和 L5(Mid Level)的侧重点不同:L4 更看重基础和潜力,L5 更看重独立建模与落地,L6(Senior)还要展示更大影响范围。
Phone Screen(技术电面)
主要考察基础算法 Coding、机器学习基础知识(ML Breadth),穿插少量 LP 行为问题。通过后才安排 Onsite。这一轮围绕简历和项目展开,面试官会顺着项目不断追问机器学习细节,涉及高度不平衡数据的处理、评估指标(Precision、Recall、F1、ROC-AUC)、SFT 训练流程与 Loss、Bias 与 Variance、过拟合判断与处理、Bagging 与 Boosting 的区别。
比较难的一题是:面对不同分类任务,如何在 Logistic Regression、Decision Tree、Random Forest 和 DNN 之间选择?除了说明各模型特点,还要结合数据规模、特征类型、非线性程度、可解释性和推理成本,讲清各自适合的场景。BQ 两道(主动承担职责外工作却发现缺少经验、深入分析找到根因),都会继续追问技术细节,所以准备项目故事时不能只记 STAR 框架,要把技术原理、方案取舍和量化结果一起梳理清楚。
Loop 第一轮:Coding + LP
两个 senior AS reviewer,自我介绍、讲简历项目后,问一道算法题和两道 BQ(How to deal with tight deadlines、How to dive deep),最后给一个业务问题:对交易来说有哪些 critical features、如何用 ML 筛选出容易让 deal fail 的特征——这题在 LiveCode 里但不写代码,只说思路。
Code 题:给一组日志数据,算出每个用户在规定时间段里的活跃天数,筛出活跃度最少的 5 个用户。表面是哈希表计数,但要求考虑数据量极大时的内存优化,最优方案是哈希表 + 最小堆,且现场不让用 heapq,要自己手写堆结构和调整逻辑。
def top5_least_active(logs, start_day, end_day):
active = {}
for user, day in logs:
if start_day <= day <= end_day:
active.setdefault(user, set()).add(day)
heap = []
for user, days in active.items():
cnt = len(days)
if len(heap) < 5:
heap.append((cnt, user))
heap.sort(reverse=True) # 维护大顶堆简化:堆顶是当前第 5 大
elif cnt < heap[0][0]:
heap[0] = (cnt, user)
heap.sort(reverse=True)
return [u for _, u in heap]
活跃天数要按「去重后的天数」计数,同一用户同一天多条日志只算一次,所以 value 用 set 而非计数器。
Loop 第二轮:Case Study + 优化理论
Principal AS 技术面,先深挖简历项目,随后进入机器学习算法和优化理论:现场实现梯度下降并说明学习率、收敛条件与停止标准;手写 KNN 并讨论距离度量、K 值选择与查询复杂度;介绍牛顿法与梯度下降在收敛速度和计算成本上的区别;凸优化为什么更容易求全局最优、哪些问题有闭式解;原问题与对偶问题、KKT 条件的内容与适用场景。
def gradient_descent(grad, x0, lr=0.01, tol=1e-6, max_iter=1000):
x = x0
for _ in range(max_iter):
g = grad(x)
if abs(g) < tol:
break
x -= lr * g
return x
接着是一道优化建模题:为 Amazon 配送中心设计商品补货计划,在满足需求、供应量和仓储容量约束的前提下,最小化运输成本与库存成本。Follow-up 是部分商品需求过高时采用动态加价,目标函数和最优补货策略会怎么变化。
Loop 第三轮:OOD
自我介绍后先问一道 Ownership 行为题,随后进入 OOD 设计:物品租赁系统,实现 Item、User、Rental 等实体类,通过 Manager 类提供借出、归还和查询接口。重点在类职责是否清晰、对象关系是否合理、能否支持后续扩展。Follow-up 包括增加租赁到期时间和逾期罚金、按名称模糊搜索物品、返回完整物品目录接口、如何设计单元测试。
class RentalManager:
def __init__(self):
self.items = {}
self.rentals = {}
def borrow(self, user_id, item_id):
if item_id in self.rentals:
return None
self.rentals[item_id] = user_id
return self.items[item_id]
def return_item(self, item_id):
return self.rentals.pop(item_id, None)
Loop 第四轮:ML Application + LP
偏机器学习系统设计,面试官通常是 Hiring Manager,题目是广告推荐、CTR 预估等真实业务系统。按「需求澄清、数据与特征、模型选型、训练与离线评估、在线部署、监控与 A/B 测试」的顺序展开。技术问题从 L1/L2 正则化、过拟合、梯度消失、损失函数一直延伸到 Transformer 原理,不能只背定义,要能说明适用场景和优缺点。L4 候选人不一定安排这一轮。
Loop 第五轮:Bar Raiser
主要考察 Leadership Principles,由不属于招聘团队的 Bar Raiser 主持,对最终结果影响较大。L4/L5 重点准备 Ownership、Deliver Results、Customer Obsession、Learn and Be Curious;L6 还要展示 Think Big、Invent and Simplify、Hire and Develop the Best,以及处理分歧的成熟度(Have Backbone; Disagree and Commit)。建议每条 LP 至少准备一个真实案例,整理背景、目标、个人行动、结果和复盘。
FAQ
AS 和普通 SDE 面试最大的区别是什么?
AS 除了算法还要求机器学习基础和概率统计,项目深挖更细:会一路问到你为什么选这个特征、指标怎么定义、模型上线后如何监控,甚至现场推导优化方法和收敛条件。
极大日志数据求活跃最少用户,为什么用哈希表加堆?
哈希表按用户聚合去重后的活跃天数,堆维护「当前最小的 5 个」,数据量极大时不必把全部用户排序,只保留 5 个候选,内存稳定在 O(唯一用户数 + 5)。
参考来源
- LeetCode 470 — Implement Rand10() Using Rand7()
- LeetCode 347 — Top K Frequent Elements
- LeetCode 528 — Random Pick with Weight
联系 VOPathway
如果你希望把这套方法用于自己的 OA 或 VO 准备,可以把目标岗位、当前阶段、面试时间和主要难点发给 VOPathway,我们会据此安排针对性的练习与复盘。
- 微信:Coding0201
- 邮箱:[email protected]
- Telegram:@OAVOProxy
- WhatsApp:+86 178 6396 8105
可提供 OA辅助、OA辅导、VO辅助与 VO辅导。文章用于训练参考,不代表相关公司的官方流程;实际安排请以候选人收到的通知为准。
本文用于面试准备与训练复盘。公司名称仅用于标识题型素材主题,不代表官方合作或录用承诺。
预约一次训练复盘 ↗