TikTok CodeSignal OA 總共 70 分鐘,本文分享第 3、第 4 題的完整複盤。前兩題為熱身題,後兩題才是真正的區分度所在。以下附真實截圖 + 滿分思路。
考試概況
| 項目 | 詳情 |
|---|---|
| 平台 | CodeSignal |
| 總時長 | 70 分鐘 |
| 題數 | 4 道 |
| 本文覆蓋 | Q3 + Q4(最後兩題) |
| 崗位 | SWE / Backend |
Q3:真題截圖

題目核心
給定一個字串陣列或整數序列,需要根據特定規則進行分組統計或區間合併,找出滿足條件的最優解。CodeSignal 第 3 題通常考察:
- 哈希表計數
- 滑動視窗
- 前綴和
- 排序 + 貪心
解題思路
第一步:理解約束
仔細閱讀題目,識別核心約束條件。去掉故事包裝後,大多數 Medium 難度的 Q3 都能歸結為已知的演算法模式。
第二步:暴力解法 → 優化
先想清楚暴力解法的時間複雜度,再思考如何用哈希表或雙指針優化到 O(n) 或 O(n log n)。
第三步:處理邊界
- 空陣列 / 空字串
- 所有元素相同
- 單元素陣列
滿分解法框架
def solution(arr):
from collections import defaultdict
count = defaultdict(int)
result = 0
for val in arr:
# 先查詢歷史狀態,再更新
result += count[val]
count[val] += 1
return result
時間複雜度: O(n)
空間複雜度: O(n)
核心思路對照表
| 考點 | 技巧 | 適用場景 |
|---|---|---|
| 配對統計 | HashMap 一次遍歷 | Two Sum 變種 |
| 區間合併 | 排序 + 線性掃描 | 重疊區間 |
| 字串匹配 | 滑動視窗 + Set | 無重複子串 |
| 前綴統計 | 前綴和 + HashMap | 子陣列和 |
Q4:真題截圖

題目核心
最後一題通常是難度最高的圖論 / 狀態機 / 複雜模擬題,需要綜合運用多種演算法技巧。常見考點:
- BFS / DFS 圖遍歷
- 狀態機模擬(含循環檢測)
- 動態規劃
- 複雜字串處理
解題思路
分析狀態空間
- 明確「狀態」是什麼——當前位置、已訪問節點、剩餘資源等
- 明確「轉移」規則——每一步如何從一個狀態到另一個狀態
- 明確「終止條件」——成功、失敗、循環三種情況
多種終止條件處理模板
def solution(n, m, obstacles, teleports):
obstacle_set = set(map(tuple, obstacles))
teleport_map = {(t[0], t[1]): (t[2], t[3]) for t in teleports}
row, col = 0, 0
visited = set()
steps = 0
while True:
state = (row, col)
# 1. 循環檢測(必須最先判斷)
if state in visited:
return -2 # 無限循環
visited.add(state)
# 2. 障礙物檢測
if state in obstacle_set:
return -1 # 被障礙物阻擋
steps += 1
# 3. 終點檢測
if row == n - 1 and col == m - 1:
return steps # 成功到達
# 4. 傳送門處理
if state in teleport_map:
row, col = teleport_map[state]
continue
# 5. 常規移動(向右)
col += 1
# 6. 邊界檢測
if col >= m:
return -3 # 越界,無法到達
return -3
時間複雜度: O(n × m)(每個格子最多訪問一次)
空間複雜度: O(n × m)(visited 集合)
Q4 臨場應對策略
當 Q4 看起來很複雜時:
- 先列出所有終止條件,把 -1、-2、-3、正常返回值寫在注釋裡
- 畫出小例子,手動模擬 2-3 步
- 從最簡單的情況開始寫,先跑通 basic test,再處理 edge case
- 循環檢測必做:visited set 是標配
兩題核心思路對比
| 題目 | 核心技巧 | 時間複雜度 | 空間複雜度 | 難度 |
|---|---|---|---|---|
| Q3 | HashMap + 一次遍歷 | O(n) | O(n) | Medium |
| Q4 | 狀態機 + 循環檢測 | O(n×m) | O(n×m) | Hard |
常見思維誤區
| 題目 | 誤區 | 正確方向 |
|---|---|---|
| Q3 | 暴力雙層迴圈 O(n²) | HashMap 一次遍歷 O(n) |
| Q3 | 忽略負數 / 零的邊界 | 提前檢查輸入範圍 |
| Q4 | 忘記循環檢測 | visited set 必須加 |
| Q4 | 終止條件順序寫錯 | 先檢測循環,再檢測障礙,再檢測終點 |
TikTok OA 應試策略
CodeSignal 平台特點
- 自動評測,無法查看測試用例
- 70 分鐘,節奏緊湊
- Q1/Q2 是熱身(約 15 min),Q3/Q4 才是重點(約 55 min)
- 部分公司會看程式碼質量,不只看通過率
時間分配建議
| 題目 | 建議時間 | 策略 |
|---|---|---|
| Q1 | 5-8 min | 快速 AC,不要卡 |
| Q2 | 8-12 min | 注意邊界 |
| Q3 | 20-25 min | 先想清楚再寫 |
| Q4 | 25-30 min | 先寫終止條件框架 |
相關 LeetCode 練習
| 題號 | 題目 | 對應考點 |
|---|---|---|
| 1 | Two Sum | Q3 HashMap |
| 560 | Subarray Sum Equals K | Q3 前綴和 |
| 542 | 01 Matrix | Q4 BFS |
| 200 | Number of Islands | Q4 圖遍歷 |
| 289 | Game of Life | Q4 狀態機模擬 |
🚀 需要 TikTok OA 輔助?
oavoservice 專注北美大廠 OA/VO 全程輔助,TikTok CodeSignal OA 是我們的核心服務場景,題庫覆蓋率極高。
立即添加微信:Coding0201
獲取:
- ✅ TikTok OA 實時輔助(螢幕共享 + 實時打字提示)
- ✅ CodeSignal 真實題庫(覆蓋 80%+ 高頻題)
- ✅ 一對一模擬 OA + 詳細反饋
- ✅ VO 面試輔助(演算法 + 系統設計)
📱 微信:Coding0201 | 💬 Telegram:@OAVOProxy | 📧 [email protected]
聯繫方式
Email: [email protected]
Telegram: @OAVOProxy