Amazon NG OA 是出名的"宽松"——通过率 25-35%,一亩三分地的反馈普遍是"两道 Coding 全 AC + Work Style Survey 不踩雷"就能进。但 OA 通过后的 VO Loop 才是真正的淘汰主力:4 轮面试,Bar Raiser 一票否决,2026 cycle 整体录用率约 20%。
本文聚焦 OA 通过后的 Onsite Loop,不再重复 OA 内容(OA 详见我们的Amazon NG OA 2026 攻略),重点拆 Coding 1+2 + System/LLD + Bar Raiser BQ 四轮的真题、评分、与 16 LP 的对应。
Amazon NG VO Loop 总览
| 轮次 | 时长 | 内容 | 评分官 |
|---|---|---|---|
| 1. Coding Round 1 | 60 min | 1 道 LC Medium + 2-3 个 LP 问题 | Senior SDE I |
| 2. Coding Round 2 | 60 min | 1 道 LC Medium-Hard + 2-3 个 LP | Senior SDE II |
| 3. System / LLD Round | 60 min | OOD 设计题(NG 多为 LLD)+ 2 个 LP | Tech Lead / Senior |
| 4. Bar Raiser | 60 min | 0-1 道轻 coding + 5-6 个深度 LP | Bar Raiser(不与 hiring team 利益相关) |
关键变化(2026 cycle):
- Bar Raiser 从原来的"40 min 行为 + 20 min coding" → 2026 起改为 50 min 行为 + 10 min 轻 coding——更看 LP fit
- System Design 对 NG 转为 LLD(low-level design)——OOD 类似 Parking Lot / Library System,不是分布式系统
- 每轮独立打分,但 Bar Raiser 拥有"事实否决权"——hiring team 即使 4 个 strong hire,Bar Raiser no hire 通常不发 offer
Coding Round 1 + 2:典型真题
真题 1:Server Cluster Health Monitor(Coding 1,2026 春最高频)
题面:给 n 台 server 的 heartbeat 时间序列,每 server 每秒发一次心跳。要求:
register(server_id, ts):记录 server 在 ts 发了心跳failed_servers(now, k_seconds):返回 [now - k_seconds, now] 内没有任何心跳的 server 列表(按 server_id 升序)
坑:n 可能 1e6,naive 扫描会 TLE。
from collections import defaultdict
from sortedcontainers import SortedList
class HealthMonitor:
def __init__(self):
self.last_seen = {} # server_id -> latest ts
self.by_ts = SortedList() # (last_ts, server_id) for fast filtering
def register(self, sid, ts):
if sid in self.last_seen:
self.by_ts.remove((self.last_seen[sid], sid))
self.last_seen[sid] = ts
self.by_ts.add((ts, sid))
def failed_servers(self, now, k):
# all servers ever registered
threshold = now - k
# find servers whose last_seen < threshold OR never seen → never seen 不在 last_seen 里,得另外传 known servers
failed = [sid for sid, ts in self.last_seen.items() if ts < threshold]
return sorted(failed)
面试官追问:
- "如果 server 数量到 1e7 怎么扩展?" → 推 partition by server_id mod N,并行扫描
- "如果 register 调用频率非常高,by_ts 的 SortedList 会不会成为瓶颈?" → 改 lazy delete + 定期 rebalance
真题 2:Order Batching with Constraints(Coding 2,难度更高)
题面:n 个订单,每个有 (deadline, weight)。一个 batch 最多 W 重量,且 batch 内所有订单的 deadline 必须 ≥ batch 完成时间(每 batch 处理时间固定 t)。求最少 batch 数。
思路:贪心 + 优先队列——按 deadline 升序处理,能塞就塞,塞不下开新 batch。
import heapq
def min_batches(orders, W, t):
orders.sort(key=lambda x: x[0]) # by deadline
batches = [] # list of (current_batch_finish_time, current_weight)
open_batches = [] # min-heap of finish_time
count = 0
current_time = 0
cur_weight = 0
cur_deadline = float('inf')
for d, w in orders:
if cur_weight + w > W or d < current_time + t:
# close current batch, start new
if cur_weight > 0:
count += 1
current_time += t
cur_weight = w
cur_deadline = d
else:
cur_weight += w
cur_deadline = min(cur_deadline, d)
if cur_weight > 0:
count += 1
return count
LP 联动:Coding Round 结束前 5-10 分钟会问 1-2 个 LP 故事(最常问 Customer Obsession 与 Deliver Results),所以别把 50 分钟全用在 coding 上——必须留 10 分钟给 LP。
System / LLD Round:典型 OOD 题
高频真题:设计一个简化的 Amazon Parcel Locker System
要求支持:
assign_locker(parcel_id, dimensions):根据 parcel 尺寸找最小可用的 lockerpick_up(parcel_id, code):用户取件,code 验证track_metrics():返回今日总投放数、平均存放时长、利用率
评分维度
| 维度 | 减分回答 | 加分回答 |
|---|---|---|
| 类设计 | 把所有逻辑塞 LockerSystem 一个类 | 拆成 Parcel / Locker / LockerBank / LockerService |
| 数据结构 | List 线性扫 | 按尺寸用 size-class buckets(Small/Medium/Large/XLarge),每 bucket 一个 free queue |
| 并发 | 不提 | assign_locker 与 pick_up 用 fine-grained lock per LockerBank |
| 失败处理 | 不提 | code 三次错误 → notify support; locker 满 → 推送替代取件点 |
| 扩展性 | "我会用数据库" | 提具体 schema:locker、parcel、event_log 三张表,event_log 是事实表 |
推荐回答时间分配(60 分钟)
0-5 min 理解需求 + clarifying questions
5-15 min 核心数据模型(class diagram + DB schema)
15-30 min API 设计 + 关键算法(assign / pickup / metrics)
30-45 min 并发 / 扩展 / 失败处理
45-50 min 监控 / 测试策略
50-60 min 2 个 LP 问题(必有)
Bar Raiser BQ:16 LP 完整对应表
Amazon 2024 把 LP 从 14 条扩到 16 条(新增 Strive to be Earth's Best Employer 和 Success and Scale Bring Broad Responsibility)。Bar Raiser 通常会从中挑 5-6 条深挖。
16 条 LP × 推荐故事类型
| LP | 推荐故事方向 | 高频开场问题 |
|---|---|---|
| Customer Obsession | 客户痛点驱动的项目改造 | "Tell me a time you used customer feedback to improve a product." |
| Ownership | 接手烂摊子项目并完成 | "Describe a time you took on something that wasn't your job." |
| Invent and Simplify | 用新方法解决老问题 | "Walk me through a time you proposed a simpler solution." |
| Are Right, A Lot | 和团队 disagree 但你对 | "Tell me about a decision others disagreed with." |
| Learn and Be Curious | 学一个全新技术栈 | "How do you keep learning?" |
| Hire and Develop the Best | mentor 学弟学妹 | "How have you helped others grow?" |
| Insist on Highest Standards | push 团队提升质量 | "Tell me about a time you raised the bar." |
| Think Big | 把项目从 small scope 扩大 | "When did you advocate for something ambitious?" |
| Bias for Action | 缺信息但快速决策 | "Tell me about a time you took action with incomplete data." |
| Frugality | 用更少资源做更多事 | "How have you done more with less?" |
| Earn Trust | 修复破裂的 trust | "Tell me about regaining someone's trust." |
| Dive Deep | 深挖 root cause | "Tell me about a complex problem you investigated." |
| Have Backbone; Disagree and Commit | 反对但执行 | "Describe a time you disagreed with your manager." |
| Deliver Results | 在压力下交付 | "Tell me about a high-pressure deadline." |
| Strive to be Earth's Best Employer ⭐NEW | 改善团队体验 / DEI | "How have you helped foster team well-being?" |
| Success and Scale Bring Broad Responsibility ⭐NEW | scope 扩大后承担更多责任 | "How do you think about your work's broader impact?" |
Bar Raiser 评分公式(一亩三分地反推)
最终分数 ≈
0.35 × LP fit (是否有 8+ 条 LP 可对应的故事)
+ 0.25 × Story specificity (具体到 metric / decision tree)
+ 0.20 × STAR 完整度 (Situation, Task, Action, Result)
+ 0.10 × 反向问题质量
+ 0.10 × 沟通风格 (节奏、自信、不傲慢)
强烈建议:在 onsite 前写 12-16 个 STAR 故事,每个故事对应至少 2 条 LP,做到任意一条 LP 都有 1-2 个故事可讲。
薪资 Range(2026 NG L4 SDE)
| 城市 | Base | RSU (4yr 5/15/40/40) | Sign-on Y1 | Sign-on Y2 | Y1 Total |
|---|---|---|---|---|---|
| Seattle / Bellevue | $170-180K | $130-160K | $30-50K | $25-40K | ~$210-250K |
| NYC / Bay Area | $180-195K | $140-170K | $35-55K | $30-45K | ~$225-265K |
| Austin / DC | $160-175K | $120-150K | $25-45K | $20-35K | ~$195-235K |
关键点:
- RSU vesting 5/15/40/40:第一年只 vest 5%,但前两年的 sign-on 弥补,所以 Y1 + Y2 比 Google / Meta 4-year flat 反而更高
- Y3-Y4 stock cliff drop——大量 NG 在 Y2 末跳槽(典型 Amazon "Y2 跳板")
- Bar Raiser strong hire 可以谈到 base + RSU 多 10-15%
时间线(OA 通过到 Offer)
Week 0 OA 通过邮件
Week 1-2 Recruiter Call + 安排 onsite 时间
Week 3-4 Onsite Loop(一天连跑 4 轮,全 Zoom)
Week 5-6 Hiring Manager 内部 calibration + 写 hiring document
Week 7-8 Offer Letter 发出 / 协商
Week 9 接 offer (deadline 通常 7-14 天)
重要 timing:Amazon 标准 offer deadline 是 7-14 天,比 Google / Meta(21+ 天)短。如果你在 Amazon 之外还在面,进 onsite 前主动把 Amazon 时间线往后推 2 周。
FAQ
Q1:Amazon NG VO 通过率到底多少?
OA 通过后 VO 通过率约 20-25%——比 Google / Meta NG(10-15%)友好。但Bar Raiser 一票否决,4 轮全过但 Bar Raiser no hire 仍然会 reject。最关键变量是 Bar Raiser 评分,它的权重占整个 loop 的 35-40%。
Q2:Amazon NG VO 一定要准备 16 条 LP 吗?
至少准备 12 条。Bar Raiser 通常深挖 5-6 条,hiring team 4 个面试官每人挑 2-3 条,总会触达 12+ 条。不必每条 LP 写专门故事——同一个故事映射 2-3 条 LP 是常见做法(例如"重写老代码"可同时讲 Ownership + Insist on Highest Standards + Dive Deep)。
Q3:Amazon NG VO 用什么语言写代码?
Python / Java / C++ 三选一最稳,Python 是 NG 主流。JavaScript / Go 慎用——并非不允许,但 Amazon 内部代码主要 Java,面试官追问时容易露怯。用你最熟的,不要为 culture fit 切换。
Q4:Amazon Bar Raiser 是怎么打分的?
Bar Raiser 是与 hiring team 没有利益冲突的 senior engineer——他们不属于这个 team,没动力"收人凑数"。打分严格按 16 条 LP,只 hire 能"raise the team's bar"的 candidate。被 Bar Raiser 评 "no hire" 大概率不发 offer,即使 hiring manager 想要你。
Q5:Amazon NG VO 失败后多久能再投?
6 个月 cooldown——比 Google / Meta(12 个月)短。但 Amazon 内部记录会保留,第二次面试时 Bar Raiser 会刻意更严。强烈建议第二次投递前写一封"reflection letter"主动复盘上次失败点(recruiter 会附在 packet 里)。
Q6:Amazon NG L4 vs L5 怎么判定?
NG 默认 L4(SDE I)。升 L5(SDE II)需要 candidate 在 onsite loop 表现出"L5 行为":在系统设计 / Bar Raiser 中展示出独立 ownership、多团队协作经历、scope > 一个 feature。多数 NG 不会直接给 L5,但 Bar Raiser 强 hire 偶尔会触发"upgrade conversation"。
联系方式
如果你正在准备 Amazon NG / SDE II Loop,Coding 已不是关键变量——Bar Raiser BQ 才是 70% 候选人的失利点。我们整理了 Amazon 2025-2026 cycle Bar Raiser 高频 60 题 + 16 LP × 故事映射模板 + STAR 写作工坊,欢迎联系交流。
立即添加微信 Coding0201,获取 Amazon Loop 真题与 Bar Raiser mock。
- Email:[email protected]
- Telegram:@OAVOProxy