← 返回部落格列表 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 []

    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)

    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取得真題


聯絡方式