← 返回博客列表 Amazon SDE Intern 面试通关:VO 三阶段 + LRU / Word Ladder II / Insert-Delete-GetRandom 三道经典
Amazon

Amazon SDE Intern 面试通关:VO 三阶段 + LRU / Word Ladder II / Insert-Delete-GetRandom 三道经典

2026-05-31

Amazon 是北美 SDE Intern 招聘量最大的公司之一,但同时也是题库最稳定、流程最清晰的一家。它不像 Google 那样靠创意题,也不像 Meta 那样狂卷难度,Amazon 想看的是「你能不能把经典数据结构题做对,并且用 Leadership Principles 包装你的项目经历」。这篇文章把 SDE Intern 一次完整 VO 拆成三阶段,并把三道高频题:LRU Cache、Word Ladder II、Insert/Delete/GetRandom O(1),逐题拆到 hidden test 边界。

三阶段总览

阶段 1  Application + Resume Screen        (1-2 周)
阶段 2  Online Assessment 双关               (2-3 周)
            ├─ OA1: Coding (2 道 Medium,70 min)
            └─ OA2: Workstyle Survey + Logic
阶段 3  Tech Onsite + Behavioral             (1-2 周)
            ├─ Coding × 2-3 (45 min each)
            ├─ Behavioral 1-2 轮 (基于 LP)
            └─ 可选:System Design (Junior 一般免,Senior Intern 偶有)

Intern 流程通常 4-6 周走完。OA1 通过率约 30-40%,OA1+OA2 同时过约 25%,最终 onsite offer 约 12-15%。

阶段 1 — Application + Resume Screen

Amazon 的简历筛偏向结构化关键词匹配

不要把简历堆成「学校 → 课程 → 课程作业」,要堆成「项目 → 我做了什么 → 用户/影响数字」。

阶段 2 — Online Assessment 双关

OA1 Coding

通常 2 道题,70 分钟。难度 LeetCode Easy-Medium,主题包括:

特征:题面会包装成 Amazon 业务场景(订单、仓库、机器人、会员订阅)。算法本身不难,业务语义解析要快

OA2 Workstyle Survey

Amazon 的 LP 量化测验。每道题问「你在 X 场景下倾向 A 还是 B」,A/B 各对应一个 LP。建议:每道题选最贴近你真实工作风格的答案——不要刻意往 LP 上靠,因为 LP 内部之间会冲突,过度优化某一项会被算法识别。

阶段 3 — Tech Onsite + Behavioral 三道经典题

经典题 1: LRU Cache(必考)

题面:设计 LRU 缓存,支持 get(key)put(key, value) 都在 O(1) 时间。容量超出时淘汰最久未使用的。

核心思路:HashMap + 双向链表。

class Node:
    __slots__ = ("key", "val", "prev", "next")
    def __init__(self, key=0, val=0):
        self.key, self.val = key, val
        self.prev = self.next = None

class LRUCache:
    def __init__(self, capacity: int):
        self.cap = capacity
        self.map: dict[int, Node] = {}
        self.head, self.tail = Node(), Node()
        self.head.next, self.tail.prev = self.tail, self.head

    def _remove(self, node: Node) -> None:
        node.prev.next, node.next.prev = node.next, node.prev

    def _add_front(self, node: Node) -> None:
        node.prev, node.next = self.head, self.head.next
        self.head.next.prev = node
        self.head.next = node

    def get(self, key: int) -> int:
        if key not in self.map:
            return -1
        node = self.map[key]
        self._remove(node)
        self._add_front(node)
        return node.val

    def put(self, key: int, value: int) -> None:
        if key in self.map:
            node = self.map[key]
            node.val = value
            self._remove(node)
            self._add_front(node)
            return
        if len(self.map) == self.cap:
            lru = self.tail.prev
            self._remove(lru)
            del self.map[lru.key]
        node = Node(key, value)
        self.map[key] = node
        self._add_front(node)

复杂度:所有操作 O(1)。

Amazon reviewer 关注

经典题 2: Word Ladder II(最难)

题面:给 beginWordendWord 和字典,每次只能改一个字母(且改后的词必须在字典中)。返回所有最短转换路径。

核心思路:双向 BFS 找最短长度 + DFS 回溯重建路径。直接 DFS 会指数爆炸。

from collections import defaultdict, deque

def find_ladders(begin: str, end: str, word_list: list[str]) -> list[list[str]]:
    words = set(word_list)
    if end not in words:
        return []

    # Step 1: BFS, build parents map (each level)
    parents: dict[str, set[str]] = defaultdict(set)
    layer = {begin}
    found = False
    while layer and not found:
        words -= layer
        next_layer: dict[str, set[str]] = defaultdict(set)
        for w in layer:
            for i in range(len(w)):
                for c in "abcdefghijklmnopqrstuvwxyz":
                    nw = w[:i] + c + w[i+1:]
                    if nw in words:
                        next_layer[nw].add(w)
                        if nw == end:
                            found = True
        for k, v in next_layer.items():
            parents[k] |= v
        layer = set(next_layer)

    # Step 2: DFS backtrack from end
    res = []
    def dfs(node: str, path: list[str]) -> None:
        if node == begin:
            res.append([begin] + path[::-1])
            return
        for p in parents[node]:
            path.append(node)
            dfs(p, path)
            path.pop()
    if found:
        dfs(end, [])
    return res

