TikTok CodeSignal OA 总共 70 分钟,这次分享第 3、第 4 题的完整复盘。前两题为热身题,后两题才是真正的区分度所在。以下是真实截图 + 满分思路。
考试概况
| 项目 | 详情 |
|---|---|
| 平台 | CodeSignal |
| 总时长 | 70 分钟 |
| 题数 | 4 道 |
| 本文覆盖 | Q3 + Q4(最后两题) |
| 岗位 | SWE / Backend |
Q3:真题截图

题目核心
给定一个字符串数组或整数序列,需要根据特定规则进行分组统计或区间合并,找出满足条件的最优解。
解题思路
第一步:理解约束
仔细读题,识别核心约束条件。CodeSignal 第 3 题通常考察:
- 哈希表计数
- 滑动窗口
- 前缀和
- 排序 + 贪心
第二步:暴力解法 → 优化
先想清楚暴力解法的时间复杂度,再思考如何用哈希表或双指针优化到 O(n) 或 O(n log n)。
第三步:处理边界
- 空数组 / 空字符串
- 所有元素相同
- 单元素数组
满分解法框架
def solution(arr):
from collections import defaultdict
# 1. 初始化计数器 / 哈希表
count = defaultdict(int)
result = 0
# 2. 一次遍历,边遍历边查询
for i, val in enumerate(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)
# 循环检测
if state in visited:
return -2 # 无限循环
visited.add(state)
# 障碍物检测
if state in obstacle_set:
return -1 # 被障碍物阻挡
steps += 1
# 终点检测
if row == n - 1 and col == m - 1:
return steps # 成功到达
# 传送门处理
if state in teleport_map:
row, col = teleport_map[state]
continue
# 常规移动(向右)
col += 1
# 边界检测
if col >= m:
return -3 # 越界,无法到达
return -3
时间复杂度: O(n × m)(每个格子最多访问一次)
空间复杂度: O(n × m)(visited 集合)
临场应对策略
当 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 是热身(10-15 min),Q3/Q4 才是重点(55-60 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