TikTok OA (CodeSignal) 13 分钟全 AC 面经分享 | 2026 最新真题深度复盘

1,614Times read

最近刚刚完成了 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>":第 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博士,人在海外,曾在谷歌、苹果等多家大厂工作。深度学习NLP方向拥有多篇SCI,机器学习方向拥有Github千星⭐️项目。
End of text
 0