复杂度:BFS O(N·L·26),DFS 回溯 O(K·L)(K 为路径数)。

Amazon reviewer 关注

经典题 3: Insert/Delete/GetRandom O(1)

题面:实现一个数据结构支持:

核心思路:HashMap (val → index) + 动态数组。删除时把要删的元素和数组末尾交换,pop_back O(1)。

import random

class RandomizedSet:
    def __init__(self):
        self.arr: list[int] = []
        self.idx: dict[int, int] = {}

    def insert(self, val: int) -> bool:
        if val in self.idx:
            return False
        self.idx[val] = len(self.arr)
        self.arr.append(val)
        return True

    def remove(self, val: int) -> bool:
        if val not in self.idx:
            return False
        i = self.idx[val]
        last = self.arr[-1]
        self.arr[i] = last
        self.idx[last] = i
        self.arr.pop()
        del self.idx[val]
        return True

    def getRandom(self) -> int:
        return random.choice(self.arr)

复杂度:所有操作 O(1)。

Amazon reviewer 关注

Behavioral 轮:Leadership Principles 模板

Amazon 把 16 条 LP 当面试评分卡。Intern 面试常考的 5 条:

LP 你的故事要回答
Customer Obsession 你的项目谁是用户?你怎么收集 feedback?
Ownership 你独立 own 过什么 feature 端到端?
Bias for Action 你在不完美信息下做过什么决策?结果怎样?
Learn and Be Curious 你最近学了什么新技术?怎么用到项目?
Are Right, A Lot 你做过的最难判断的决定是什么?

每个 LP 准备 1-2 个 STAR 故事,每个故事配一个量化结果(用户数 / 性能 / 节省时间)。

OA → VO 节奏(4-6 周)

W1   申请 + Resume Screen
W2-3 OA1 + OA2 双关,等结果
W3-4 收到 onsite 邀请,准备 1-2 周
W5   Tech Onsite (2-3 hrs)
W6   Decision + offer call

OA1 提交后 1-3 周才有反馈,Intern 季节高峰期可能 4 周。期间不要慌,可以并行投其他公司。

VO 辅助怎么对接 Amazon Intern

Amazon Intern VO 的核心痛点是:题库稳定 + LP 量化打分。VO 辅助 / VO代面 在这条线的标准节奏:

  1. OA 题库识别:拿到邀请截图,5 分钟内判定是 OA1 还是 OA2 题型
  2. 三经典题专项:LRU / Word Ladder II / Insert-Delete-GetRandom 每道 1 小时手写练
  3. 限时 mock:45 min × 3 onsite 节奏仿真
  4. 现场 cue:onsite 当天 reviewer 后台推骨架 + LP 关键词
  5. LP 故事打磨:1-2 个 STAR 故事配 5 条核心 LP 预设映射
  6. Workstyle Survey 引导:OA2 答题倾向校准(不刻意但不偏离)

FAQ

Q1: Amazon SDE Intern OA 多久出结果? A: 通常 1-3 周。Intern 季节高峰期可能 4 周。如果 4 周没动静,邮件 recruiter 跟进。

Q2: OA1 的两道题都要 AC 才能过吗? A: 不一定。1 题全 AC + 1 题 90%+ 部分 AC 仍有过线机会。两题都低于 50% AC 几乎必拒。

Q3: 我没有 AWS 经验,会被刷吗? A: 不会。Intern 不要求 AWS,但简历提到「曾用 AWS 部署一个个人项目」会有加分。

Q4: Behavioral 轮的 LP 一定要全背吗? A: 16 条全背太累。准备 5 条核心 LP(见上表)的 1-2 个 STAR 故事,足以应对 80% 题面。

Q5: Intern 转 NG 的 conversion 率? A: Amazon Intern → NG 转化率约 60-70%(高于行业平均 50%)。Intern 期间表现 = NG offer 等级。

写在最后

Amazon SDE Intern 不需要你创意爆棚,只要你**「经典题做得稳 + LP 故事讲得清 + Workstyle 不踩雷」**就有 offer。如果你正在准备 Amazon Intern 的 OA 或 VO,可以微信 Coding0201 联系,发岗位 JD + 当前流程节点截图,先做岗位线判定,再排 VO 辅助 / VO代面 节奏。


需要面试真题? 立刻联系微信 Coding0201获取真题


联系方式