目录
正在加载目录...

TikTok SDE 面经|OA 到 VO 四轮全记录:– InterviewShow

TikTok SDE 的流程走完了,从 OA 到 VO 四轮,整体偏实战。Coding 难度中等,System Design 贴短视频业务,BQ 会追跨团队协作。按自己碰到的情况写一下。

TikTok SDE 面经|OA 到 VO 四轮全记录:– InterviewShow

TikTok OA

CodeSignal,70 到 90 分钟,四道题。前两道偏模拟,比较送分;第三道矩阵相关,第四道有点调度/区间的味道。

题库和 Uber、Capital One 高度重合,刷过 CodeSignal 公共题的会有熟悉感。我那次四题过了,没有加电面,直接约了 VO。

第一轮:Coding

面试官是亚裔,开场问了几道网络和分布式一致性的基础。有一题没答完整,他直接跳过了,没揪着不放——我当时以为要凉,事后才发现这家更看重你能答到哪一层,而不是非得每题全对。

因为简历里写了 TypeScript,接着围绕类型系统聊了一会儿:泛型的使用场景、interface 和 type alias 的区别、组件库项目里怎么做类型收窄和条件类型。这块得结合项目讲,只背定义是接不住追问的。

然后深挖 Co-Op 实习,从需求到上线每个决策点都问——为什么选这个方案、当时有没有别的选项、内存泄漏为什么用 Instruments 定位、怎么定位的。这段花了不少时间。

Coding 是 LC 424 原题(最长重复字符替换),滑动窗口加字符计数,O(n) 过了,没有 follow-up。

也有同批同学碰到合并重叠区间:按 start 排序,能合并就更新 end,不能就新开;follow-up 是两个有序区间列表求交集,双指针扫。

其他Coding 高频题型总结

区间类:合并重叠区间(LC 56)、两个有序区间列表的交集(LC 986)、会议室系列(LC 252/253)。这类题在第一轮出现频率很高,排序加双指针或扫描线是核心。

滑动窗口:最长重复字符替换(LC 424)、滑动窗口最大值(LC 239)、最小覆盖子串(LC 76)。面试官喜欢在这类题上加短视频场景的包装,比如”找出播放时长超过 k 秒的最长连续视频序列”。

链表:带随机指针的链表深拷贝(LC 138)、合并 K 个有序链表(LC 23)、LRU Cache(LC 146)。LRU 是 SDE 岗高频题,要能闭眼写完 HashMap + 双向链表的完整实现。

DP:最大整除子集(LC 368)、最长递增子序列(LC 300)、编辑距离(LC 72)。DP 题在 TikTok 出现频率中等,但一旦出现通常是有 follow-up 的那种,得能讲清楚状态转移的直觉。

图 / 树:课程表系列(LC 207/210)、二叉树的各种路径问题、BFS 层序遍历变体。图题通常包了一层业务场景,比如”视频依赖关系检测”本质是拓扑排序。

第二轮:Coding

国人姐姐,先问 BQ。

第一题问上司违规怎么处理。我按 STAR 讲了一次合规争议,重点说了怎么留证据、提替代方案,没有只站队表态。

第二题问超预期的项目。讲了课程作业里的缓存优化,响应时间从 2 秒降到 200 毫秒,把前后数据和改动点都说清楚了。面试官追问了怎么测的、有没有监控,我补充了性能测试的方法。

Coding 两道,30 分钟写完:

最大整除子集(LC 368):先排序,DP 找最长链,parent 数组回溯构造实际子集。

带随机指针的链表深拷贝(LC 138):原地穿插节点,三步走,O(1) 额外空间。

写完还剩时间聊了技术栈。同批有人第二轮碰到的是 LRU Cache 或滑动窗口最大值,短视频场景下后者可以理解成”窗口期内找热门视频”。

第三轮:System Design

题目是设计实时热门视频检测系统——找出 5 分钟内播放量增速超 10 倍的视频,并提供查询接口。

我的思路:数据进 Kafka,Flink 做 5 分钟滑动窗口、每分钟滑一次(窗口重叠,避免卡在固定边界,突变更容易被捕捉),Redis 存每个视频每分钟的播放计数(Hash:视频 ID → 分钟时间戳 → 计数),算增速时取最近 5 分钟总和除以前 5 分钟总和,超过阈值就标记,查询接口直接打 Redis。

面试官追问了热点视频怎么处理、如果检测服务挂了怎么降级、误报怎么过滤。我补了本地缓存和简单的平滑过滤。整体把”为什么用滑动窗口”说清楚是这轮的关键。

System Design 其他高频方向

除了实时热门视频检测,TikTok 的 System Design 还有几个反复出现的方向,提前准备能省很多时间:

短视频 Feed 流设计:核心是推拉结合——大 V 账号用拉模式(发布时不主动推,用户打开 app 时拉取),普通用户用推模式(发布时写入粉丝的 feed 队列)。追问集中在:如何保证 Feed 的时效性、如何处理用户关注了几千个账号的场景、离线用户的 Feed 如何处理。

视频上传和存储分发:用户上传原始视频,后台转码成多种分辨率和格式,通过 CDN 分发给全球用户。考点是分片上传(断点续传)、转码任务调度、CDN 选择策略(就近原则 + 负载均衡)。追问通常会到:如果 CDN 节点挂了怎么回源、如何做视频的防盗链。

评论系统设计:支持点赞、回复、楼中楼、实时显示最新评论数。数据模型上用树形结构或者扁平化加 parent_id,存储上评论列表用 MySQL 加 Redis 缓存热门评论,实时计数用 Redis 计数器。追问集中在:如何处理热门视频下的高并发评论写入、评论排序逻辑(时间序 vs 热度序)。

TikTok for Business 广告系统(偏 infra 岗):广告竞价、预算控制、展示频控。核心是实时竞价(RTB)的延迟要求极低,存储上用 Redis 维护实时预算余额,追问通常到分布式计数的一致性和超卖问题。

第四轮:BQ + HM

项目深挖加行为题。TikTok 很看重跨文化、跨时区协作,碰到的问题包括:跨团队意见不一致怎么推进、deadline 很紧时怎么取舍、技术决策上和别人有分歧怎么处理。

我准备的故事尽量带具体动作和量化结果,不只是说”沟通解决了”。HM 会顺着项目再往下挖一层——你当时为什么选这个方案、如果重来会不会改。

几点体会

Coding 不是最难的部分,Medium 为主,时间够一般能写完。真正要提前准备的是:

简历上每一段经历都能讲清决策和结果,经得住三四层追问。

至少准备一套贴短视频业务的 System Design(热度检测、Feed 流、视频存储分发都是高频)。

BQ 里跨团队、合规争议、超预期交付这几类故事要有具体细节,不能空讲。

OA 题库和其他 CodeSignal 厂重合度高,提前练模拟和区间类题会省事很多。

有在准备 TikTok 的同学,可以来找我们聊聊。我们是 InterviewShow,做过 TikTok、Amazon、Meta 这些公司的面试,简历深挖的打磨、热度检测系统设计的思路拆解、BQ 故事的量化包装都有覆盖,一对一跟着走。

END