TikTok 最新 OA 复盘:4 大高频题型拆解 + Python 实战模板 + 2026 上岸案例(字节跳动在线笔试)

面经来源:一亩三分地匿名帖(2025-09-22)
关键词:TikTok OA ByteDance 在线笔试 字符串模拟 矩阵枚举 单调栈

目录

  1. 这份 OA 到底在考什么
  2. 题型 1:字符串规则变换(模拟)
  3. 题型 2:来回移动过程(方向与边界)
  4. 题型 3:矩阵图案变换(枚举 + 最优)
  5. 题型 4:最大“容纳面积”(单调栈)
  6. 2026 上岸案例:17 天拿下 TikTok 面试
  7. 7 天冲刺执行方案
  8. 立即预约一对一诊断
  9. 面试救急

这份 OA 到底在考什么

这次 TikTok OA 的信息很典型:题面不一定难,但对实现完整性要求极高。核心筛选维度不是“会不会算法”,而是:

  • 你能否把规则翻译成稳定代码。
  • 你能否在边界条件下不出错。
  • 你能否在有限时间里做出可验证的实现。

一句话总结:中等算法 + 高强度工程细节

题型 1:字符串规则变换(模拟)

这类题关键不是技巧,而是“规则驱动 + 单次遍历 + 可回退”。

def transform(s: str) -> str:
    """
    示例规则(按真实题面替换):
    1) '^x':输出 x 的大写
    2) '*' :复制上一个已输出字符
    3) '!' :删除上一个已输出字符
    4) 其他字符:原样输出
    """
    out = []
    i = 0
    n = len(s)

    while i < n:
        ch = s[i]
        if ch == "^" and i + 1 < n:
            out.append(s[i + 1].upper())
            i += 2
        elif ch == "*":
            if out:
                out.append(out[-1])
            i += 1
        elif ch == "!":
            if out:
                out.pop()
            i += 1
        else:
            out.append(ch)
            i += 1

    return "".join(out)

高频失分点:

  • 指针 i 增量不一致导致漏读或死循环。
  • 删除/复制时没有判空。
  • 先后顺序写反,结果和题面不一致。

题型 2:来回移动过程(方向与边界)

这是典型“方向状态机”问题。建议固定三元组:位置 pos方向 dir下一步 nxt

def simulate(n: int, steps: int, start: int = 0) -> int:
    """
    在线段 [0, n-1] 上移动,触边反弹,返回最终位置。
    """
    pos = start
    direction = 1  # 1 向右, -1 向左

    for _ in range(steps):
        nxt = pos + direction
        if nxt < 0 or nxt >= n:
            direction *= -1
            nxt = pos + direction
        pos = nxt

    return pos

高频失分点:

  • 到边界时“先反向再走”还是“先走再反向”没对齐题意。
  • n=1 这类退化输入没单独验证。
  • 循环次数和状态更新顺序写错。

题型 3:矩阵图案变换(枚举 + 最优)

这类题核心是“把目标图案函数化”,然后在候选方案中取最优。

from typing import List

def rotate90(mat: List[List[str]]) -> List[List[str]]:
    n = len(mat)
    return [[mat[n - 1 - c][r] for c in range(n)] for r in range(n)]

def cost_to_x_pattern(grid: List[List[str]], diag_val: str) -> int:
    """
    目标图案:主对角线 + 副对角线为 diag_val,其余为另一个字符
    """
    n = len(grid)
    other = "1" if diag_val == "0" else "0"
    cost = 0

    for r in range(n):
        for c in range(n):
            expected = diag_val if (r == c or r + c == n - 1) else other
            if grid[r][c] != expected:
                cost += 1
    return cost

def min_cost_all_rotations(grid: List[List[str]]) -> int:
    best = float("inf")
    cur = grid
    for _ in range(4):
        best = min(best, cost_to_x_pattern(cur, "0"), cost_to_x_pattern(cur, "1"))
        cur = rotate90(cur)
    return best

高频失分点:

  • 行列下标写反。
  • 旋转后矩阵覆盖错误。
  • “最小代价”只算了一种图案,漏枚举。

题型 4:最大“容纳面积”(单调栈)

面经里这题本质是直方图最大矩形变体。标准解法是单调递增栈,时间复杂度 O(n)

from typing import List

def largest_rectangle_area(heights: List[int]) -> int:
    stack = []  # 存索引,保证对应高度递增
    ans = 0
    arr = heights + [0]  # 哨兵,触发清栈

    for i, h in enumerate(arr):
        while stack and arr[stack[-1]] > h:
            mid = stack.pop()
            left = stack[-1] if stack else -1
            width = i - left - 1
            ans = max(ans, arr[mid] * width)
        stack.append(i)

    return ans

高频失分点:

  • 宽度公式写错:i - left - 1
  • 忘记加哨兵,尾部柱子没结算。
  • >>= 选错导致重复高度处理异常。

2026 上岸案例:17 天拿下 TikTok 面试

候选人:L 同学(化名),杭州,3 年 Python 后端,目标岗位 TikTok Data Infra。 起点:OA 模拟正确率 52%,主要问题是模拟题边界漏判。 我们服务介入时间:2026-01-29。 执行路径:

  • 第 1 天:90 分钟全量诊断,建立“题型-错误模式”映射。
  • 第 2-10 天:每天 2 题高频模拟 + 1 次代码复盘。
  • 第 11-14 天:单调栈、矩阵枚举专项纠偏。
  • 第 15-17 天:两轮 OA 全真计时演练。

结果:

  • 2026-02-15 完成 TikTok OA,4 题通过 4 题。
  • 2026-02-27 进入技术面试流程。
  • 2026-03-21 拿到录用结果(平台工程方向)。

这类上岸不是“刷题更多”,而是“错误更少 + 输出更稳”。

7 天冲刺执行方案

  1. 第 1 天:只做字符串与模拟,建立统一模板。
  2. 第 2 天:边界专项,专练极小输入与退化输入。
  3. 第 3 天:矩阵枚举题,要求每题写出 check() 函数。
  4. 第 4 天:单调栈模板默写 + 变体 3 题。
  5. 第 5 天:混合套题计时 90 分钟。
  6. 第 6 天:错题重做,只看自己错因标签。
  7. 第 7 天:全真 OA 演练,提交前做 3 分钟边界审计。

立即预约一对一诊断

你可以把最近一次 OA 代码直接带来,我会按真实面试官标准给出可落地修正方案。

预约 30 分钟 OA 诊断

面试救急

笔试倒计时 72 小时内,建议直接走“面试救急”通道:

  • 90 分钟极速问题定位。
  • 4 类高频题现场手写纠偏。
  • 给出你下一场 OA 的逐分钟作答策略。

进入面试救急通道

Previous
Previous

Capital One DS(PhD) Intern OA 70分钟复盘:Pandas + sklearn 四题拆解与提分模板(2026版)

Next
Next

TikTok 26NG VO 技术专家复盘:Java/C/JS 高频概念 + 最长回文与 Word Break 一次讲透