← 返回博客列表
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