← 返回博客列表
TikTok

TikTok CodeSignal Backend OA 四題複盤:Rating 區間、陣列削減、記憶體分配、最長共同數字前綴

2026-04-12

TikTok CodeSignal Backend OA 四題複盤

這場 TikTok CodeSignal Backend OA 的整體難度不高,但四題都很典型:前兩題偏熱身,第三題是純模擬,第四題考數字字串前綴和集合查詢。

真正需要注意的不是複雜演算法,而是能不能把題面規則穩穩翻譯成可維護的狀態。尤其第三題的記憶體分配,如果一開始就想寫得很「系統」,反而容易把簡單模擬寫亂。

這篇不放程式碼,只按實戰做題順序講清每題怎麼想、哪裡容易錯。


考試概況

項目 詳情
平台 CodeSignal
公司 TikTok
方向 Backend / SWE
題數 4 題
題型 區間判斷、陣列模擬、記憶體分配模擬、數字前綴 HashSet
整體難度 Easy 到 Medium

Q1:Rating 最終等級判斷

TikTok CodeSignal Backend OA Q1 Rating Level

題目在問什麼

給一個初始 rating,再給一組 rating changes。把所有變化累加到初始值上,得到最終 rating,然後按區間返回等級:

題目保證中間和最終 rating 都不會超出給定範圍,所以不需要處理非法 rating。

做題入口

這題本質就是一次求和加區間判斷。先把最終值算出來,再按邊界從高到低或從低到高判斷都可以。

這裡沒有隱藏優化點,也不需要前綴和。CodeSignal 說不需要最優解,但這題最自然的解法本身就是線性的。

容易錯的點

這題應該快速拿下,不要在這裡消耗太多時間。


Q2:從最左非零數開始的陣列削減模擬

TikTok CodeSignal Backend OA Q2 Array Reduction

題目在問什麼

給一個非負整數陣列。每一輪先找到最左邊的非零元素,把它的值記作 x。然後從這個位置開始向右走,盡量給後面的元素都減去 x

如果遇到某個元素嚴格小於 x,這一輪就停止。無論這一輪減到哪裡,都把 x 加到答案裡,然後回到下一輪,繼續找最左非零元素。

直到陣列裡沒有非零數,返回累計答案。

做題入口

最直接的暴力模擬就夠了:

題目本身也提示了不需要特別極限的複雜度,所以不用強行推數學公式。

為什麼暴力思路很穩

這題的關鍵在於「每一輪的起點由目前陣列狀態決定」,不是固定視窗,也不是一次掃描就能完全解決的題。只要按題意維護過程,狀態變化就是清楚的。

對 OA 來說,這類題最怕想過度:越想用單調棧、差分、區間結構,越容易偏離題目要求。除非資料範圍特別大,否則按規則模擬是最穩的。

容易錯的點


Q3:8 對齊的 Memory Allocator

TikTok CodeSignal Backend OA Q3 Memory Allocator

題目在問什麼

給一個由 0 和 1 組成的 memory 陣列。0 表示空閒,1 表示佔用。記憶體區塊必須從下標能被 8 整除的位置開始,也就是 0、8、16 這些位置。

有兩類 query:

每次成功 alloc 都會產生一個新的遞增 ID。erase 用的就是這個 ID。

做題入口

這題不用寫真正的 malloc,也不需要複雜資料結構。按題面暴力維護即可:

alloc x

erase ID

如果不用額外映射,也可以按題目允許的方式掃陣列找匹配 ID。但更穩的表達是:同時維護「memory 是否佔用」和「ID 對應區間」,erase 會更清楚。

這題的核心不是優化,而是狀態一致

第三題最容易出錯的地方,是 memory 裡只有 0/1,但 erase 需要知道某一段屬於哪個 ID。

所以做題時最好把狀態分開理解:

只要這兩個狀態同步更新,題目就很機械。

容易錯的點


Q4:兩個陣列裡的最長共同數字前綴

TikTok CodeSignal Backend OA Q4 Longest Common Prefix

題目在問什麼

給兩個整數陣列 firstArraysecondArray。數字前綴指的是從最高位開始截出來的一段數字,例如 123 是 12345 的前綴。

題目要找:從兩個不同陣列裡各選一個數字,它們之間最長的共同前綴長度是多少。如果完全沒有共同前綴,返回 0。

做題入口

最穩的做法是把數字當字串處理。

先遍歷 firstArray,把每個數字的所有前綴都放進一個 set。然後遍歷 secondArray,枚舉每個數字的所有前綴,只要這個前綴在 set 裡,就用它的長度更新答案。

這題不需要真的比較每一對數字。直接兩兩比較會變成陣列長度相乘,很容易沒必要地變慢。

為什麼 set 前綴足夠

題目只關心「有沒有某個 firstArray 的數字擁有這個前綴」,並不關心它來自哪個具體數字。

所以把所有 firstArray 前綴統一放進 set 後,secondArray 的任意前綴只要命中,就說明存在一對數字共享這個前綴。

答案就是命中的最長長度。

容易錯的點


這套題怎麼分配時間

題目 建議策略
Q1 直接求和判斷,盡快完成
Q2 按題意暴力模擬,別過度優化
Q3 先把 alloc / erase 的狀態定義清楚,再寫模擬
Q4 用 set 存 firstArray 的所有數字前綴,再掃 secondArray

整體看,這套 TikTok Backend OA 更像是在考「能不能把規則翻譯成穩定實作」,而不是在考高級演算法模板。Q1 和 Q2 應該快速通過,Q3 重點保證 ID、區間、8 對齊都不亂,Q4 用 HashSet 降掉不必要的兩兩比較。


oavoservice 提醒

TikTok / ByteDance 的 CodeSignal OA 經常會把簡單題和模擬題包裝成長題面。真正做的時候,先不要急著寫複雜結構,把輸入、狀態、返回值逐項翻譯清楚,往往比套模板更重要。

如果你正在準備 TikTok Backend OA,可以重點練這幾類題:

這些題不一定難,但非常考臨場穩定度。


TikTok OA 2026 備考交流與後續建議

如果你正在準備 TikTok / ByteDance SDE / Intern / New Grad 2026 OA,歡迎私訊交流:

祝大家 2026 TikTok OA 順利通過,早日拿到理想 Offer。保持穩定輸出,持續衝刺。


需要面試真題? 立刻聯繫微信 Coding0201獲得真題


聯繫方式

Email: [email protected]
Telegram: @OAVOProxy