面试手撕 / 字节跳动

字节跳动面试高频手撕【27届暑期实习版】

数据来源:4350 篇牛客 + 1064 篇小红书面经,共 5414 篇(v2,2026年4月更新)

数据概览

字节面试手撕分为三大类,不同岗位考察侧重不同:

类别 出现次数 题目数 适用岗位
LeetCode 原题 1678 次 261 道 所有技术岗
算法岗 ML 手撕 212 次 28 类 算法岗 / 大模型岗
原创算法题 320+ 道 所有技术岗
  • 后端 / 前端 / 客户端岗:主考 LeetCode 原题,不考 ML 手撕
  • 算法岗 / 大模型岗:三类全要准备

六大分类 · 出题频次总览

基于 5414 篇面经,按总频次排序:

分类 题数 总频次
滑动窗口 + 双指针 6 道 230 次
动态规划 10 道 200 次
链表 9 道 189 次
栈 / 队列 / 哈希 / 设计 8 道 155 次
二分查找 + 排序 / 数组 8 道 145 次
二叉树 + BFS 7 道 130 次

本次最大变化:LRU 缓存从 38 次暴涨到 55 次,跃升全榜第 2。


滑动窗口 + 双指针(6 道 · 230 次)

排名 题目 频次
1 LeetCode 3 无重复字符最长子串 129 次
2 LeetCode 88 合并两个有序数组 29 次
3 LeetCode 15 三数之和 27 次
4 LeetCode 42 接雨水 25 次
5 LeetCode 209 长度最小的子数组 12 次
6 LeetCode 239 滑动窗口最大值 9 次
  • LC3 出现 129 次,是第二名的 4 倍以上,字节脸面题,必须 10 分钟内 bug-free 写完
  • 接雨水(双指针 / 单调栈)两种解法都要会

动态规划(10 道 · 200 次)

排名 题目 频次
1 LeetCode 5 最长回文子串 33 次
2 LeetCode 53 最大子数组和 30 次
3 LeetCode 300 最长递增子序列 24 次
4 LeetCode 121 买卖股票的最佳时机 23 次
5 LeetCode 72 编辑距离(Hard) 20 次
6 LeetCode 322 零钱兑换 14 次
7 LeetCode 1143 最长公共子序列 12 次
8 LeetCode 122 买卖股票 II 12 次
9 LeetCode 198 打家劫舍 8 次
10 LeetCode 70 爬楼梯 7 次
  • 子串 / 子序列类 DP(LC5 / 300 / 1143)是重点
  • 编辑距离 Hard 题出了 20 次,字节面试官最爱
  • 写完必被追问:能否把 O(mn) 优化到 O(n)?

链表(9 道 · 189 次)

排名 题目 频次
1 LeetCode 206 翻转链表 40 次
2 LeetCode 25 K 个一组翻转链表 38 次
3 LeetCode 19 删除倒数第 N 个节点 27 次
4 LeetCode 23 合并 K 个升序链表 20 次
5 LeetCode 21 合并两个有序链表 14 次
6 LeetCode 141 环形链表 14 次
7 LeetCode 148 排序链表 13 次
8 LeetCode 92 反转链表 II 12 次
9 LeetCode 2 两数相加 11 次
  • 反转链表系列(206 / 25 / 92)三道合计 90 次,字节最爱考
  • 难度从入门到 Hard 都有,建议从简到难刷
  • 链表题数最多(9 道),必须全部熟练掌握

栈 / 队列 / 哈希 / 设计(8 道 · 155 次)

排名 题目 频次
1 LeetCode 146 LRU 缓存 55 次
2 LeetCode 20 有效的括号 27 次
3 LeetCode 1 两数之和 17 次
4 LeetCode 46 全排列 16 次
5 LeetCode 165 比较版本号 16 次
6 LeetCode 232 用栈实现队列 14 次
7 LeetCode 415 字符串相加 13 次
8 LeetCode 22 括号生成 7 次
  • LRU 缓存:38 次暴涨到 55 次,全榜第 2
  • 面试官要求手写双向链表 + 哈希表,禁用 LinkedHashMap / OrderedDict
  • 写完必被追问:并发场景下淘汰逻辑有没有问题?

二分查找 + 排序 / 数组(8 道 · 145 次)

排名 题目 频次
1 LeetCode 215 数组中的第K大元素 39 次
2 LeetCode 200 岛屿数量 32 次
3 LeetCode 56 合并区间 18 次
4 LeetCode 33 搜索旋转排序数组 15 次
5 LeetCode 34 排序数组中查找首尾位置 12 次
6 LeetCode 912 排序数组 11 次
7 LeetCode 4 寻找两个正序数组的中位数 10 次
8 LeetCode 75 颜色分类 8 次
  • LC215 快速选择算法是重点,面试常要求手写 partition
  • 二分查找变体(旋转数组、首尾位置)是经典考点

二叉树 + BFS(7 道 · 130 次)

排名 题目 频次
1 LeetCode 102 二叉树的层序遍历 28 次
2 LeetCode 236 二叉树的最近公共祖先 25 次
3 LeetCode 104 二叉树的最大深度 22 次
4 LeetCode 94 二叉树的中序遍历 18 次
5 LeetCode 124 二叉树中的最大路径和 15 次
6 LeetCode 199 二叉树的右视图 12 次
7 LeetCode 226 翻转二叉树 10 次
  • 层序遍历和 LCA 是面试最爱考的二叉树题
  • LC124 最大路径和是 Hard 题,出现 15 次,需要熟练掌握后序遍历思路

算法岗 ML 手撕 TOP8(共 212 次)

仅算法岗 / 大模型岗考察,研发 / 前端不考。

排名 题目 频次
1 多头注意力 MHA 59 次
2 交叉熵损失 Cross-Entropy 28 次
3 Self-Attention / Attention 24 次
4 RMSNorm / LayerNorm / BN 11 次
5 梯度下降(含变种) 7 次
6 AUC 计算(含 GAUC) 7 次
7 Transformer 完整结构 6 次
8 MLP 全连接层 forward/backward 6 次
  • Self-Attention 从 9 次飙到 24 次,涨幅最大
  • 每题必须:手写代码 + 口述推导 + 分析复杂度
  • 不再只考”会不会写”,开始问”为什么除以 \(\sqrt{d}\)?”

全榜 TOP10 · 优先刷题顺序

时间紧先刷这 10 道,覆盖约 40% 的字节手撕考察概率:

优先级 题目 频次
1 LeetCode 3 无重复字符最长子串 129 次
2 LeetCode 146 LRU 缓存 55 次
3 LeetCode 206 翻转链表 40 次
4 LeetCode 215 数组中的第K大元素 39 次
5 LeetCode 25 K个一组翻转链表 38 次
6 LeetCode 5 最长回文子串 33 次
7 LeetCode 200 岛屿数量 32 次
8 LeetCode 53 最大子数组和 30 次
9 LeetCode 88 合并两个有序数组 29 次
10 LeetCode 19 删除倒数第N个节点 27 次

三周刷题计划

第一周:TOP10 + 每个分类最高频那道

第二周:补齐 6 大分类,重点练链表和 DP

第三周:全量复盘,每道至少做两遍


字节手撕 = ACM 模式

字节面试手撕使用飞书 IDE + 字节在线环境,采用 ACM 模式——需要自己处理输入输出,不是 LeetCode 那种只写核心代码的模式。

很多人算法会写,但栽在 ACM 模式上。平时练习务必用 ACM 模式!

本站所有题解均采用 ACM 模式(标准输入输出),可直接作为面试手撕的练习素材。