Amazon 面试题型总结整理:OA、SDE VO、System Design、Applied Scientist 和 Leadership Principles 怎么准备
Amazon 面试题型总结整理:OA、SDE VO、System Design、Applied Scientist 和 Leadership Principles 怎么准备
Amazon 面试准备必须同时看 technical 和 Leadership Principles。近期面经里,SDE/Intern 常见 OA、phone/VO coding;SDE2+ 常见 system design;Applied Scientist 方向则有 ML、项目和研究讨论。Work Style Survey/LP 行为题也常影响整体信号。
本文基于近期公开面经标题和本地整理信号,不代表官方流程。
近期面经信号
- SDE Intern/NG 常见 OA、coding、VO。
- SDE2/L5+ 常见 system design + coding + behavioral。
- Applied Scientist 常见 ML phone screen、VO、project/research discussion。
- Work Style Survey 和 Leadership Principles 在流程里经常被提到。
面试真题题目合集
下面是 Amazon 相关面经里出现过的题目和题型摘要:
- Aurora storage architecture。
- Aurora replication model。
- WAL / redo recovery。
- MVCC 和 lock conflict。
- Consistency / latency / throughput trade-off。
- Weighted random generator:
add(value, weight)。 - Weighted random generator:按权重 sample。
- Temp sensor system over wide region。
- OA:primary/backup server memory pairing。
- OA:让 server computational power 非递减。
- OA:对连续 segment 增加 x,最小化总增加。
- S3 system design:upload/download API。
- S3 design:chunk files。
- S3 design:backend storage backup。
- S3 design:datacenter failure。
- LLM quality validation system。
- OOD:keyboard + mouse input system。
- OOD:course registration system。
- Coding:build graph。
- Applied Scientist:RAG evaluation。
- Applied Scientist:ragas metrics。
- Applied Scientist:expert ground truth vs LLM-as-judge。
- Project ML follow-up。
- Leadership Principles:ownership、conflict、failure、customer obsession。
真题整理与分析
Amazon 的题型跨度很大:OA 算法、OOD、AWS infra、数据库内核、Leadership Principles 都可能在同一轮里出现。
真题 1:Aurora / database internals
题目大意:围绕 AWS Aurora 或数据库系统,追问 storage architecture、replication、WAL/redo recovery、MVCC、lock conflict、consistency/latency/throughput trade-off。
考点分析: SDE3 或数据库组候选人不能只答“主从复制”。要能讲 log-structured storage、quorum、read replica、crash recovery、事务隔离级别,以及为什么云数据库把 compute/storage 分离。
真题 2:Weighted random generator
题目大意:实现 add(value, weight) 和 sample(),要求按 weight 比例随机返回 value。
考点分析: 基础解法是 prefix sum + binary search。follow-up 会问动态更新、多次 add、删除、并发读取。可以讨论 Fenwick tree 或 segment tree 来支持更新和采样。
真题 3:OA:服务器 primary/backup 匹配
题目大意:给服务器内存,给每个 primary 找 backup,要求 backup memory 大于等于 primary,计算最多或最优配对。
考点分析: 这是排序 + 双指针/贪心。准备时要说明为什么小 primary 应该先匹配能满足它的最小 backup,避免浪费大资源。
真题 4:OA:让计算能力非递减
题目大意:可以对连续 segment 增加某个 x,目标让数组非递减,并最小化总增加量。
考点分析: 这题看差分思维。遇到 a[i] < a[i-1] 时,需要补足差值,累计操作成本。要小心 segment 操作定义,如果一次操作能覆盖后缀,解法会不同。
真题 5:System design:S3 上传下载 / LLM quality validation
题目大意:设计 S3 类文件上传下载系统,支持 chunk、backup、datacenter failure;也有组问 LLM quality validation system。
考点分析: Amazon 系统设计很看 operational excellence。S3 题要讲 multipart upload、checksum、metadata、replication、read-after-write、一致性和故障演练。LLM quality 题要讲评测集、human label、自动指标、回归检测和上线门禁。
高频题最优解速查
Weighted random generator
最优解思路: 静态权重用 prefix sum + binary search。sample() 生成 [1,total] 的随机数,在 prefix 中找第一个 >= target 的位置。动态更新权重时,用 Fenwick tree 或 segment tree。
复杂度: 静态 sample O(log n),动态 update/sample O(log n)。
面试要讲的边界: weight 为 0;total overflow;随机数区间闭开;如何测试分布是否接近权重。
OA:primary/backup server matching
最优解思路: 排序后双指针。primary 从小到大,backup 也从小到大,给每个 primary 找能满足它的最小 backup,避免浪费大 backup。
复杂度: O(n log n) 排序,扫描 O(n)。
面试要讲的边界: primary 和 backup 是否来自同一数组;一个 backup 是否只能用一次;相等是否满足;无法匹配时返回什么。
OA:让 computational power 非递减
最优解思路: 如果允许对后缀/连续段增加值,核心是差分。扫描数组,遇到 a[i] < a[i-1] 时需要补差值,把后续有效值抬高,并累计操作成本。
复杂度: O(n)。
面试要讲的边界: 操作是任意连续段还是后缀;x 是否必须正数;最终数组是非递减还是严格递增。
S3 multipart upload
最优解思路: 文件切 chunk,每个 chunk 有 upload id、part number、checksum、status。客户端并发上传 parts,服务端完成后合并 manifest。metadata 和 data 分离,跨 AZ/region replication。
复杂度: 上传吞吐取决于 chunk 并发;metadata lookup O(1) 或 O(log n)。
面试要讲的边界: chunk 重试、重复 part、checksum mismatch、断点续传、读写一致性、datacenter failure。
可直接练习的答案骨架
Coding sample:Weighted random generator
import bisect
import random
class WeightedRandom:
def __init__(self):
self.values = []
self.prefix = []
self.total = 0
def add(self, value, weight):
if weight <= 0:
return
self.values.append(value)
self.total += weight
self.prefix.append(self.total)
def sample(self):
if self.total == 0:
raise ValueError("no values")
target = random.randint(1, self.total)
i = bisect.bisect_left(self.prefix, target)
return self.values[i]
OOD class definition:Course registration
from dataclasses import dataclass, field
@dataclass
class Course:
course_id: str
capacity: int
enrolled: set = field(default_factory=set)
waitlist: list = field(default_factory=list)
class RegistrationSystem:
def register(self, student_id: str, course_id: str):
raise NotImplementedError
def drop(self, student_id: str, course_id: str):
raise NotImplementedError
def get_roster(self, course_id: str):
raise NotImplementedError
System design:S3-like object storage
flowchart LR
Client --> API["Object API"]
API --> Meta[("Metadata DB")]
API --> Upload["Multipart Upload Service"]
Upload --> Blob[("Blob Storage")]
Upload --> Replication["Replication Worker"]
Replication --> Blob2[("Remote Region")]
Client --> Download["Download API"]
Download --> Meta
Download --> Blob
API design
POST /buckets/{bucket}/objects:initiate
PUT /uploads/{upload_id}/parts/{part_no}
POST /uploads/{upload_id}:complete
GET /buckets/{bucket}/objects/{key}
DELETE /buckets/{bucket}/objects/{key}
Data model
objects(bucket, object_key, version_id, size, checksum, status, created_at)
object_parts(upload_id, part_no, blob_key, checksum, size)
replication_tasks(object_key, version_id, target_region, status)
Amazon 面试里要强调 checksum、multipart retry、跨 AZ/region replication、metadata 和 blob 分离,以及 operational metrics。
题目逐题答案速查
Coding:server primary/backup matching
Sample code
def max_pairs(primary, backup):
primary.sort()
backup.sort()
i = j = pairs = 0
while i < len(primary) and j < len(backup):
if backup[j] >= primary[i]:
pairs += 1
i += 1
j += 1
else:
j += 1
return pairs
Coding:make array non-decreasing by segment increments
Sample code
def min_increment_to_nondecreasing(nums):
cost = 0
cur = nums[0]
for x in nums[1:]:
if x < cur:
cost += cur - x
else:
cur = x
return cost
OOD:keyboard + mouse input system
classDiagram
class InputEvent {
timestamp
device_id
}
class KeyboardEvent {
key
action
}
class MouseEvent {
x
y
button
action
}
class InputDispatcher {
dispatch(event)
register(handler)
}
InputEvent <|-- KeyboardEvent
InputEvent <|-- MouseEvent
System design:LLM quality validation
flowchart LR
Model["Candidate Model"] --> Eval["Eval Runner"]
Dataset[("Golden Dataset")] --> Eval
Eval --> Metrics[("Metrics Store")]
Eval --> Judge["Human / LLM Judge"]
Metrics --> Gate["Release Gate"]
Gate --> Deploy["Deploy"]
API/data model
POST /eval-runs
GET /eval-runs/{id}
POST /eval-datasets
GET /models/{id}/quality-report
eval_datasets(id, name, version, task_type)
eval_examples(id, dataset_id, input, expected_output, metadata_json)
eval_results(run_id, example_id, metric_name, value, judgment)
System design:temperature sensor region system
答案骨架: ingestion gateway -> stream -> time-series store -> alert service。API:POST /sensor-readings、GET /regions/{id}/temperature、GET /alerts。Data model:sensors、readings、region_rollups、alerts。
准备重点
Coding:准备数组、字符串、图、树、heap、sliding window、DP。Amazon coding 常有业务包装和 follow-up,要练清晰解释。
System Design:SDE2+ 准备 scalable service、storage、queue、cache、consistency、failure handling。回答要先讲需求,再讲核心 flow。
Leadership Principles:准备至少 8 个故事,覆盖 ownership、customer obsession、bias for action、dive deep、disagree and commit、deliver results、learn and be curious。
Applied Scientist:准备 ML basics、实验设计、模型评估、项目 deep dive 和业务 impact。
7 天冲刺计划
- Day 1-2:限时 coding。
- Day 3:准备 LP 故事。
- Day 4:练 system design 或 ML project。
- Day 5:做 behavioral mock。
- Day 6:模拟 VO mixed round。
- Day 7:整理 recruiter/HM 问题。
常见失分点
- LP 故事太泛,没有具体冲突和结果。
- Technical 做完题但 follow-up 没讲清。
- System design 没有强调 reliability 和 failure mode。
- Applied Scientist 只讲模型,不讲实验和业务影响。
CTA
如果你已经拿到 Amazon 面试,建议把 coding 和 LP 一起练。你可以在服务和价格页面查看 SDE/AS mock 选项;也可以通过联系我们页面发送岗位和轮次。