TikTok(字节跳动海外版)的 OA 以题量大、场景化著称——110 分 7 道题,所有岗位和地区使用相同题目。题目难度中等,但时间管理是关键。本文基于一亩三分地最新面经,系统拆解 TikTok OA 的核心题型与解题策略。
TikTok OA 概览
| 维度 | 详情 |
|---|---|
| 平台 | 自研平台 |
| 时长 | 120 分钟 |
| 题量 | 7 道(总分 110 分) |
| 难度 | Easy-Medium |
| 考察重点 | 贪心、DP、BFS/DFS、二分搜索、模拟 |
题型一:视频反馈优化(Video Feedback Optimization)
题目描述
给定一个二进制数组 videoFeedback,其中 1 表示正面反馈,0 表示负面反馈。创作者可以选择一个连续区间 [l, r] 保持不变,区间外的所有值翻转(0→1, 1→0)。求翻转后最大的正面反馈数(即 1 的数量)。
解题思路
翻转区间外等价于:总长度 - 区间内0的数量 - 区间外1的数量。可以转化为求最大子数组和问题。
def max_positive_feedback(feedback):
n = len(feedback)
total_ones = sum(feedback)
total_zeros = n - total_ones
# 翻转后的1的数量 = 区间外的0变成1 + 区间内原本的1
# = (total_zeros - 区间内0的数量) + 区间内1的数量
# = total_zeros + 区间内(1的数量 - 0的数量)
# 等价于最大化区间内 sum(2*x - 1 for x in subarray)
transformed = [2 * x - 1 for x in feedback]
# Kadane's algorithm 求最大子数组和
max_sum = float('-inf')
current_sum = 0
for val in transformed:
current_sum = max(val, current_sum + val)
max_sum = max(max_sum, current_sum)
return total_zeros + max(0, max_sum)
时间复杂度:O(n)
空间复杂度:O(n)
题型二:服务器延迟优化(Server Delay Optimization)
题目描述
数据包通过 n 个服务器(编号 1 到 n)传输,每个服务器有延迟 delay[i]。可以选择跳过最多 k 个服务器(但不能跳过第一个和最后一个)。求最小总延迟。
解题思路
这是一个DP + 滑动窗口问题:
def min_total_delay(delays, k):
n = len(delays)
if n <= k + 2:
return delays[0] + delays[-1]
# dp[i][j] = 到达第i个服务器,已跳过j个的最小延迟
dp = [[float('inf')] * (k + 1) for _ in range(n)]
dp[0][0] = delays[0]
for i in range(1, n):
for j in range(k + 1):
# 不跳过第i个服务器
dp[i][j] = min(dp[i][j], dp[i-1][j] + delays[i])
# 跳过第i个服务器(如果不是首尾)
if j > 0 and i != n - 1:
dp[i][j] = min(dp[i][j], dp[i-1][j-1])
return min(dp[n-1])
题型三:病毒传播最小化(Viral Campaign Minimum Seeds)
题目描述
社交网络中有 n 个用户,给定关注关系图。如果一个用户的所有关注者中超过一半已经接受了某个趋势,该用户也会接受。求最少需要初始投放多少个用户,才能让所有用户最终都接受该趋势。
解题思路
这是一个拓扑排序 + 贪心问题:
from collections import defaultdict, deque
def min_seed_users(n, follow_edges):
"""
follow_edges: [(a, b)] 表示 a 关注 b
如果用户的关注者中超过一半已接受,该用户也接受
"""
followers = defaultdict(set) # followers[u] = 关注u的人
following = defaultdict(set) # following[u] = u关注的人
for a, b in follow_edges:
following[a].add(b)
followers[b].add(a)
# 入度为0的节点(没有关注任何人的)必须被初始投放
seeds = set()
# 找到没有被任何人关注的节点(无法被影响的)
for u in range(n):
if not followers[u]:
seeds.add(u)
# BFS 模拟传播
activated = set(seeds)
queue = deque(seeds)
while queue:
u = queue.popleft()
for v in followers[u]:
if v not in activated:
# 检查v的关注者中已激活的比例
activated_following = sum(1 for f in following[v] if f in activated)
if activated_following > len(following[v]) // 2:
activated.add(v)
queue.append(v)
# 如果还有未激活的节点,需要额外种子
remaining = set(range(n)) - activated
while remaining:
# 贪心选择能激活最多节点的
best = max(remaining, key=lambda u: len(followers[u] & remaining))
seeds.add(best)
activated.add(best)
queue = deque([best])
while queue:
u = queue.popleft()
for v in followers[u]:
if v not in activated:
activated_following = sum(1 for f in following[v] if f in activated)
if activated_following > len(following[v]) // 2:
activated.add(v)
queue.append(v)
remaining = set(range(n)) - activated
return len(seeds)
题型四:Relevance Score 调整(二分搜索)
题目描述
给定一组 relevance scores,每次调整可以将任意一个 score 减少 x。在最多 maxAdjustments 次调整后,使所有 scores 变为非正数。求最小的 x。
def min_adjustment_value(scores, max_adjustments):
def can_achieve(x):
adjustments_needed = 0
for s in scores:
if s > 0:
adjustments_needed += (s + x - 1) // x
return adjustments_needed <= max_adjustments
left, right = 1, max(scores)
while left < right:
mid = (left + right) // 2
if can_achieve(mid):
right = mid
else:
left = mid + 1
return left
时间复杂度:O(n * log(max_score))
时间管理策略
| 题目类型 | 建议时间 | 分值 |
|---|---|---|
| Easy 题(1-2题) | 10-15 分钟/题 | 10-15 分 |
| Medium 题(3-4题) | 15-20 分钟/题 | 15-20 分 |
| Hard 题(1-2题) | 20-25 分钟/题 | 20-25 分 |
建议先做简单题拿稳分数,再攻克难题。
TikTok OA 防作弊机制
- 全屏监控(切屏会被记录)
- 代码相似度检测
- 摄像头监控(部分场次)
- IP 地址记录
FAQ
TikTok OA 所有岗位题目一样吗?
是的,TikTok OA 对所有岗位和地区使用相同的题目集(110分7题),不区分 SDE、MLE 或 Data 岗位。
TikTok OA 的通过分数线是多少?
根据一亩三分地面经,通常需要达到 80-90 分以上才能进入下一轮。满分 110 分,建议至少做对 5-6 题。
TikTok OA 和字节跳动国内笔试有什么区别?
TikTok OA 题目难度略低于字节国内笔试,但题量更大(7题 vs 4题)。时间管理更为关键。
TikTok OA 之后的面试流程是什么?
通过 OA 后通常有 2-3 轮技术面试(算法 + 系统设计),然后是 Hiring Manager 面试。从 OA 到 offer 通常 4-6 周。
TikTok OA 可以用什么语言?
支持 Python、C++、Java、JavaScript 等主流语言。推荐使用 Python,因为题量大需要快速编码。
正在准备 TikTok OA?
oavoservice 提供专业的 TikTok/字节跳动 OA/VO 辅助服务,覆盖全球各地区的面试。我们的团队熟悉 TikTok 的题目风格和评分标准。
👉 立即添加微信:Coding0201,获取真题与辅助方案。
联系方式
Email: [email protected]
Telegram: @OAVOProxy