TikTok OA (CodeSignal) 13 分鐘全 AC 面經分享 | 2026 最新真題深度覆盤

1,613Views

最近剛剛完成了 TikTok 的 Online Assessment 。我平時對 CodeSignal 的 GCF 題庫練得比較勤,這次 4 道題僅用時 13 分鐘 便全部 AC。大家應該都知道, TikTok OA 刷人挺狠的,但只要掌握了套路,其實難度也就那樣。為了幫大家避坑,我把這次的實戰經驗整理了出來。

個人背景

學歷: 南加州大學 (USC) 電腦科學碩士在讀。

經驗: 1.5 年網際網路後端實習/開發經驗。

TikTok 的題其實和位元組內推的邏輯很像,核心是快和準。CodeSignal 是有速度分的,所以建議大家一定要練熟基本模板。

TikTok OA (CodeSignal) 13 分鐘全 AC 面經分享 | 2026 最新真題深度覆盤

TikTok OA 基本情況

平臺:CodeSignal
時長:70 分鐘
題量:4 題

難度結構:

  • Q1:Easy(模擬)
  • Q2:Easy–Mid(字首 / Trie)
  • Q3:Mid(字串模擬)
  • Q4:Mid(思維題,隨機)

建議節奏:

  • Q1:10–15 min
  • Q2:15 min
  • Q3:10 min
  • Q4:剩餘時間

前三題儘量在 45 分鐘內做完,不然後面會非常趕。

題目 1:配送中心排程問題

你要管理一個處理包裹配送的配送中心網路。每個中心在需要重置前,都有不同的包裹處理容量。

輸入引數

  • centerCapacities:一個整數陣列,centerCapacities[i] 的值在 1~5 之間,表示第 i 個配送中心在需要維護前,最多能處理的包裹數量。
  • dailyLog:一個字串陣列,dailyLog[i] 為以下兩種操作之一:
    • "PACKAGE":有一個新包裹需要處理
    • "CLOSURE ":第 j 個配送中心因維護暫時關閉

包裹分配規則

  1. 包裹會按順序分配給各個配送中心:每個中心在容量範圍內處理包裹,滿了之後就把包裹發給下一個可用的中心。
  2. 當一輪完整遍歷完所有中心(回到中心 0)後,所有處於運營狀態的中心的容量會被重置為初始值;但關閉的中心仍然不可用。
  3. 系統分配包裹時會自動跳過已關閉的中心。
  4. 題目保證整個過程中始終至少有一箇中心處於運營狀態。

輸出要求

返回處理包裹數量最多的配送中心的索引。如果多箇中心的包裹處理數量並列最多,返回其中索引最大的那個。

複雜度要求

時間複雜度不超過 O(centerCapacities.length × dailyLog.length) 即可透過。

示例

  • 輸入:centerCapacities = [1, 2, 1, 2, 1]dailyLog = ["PACKAGE", "PACKAGE", "CLOSURE 2", "PACKAGE", "CLOSURE 3", "PACKAGE", "PACKAGE"]
  • 解釋:
    1. 第 1 個包裹:中心 0 處理(已達容量上限),處理數:[1,0,0,0,0],剩餘容量:[0,2,1,2,1]
    2. 第 2 個包裹:中心 1 處理,處理數:[1,1,0,0,0],剩餘容量:[0,1,1,2,1]
    3. CLOSURE 2:中心 2 關閉
    4. 第 3 個包裹:中心 1 處理(仍有容量),處理數:[1,2,0,0,0],剩餘容量:[0,0,1,2,1]
    5. CLOSURE 3:中心 3 關閉
    6. 第 4 個包裹:跳過中心 2、3,分配給中心 4,處理數:[1,2,0,0,1],剩餘容量:[0,0,1,2,0]
    7. 所有運營中心遍歷一輪結束,容量重置:剩餘容量恢復為 [1,2,1,2,1](中心 2、3 仍關閉)
    8. 第 5 個包裹:分配給中心 0,處理數:[2,2,0,0,1],剩餘容量:[0,2,1,2,1]
  • 輸出:1(中心 0 和中心 1 都處理了 2 個包裹,取索引更大的中心 1)

解題思路

  1. 維護 remaining[](剩餘容量)、processed[](處理總數)、closed[](關閉狀態)
  2. 用指標 cur 記錄當前分配位置
  3. 關鍵: 一輪結束判斷 —— 當指標從某處迴繞到 0(即完成一次完整遍歷)時,重置所有運營中心的容量
  4. 最終返回 processed 中最大值對應的最大索引

題目 2:最長公共字首長度問題

給定兩個數字陣列 firstArraysecondArray,求:從兩個陣列中各取一個數字,組成的所有數對中,最長公共字首(LCP)的長度。如果不存在任何公共字首,返回 0。

說明

  • 數字的字首:由數字的一位或多位組成,從最高位開始。例如 12312345 的字首,2234 的字首。
  • 兩個數字的公共字首:同時是這兩個數字字首的數。例如 565535956554 的最長公共字首是 5655(長度為 4);123456 沒有公共字首。

輸入引數

  • firstArray:正整數陣列,長度範圍 [1, 5×10⁴],元素範圍 [1, 10⁹]
  • secondArray:正整數陣列,長度範圍 [1, 5×10⁴],元素範圍 [1, 10⁹]

輸出要求

