Google 26NG OA 分享|2026 New Grad 最新筆試體驗

1,493Views

最近剛做完 Google 26NG OA ,整體感受是:題目本身不算特別偏,但非常吃 coding 基礎、邊界處理能力和時間管理。

Google 的 OA 和很多公司不一樣,它不會故意搞特別怪的冷門題,但會在實現細節和程式碼穩定性上瘋狂卡人。很多人以為自己寫出來了,結果 hidden cases 一跑直接炸。這次我遇到的題整體偏 LeetCode Medium,資料量不小,暴力基本過不了。

Google 26NG OA 分享|2026 New Grad 最新筆試體驗

第一題:棋盤硬幣收集

題目核心

字串 board 裡有 ‘T’(棋子)、’C’(硬幣)、’.’(空)。每次可把任意一個 ‘T’ 向右精確跳 3 格,目標位置必須是空的(不能落另一個 ‘T’ 上)。落在 ‘C’ 上就收集它(每枚只收一次)。問最多能收集多少枚硬幣。

解題思路

每個棋子只能走 +3 的步長,所以一個棋子能收集的硬幣必須滿足 (硬幣位置 – 棋子位置) % 3 == 0 且在右邊。

由於棋子間不能重疊,移動順序很重要,但 N 通常很小(示例只有 10 左右),可以採用以下簡單有效的方法:

  • 提取所有 T 和 C 的位置。
  • 用 DP 或 BFS 搜尋:狀態記錄當前所有棋子的位置集合 + 已收集硬幣集合(用位掩碼或集合)。
  • 因為棋子數一般很少,狀態數可控,搜尋所有合法移動即可得到最大收集數。

推薦實現方向(Python): 用遞迴 + memo,引數為當前各棋子位置(排序 tuple)和已收集硬幣的位掩碼,嘗試每個棋子向右跳 3 步,如果目標合法就更新狀態繼續搜尋,記錄最大收集數。

第二題:數字選組

題目核心

給 N 個兩位數,想選儘量多的數,使得選出的所有數至少共享一個相同數字(0-9 任意一個)。返回最大個數。

解題思路

任何合法的組一定都包含同一個數字 d(0~9 之一)。所以直接:

int solution(vector& numbers) {
    int ans = 0;

    for (int d = 0; d <= 9; d++) {
        int cnt = 0;

        for (int x : numbers) {
            if (x / 10 == d || x % 10 == d) {
                cnt++;
            }
        }

        ans = max(ans, cnt);
    }

    return ans;
}

這就是最優答案,時間 O(10*N),N≤100 完全足夠。

示例驗證

  • [52,25,11,52,34,55] → 含 5 的有 4 個 → 4
  • [11,33,55] → 每個 d 最多覆蓋 1 個 → 1

我準備的時候踩過的坑

我之前一開始準備 Google,就是無腦刷 LeetCode。後來發現效率其實一般。因為 Google 很多題不是“原題”。而是那種:你見過類似思想,但實現更噁心的變體。後面我開始專門看真實 OA 面經和高頻分類,效率明顯高很多。

我當時是在Programhelp 上看了不少 Google 26NG 的 OA 整理,裡面有很多:

  • 高頻 graph 題型
  • Google 風格 string 題
  • hidden test 容易卡的點
  • 常見 BFS 變體

有些方向真的和實際考試挺接近。

author avatar
Jory Wang Amazon資深軟體開發工程師
Amazon 資深工程師,專注 基礎設施核心系統研發,在系統可擴充套件性、可靠性及成本最佳化方面具備豐富實戰經驗。 目前聚焦 FAANG SDE 面試輔導,一年內助力 30+ 位候選人成功斬獲 L5 / L6 Offer。
END
 0