返回所有跨陣列數對中,最長公共字首的長度;無公共字首則返回 0。

示例

  1. 輸入:firstArray = [25, 288, 2655, 54546, 54, 555]secondArray = [2, 255, 266, 244, 26, 5, 54547]輸出:4解釋:firstArray 中的 54546secondArray 中的 54547 的最長公共字首是 5454,長度為 4。
  2. 輸入:firstArray = [25, 288, 2655, 544, 54, 555]secondArray = [2, 255, 266, 244, 26, 5, 5444444]輸出:3解釋:firstArray 中的 544secondArray 中的 5444444 的最長公共字首是 544,長度為 3。
  3. 輸入:firstArray = [817]secondArray = [1999, 1909]輸出:0解釋:兩個陣列中沒有任何數對存在公共字首。

解題思路

暴力 O(N×M×L) 會超時。核心最佳化:用 Trie(字首樹)

  1. firstArray 中所有數的每一個字首(字串形式)存入雜湊集合
  2. 遍歷 secondArray 中每個數的所有字首,查詢是否在集合中存在,取最大匹配長度

時間複雜度:O((N + M) × L),L 為最大數字長度(≤10),完全滿足要求。

題目 3:數字字串位相加問題

給定兩個僅由數字組成、無前導零的字串 ab,按以下規則處理:

從兩個字串的末尾開始,每一位數字相加:

  • a 的倒數第 i 位數字,加上 b 的倒數第 i 位數字
  • 如果其中一個字串的倒數第 i 位不存在,則只取另一個字串的倒數第 i 位數字
  • 將每一位的和拼接成一個新的字串返回

輸入引數

  • a:數字字串,僅含數字、無前置零
  • b:數字字串,僅含數字、無前置零

輸出要求

返回按上述規則拼接得到的字串。

示例

  1. 輸入:a = "99", b = "99"輸出:"1818"解釋:倒數第 1 位 9+9=18,倒數第 2 位 9+9=18,拼接結果為 1818
  2. 輸入:a = "11", b = "9"輸出:"110"解釋:倒數第 1 位 1+9=10,倒數第 2 位 1b 無對應位),拼接結果為 110

解題思路

  • 雙指標從末尾往前走
  • 每步取對應位(另一個不存在則取0),求和轉字串
  • 將每步結果收集後反轉拼接(因為是從末尾開始處理)

題目 4:最大連續子陣列優美和

給你一個整數陣列 nums,定義優美數:一個數字僅由偶數數字組成(0、2、4、6、8),不含 1、3、5、7、9。

例如:2、48、206、88 是優美數;12、23、5 不是優美數。

規則

  1. 只選取陣列中全部元素都是優美數的連續子陣列;
  2. 求所有符合條件的連續子陣列的元素和,返回其中最大和;
  3. 若陣列中沒有任何優美數,返回 0。

輸入

整數陣列 nums,元素範圍 -1000 ~ 1000,陣列長度 1 ≤ n ≤ 1000

輸出

符合條件的連續全優美數子陣列的最大和

示例

範例 1:

輸入:nums = [28, 40, 13, 68, 7]

解釋:

[28,40] 都是優美數,和 = 68

[68] 和 = 68

最大和為 68

輸出:68

範例 2:

輸入:nums = [12, 35, 79]

沒有優美數,輸出:0

範例 3:

輸入:nums = [8, 24, -4, 66]

整段都是優美數,和 = 94

輸出:94

解題思路

  1. 先寫一個判斷函式:傳入一個整數,判斷每一位是否全是偶數(0、2、4、6、8),用來判定是不是優美數。
  2. 遍歷陣列,用連續子陣列滑動思路:
    • 遇到優美數:累加當前連續和。
    • 非優美數:斷開連續,重置當前和為 0。
  3. 全程不斷更新全域性最大和。
  4. 最後若無任何優美數,返回 0,否則返回最大和。

TikTok Online Assessment備戰心得與實戰建議

  1. CodeSignal 分數水分: 不要只追求 AC,要追求快速 AC。同樣的 Full Score,15 分鐘完成的和 70 分鐘完成的,在 HR 裡的權重是不一樣的。
  2. 刷題重點: 重點看 CodeSignal 上的 Industry Coding Framework,特別是關於模擬和 DP 的部分。

別讓冷凍期耽誤了你的大廠夢

面對 TikTok 這種頂級大廠,試錯成本極高(一旦掛了通常有 6 個月的冷凍期)。如果你對自己的 OA 穩定性沒有 100% 的把握,或者對面試時的實時思路感到壓力,我強烈建議瞭解 ProgramHelp 的輔助服務:

  • OA 無痕代寫 原創手寫程式碼,無痕過檢,確保 100% AC
  • VO 實時輔助: 北美資深 SDE 導師線上,面試時實時提供解題邏輯與程式碼思路,助你征服面試官。
  • 全流程支援: 從簡歷包裝到上岸後的入職輔導,提供真正的“陪跑”服務。

職場不是隻有硬拼,合理的“外力”能讓你在激烈的競爭中降維打擊。

author avatar
Jack Xu MLE | 微軟人工智慧技術人員
Princeton University博士,人在海外,曾在Google、蘋果等多家大廠工作。深度學習NLP方向擁有多篇SCI,機器學習方向擁有Github千星⭐️專案。
END
 0