Question Study

TikTok / ByteDance 面试题专题

本地面经库有 176 条来源 URL 去重后的记录,其中 176 条有正文;目前整理出 216 道代表练习题,其中 216 道已完成独立深文。题目清单仍在逐帖核对和补充。

Reading Guide

如何使用这份题目清单

题目根据面经方向重新表述,其中可能包含站内攻略建议的训练题;它们不是公司的官方题库,也不保证下一场面试重复出现。

先分岗位

TikTok / ByteDance 的不同岗位和团队可能考不同内容。先核对 JD 与面试邀请,再选对应题型。

合并同题变体

相同核心考点只保留一条,后续的附加约束放在原题里练,避免把同一道题当成多道题刷。

练习顺序

先口述输入、输出和边界,再写核心方案;最后解释复杂度、失败路径和面试官可能追加的约束。

Deduplicated Question Map

按考点去重的代表题

同一题的追加条件合并在一条里。题目清单用于确定训练范围;具体流程和准备优先级见公司攻略。

Coding · 01

给定一个只含数字的字符串,返回所有可能的合法 IP 地址(不允许前导零)

给定一个只含数字的字符串,返回所有可能的合法 IP 地址(不允许前导零);follow-up 改为划分成任意 k 段,说明如何在原有 DFS 上加入参并控制复杂度。

查看上方解题路线 ↑

阅读这道题的独立深文 →
Coding · 02

TikTok 子数组和计数

TikTok 子数组和计数:前缀频次与严格正数的 O(1) 空间追问:先处理负数、零和重复前缀,再证明严格正数为什么允许双指针,区分计数与只判断存在。

解题切入:定义 P[j] 为前 j 个数之和,区间 [i,j) 满足 P[j]−P[i]=target。固定右端点 j,只需知道此前有多少 P[i]=P[j]−target,不能只记是否出现。

阅读这道题的独立深文 →
Coding · 03

TikTok 字符串压缩

TikTok 字符串压缩:只有 count×字符更短时才替换:以 aabcaaaade→aabc4xade 为例,按最大连续段比较实际编码长度,处理位数变化与解码歧义。

解题切入:先扫描到同字符 run 的结尾,令次数 c。候选长度为 digits(c)+2,原长度为 c;只有候选严格更短才输出 token。两字符/三字符不因重复就一定压缩。

阅读这道题的独立深文 →
Coding · 04

TikTok 任务依赖

TikTok 任务依赖:无限并行度下的最短完成时间:用拓扑顺序计算最早完成时间,证明关键路径下界可实现,辨别环、重复边与有限worker追问。

解题切入:任何依赖链上的任务都必须串行,因此其duration总和是完成时间下界。最长依赖链也就是关键路径;全部duration相加只有所有任务恰好在一条链上才成立。

阅读这道题的独立深文 →
Coding · 05

TikTok 两个字符串数组

TikTok 两个字符串数组:Trie 求每个查询的最长公共前缀:把第一组全部前缀合进Trie,逐项返回第二组的最长匹配长度,区分公共前缀与完整单词匹配。

解题切入:暴力逐query和每个source逐字符比较,复杂度随两数组乘积增长。Trie把source相同前缀存一次,让一次query只沿自己的字符向前走。

阅读这道题的独立深文 →
Coding · 06

TikTok 朋友分组

TikTok 朋友分组:能否分成两组组内互不认识的人?:把每条朋友边转为异色约束,用二分图染色检查奇环,并处理不连通图、非对称列表与自环。

解题切入:每条边(u,v)要求 color[u]≠color[v],颜色只有0/1。沿边给未染色邻居相反颜色;若已经同色,当前约束不可满足。

阅读这道题的独立深文 →
Coding · 07

TikTok 数位计数

TikTok 数位计数:0 到 10ⁿ−1 中不含连续 66 的数:用末位是否为6的两状态递推,按照 n=2 得99的示例确认零和较短数字也计入。

解题切入:状态A表示已构造前缀且末位不是6,B表示末位是6。初始空前缀A=1、B=0,空前缀只作为建数起点,不额外增加整数数量。

阅读这道题的独立深文 →
Coding · 08

TikTok 模板替换

TikTok 模板替换:重复 {name}、未知参数与替换值里的占位符:单次匹配原模板,明确占位符语法与未知键处理,避免替换值再次被解释及正则replacement转义问题。

解题切入:“替换内容重复”有两种含义:同一token出现多次,或替换值也含token。先规定一轮替换,再把所有原文本匹配交给回调处理,防止递归求值的循环。

阅读这道题的独立深文 →
Coding · 09

TikTok LRU Cache

TikTok LRU Cache:O(1) 链表操作与 TTL 追问的复杂度边界:写清get/put对最近使用顺序的影响,给双向链表实现,再拆过期清理、并发与分布式缓存。

解题切入:哈希表key→节点解决定位,双向链表解决任意节点O(1)摘除/放到头部。头尾哨兵使空表/单节点操作与一般操作一致,不用扫描找前驱。

阅读这道题的独立深文 →
Coding · 10

TikTok 手写最小堆

TikTok 手写最小堆:数组、上浮、下沉与空堆边界:从完全二叉树下标推导push/pop,不借助库堆,解释选择更小孩子与单元素pop。

解题切入:堆序是每个父值≤孩子值,不是整个数组升序。数组天然表示完整二叉树,只要尾部插入/删除就保留形状,无需为每个节点分配对象。

阅读这道题的独立深文 →
Coding · 11

TikTok 有序数组

TikTok 有序数组:找出现超过 n/3 次的数,如何做到 O(log n)?:利用长连续段必穿过分位下标,先找至多两个候选再二分计频,避免线性多数投票。

解题切入:排序保证同值占一个连续块。长度严格大于n/3的块必包含下标floor(n/3)或floor(2n/3)之一,否则只能落在两点分隔出的三个间隙中,任何间隙都不足以容纳这么长的块。

阅读这道题的独立深文 →
Coding · 12

ByteDance OA 局部峰

ByteDance OA 局部峰:两侧向外严格递减,如何线性检查?:把localArea定义为向外相邻比较的半径,预计算递增/递减长度,处理端点、平台及半径为零。

解题切入:直接对每个i检查半径R范围的相邻关系需O(nR)。因为各窗口大量重叠,可以预计算截至i左侧连续递增的边数L[i],及从i右侧连续递减的边数D[i]。

阅读这道题的独立深文 →
Coding · 13

TikTok 连续子数组

TikTok 连续子数组:最大 min+max 为什么只看相邻对?:对长度至少2的任意区间给出相邻对上界见证,消除双重枚举和单调队列的必要。

解题切入:固定任意合法区间,最大元素M所在位置一定有至少一个仍在区间里的相邻元素x,因为区间长度≥2。该区间最小值m≤x,于是m+M≤x+M。

阅读这道题的独立深文 →
Coding · 14

TikTok OA 建房

TikTok OA 建房:每次插入后返回最长连续整数区间:用区间端点长度连接左右区间,证明只读邻居时为何不会被内部旧长度误导,支持负坐标和重复查询。

解题切入:新位置x未占用时,若x−1已占用,它必是左侧区间的右端点,否则左区间会包含x,矛盾。同理x+1必是右区间左端点。这保证读到的长度是端点真值。

阅读这道题的独立深文 →
System Design · 15

TikTok 群聊设计

TikTok 群聊设计:500 人通知与最近 40 条消息怎样快速加载?:分离持久化消息、最近消息缓存、在线推送与未读游标,处理重连、热点群和重复发送。

解题切入:API拆send(group_id,client_msg_id,body)、history(group_id,before_seq,limit)、read_cursor(group_id,user_id,last_read_seq)。服务端核成员资格,client_msg_id在用户/群作用域幂等,不以请求到达次数发多条。

阅读这道题的独立深文 →
System Design · 16

TikTok 跨国家抢券

TikTok 跨国家抢券:怎样让每个人获券概率相同?:把公平定义为报名用户的等概率抽样,区分全球窗口报名、库存发放与先到先得的网络优势。

解题切入:先问要“先到先得”还是“每人等概率”。全球不同延迟下按服务端最早到达发券会偏向低延迟地区,不能同时保证其与均匀抽样等价。本文用窗口报名、窗口关闭后抽签满足明确概率目标。

阅读这道题的独立深文 →
System Design · 17

TikTok MLE

TikTok MLE:Fake Account Detection 的标签、图特征与处置闭环:先定义假账号和干预时机,再拆标签延迟、行为图、在线特征、成本阈值与误杀评估。

解题切入:把预测时点t和可用信息冻结:注册时模型不能读取未来30天行为,持续检测可以读取截至t的事件。标签确认晚于行为时,要单列成熟窗口和未定label,避免负样本里全是未来被查出的账号。

阅读这道题的独立深文 →
System Design · 18

TikTok Search

TikTok Search:最大化 CTR 的 Query Generation 系统:区分生成候选、可检索性与点击排序,给受约束目标、日志偏差、离线回放和线上实验方案。

解题切入:API输入prefix、会话上下文和允许的用户特征,输出候选query/score/version。先给词典prefix与热门查询基线,明确点击后的落地搜索必须能找到有用内容,避免只生成吸引点击的空结果。

阅读这道题的独立深文 →
AI Assisted Coding · 19

TikTok AI Coding

TikTok AI Coding:OrderValidator 动态规则 DAG,删除后怎样继承依赖?:用版本化规则图、拓扑执行与前置失败阻断,深入证明删除中间规则后的边连接不会丢失依赖关系。

解题切入:把问题分为规则定义、依赖图、执行状态。规则失败不应被表示为“图有环”,异常也与订单不满足价格限制不同;输出passed/failed/error/blocked能解释为何某项没有运行。

阅读这道题的独立深文 →
System Design · 20

TikTok Scheduler

TikTok Scheduler:动态任务依赖、Worker Polling 与失败重试:围绕不断添加task和dependency,定义可运行条件、租约、完成去重与高入度任务的状态维护。

解题切入:schema拆Task(id,version,state,remaining,attempt,lease_until)、Dependency(parent,child)唯一边、Attempt(id,worker,token,result)。把图编辑版本和执行attempt分开,一个任务重试不是新增另一个依赖节点。

阅读这道题的独立深文 →
Behavioral / HM · 21

TikTok HM

TikTok HM:怎样处理与 PM 或同事的冲突?:用共同目标、真实分歧、决策机制与执行结果说明冲突处理,区分说服、妥协和升级。

解题切入:先讲争议决定,而不是评价对方性格:例如上线时间与失败风险、指标定义与用户损害。说明PM为什么会坚持原方案,避免把工程师描述成唯一懂技术的人。

阅读这道题的独立深文 →
Behavioral / HM · 22

TikTok Skip Manager

TikTok Skip Manager:怎样培养 Engineer,让对方能独立负责?:把辅导从替人写代码扩展到诊断能力差距、分级授权、反馈与可持续独立交付。

解题切入:选一个具体人和具体能力目标,例如能够独立拆任务、排查故障或做设计,而不只说“我回答过很多问题”。说明你与对方的关系和能投入的时间。

阅读这道题的独立深文 →
Behavioral / HM · 23

TikTok BQ

TikTok BQ:需求模糊时,怎样把任务变成可验收的交付?:先分清目标、约束和依赖的不确定性,再用短周期验证与决策记录推进,而不是等完美需求。

解题切入:先描述模糊在哪:目标不一致、成功指标未定、依赖不明确或技术未知。单纯任务很难不等于模糊,先给一个当时不知道但会改变行动的问题。

阅读这道题的独立深文 →
Behavioral / HM · 24

TikTok Project Deep Dive

TikTok Project Deep Dive:最有挑战的项目,怎样说明自己的技术贡献?:以瓶颈、备选方案、个人决定与可验证结果串起项目,准备数据、架构和取舍的连续追问。

解题切入:先限定项目目标、用户和自己负责的边界,再选一个关键挑战。不能把整个平台技术列表当作自己全部设计的成果。

阅读这道题的独立深文 →
Behavioral / HM · 25

TikTok BQ

TikTok BQ:一次失败,怎样说明责任、恢复与机制改变?:保留真实损失与错误决策,拆立即止损和长期改进,并验证后来类似风险是否减少。

解题切入:选真实失败而非包装成优点的“过于努力”。说清未达到哪项承诺和对用户/同事的实际影响,不必泄露敏感信息但不能把损失抹掉。

阅读这道题的独立深文 →
Behavioral / HM · 26

TikTok BQ

TikTok BQ:多个任务同时紧急,怎样排序并兑现承诺?:用影响、时效、依赖和资源容量排序,解释被延后的任务、沟通与优先级变化。

解题切入:先给当时任务、截止、用户影响和可用人力,明确为什么不能全部同时完成。没有资源冲突的待办清单不构成有价值的排序故事。

阅读这道题的独立深文 →
Coding · 27

TikTok 计算器

TikTok 计算器:整数四则、括号与一元负号怎样解析?:用expression/term/factor文法处理优先级,明确定义向零取整,拒绝隐式乘法和残缺表达式。

解题切入:文法分三层:expression为term之间的加减,term为factor之间的乘除,factor为可带一元符号的整数或括号式。优先级由调用层级表达,不能见到运算符就按字符先后全部左算。

阅读这道题的独立深文 →
Coding · 28

TikTok 最长回文子串

TikTok 最长回文子串:中心扩展到 Manacher 的线性证明:用奇偶半径分开处理,推导镜像复用与右边界扩展,避免分隔符和Unicode冲突。

解题切入:中心扩展对n个字符中心及n−1个缝隙逐次比较,简单且O(n²)最坏;全相同字符会反复扩到很远。Manacher复用先前回文中已知的对称区间,避免重复确认内部字符。

阅读这道题的独立深文 →
Coding · 29

TikTok 岛屿数量

TikTok 岛屿数量:BFS 不修改 Grid,怎样覆盖每个分量?:明确四邻域、入队时去重和矩形输入,解释时间空间、递归风险及最大面积扩展。

解题切入:从每个未见过的陆地开始BFS,一次遍历收集一个连通分量,分量数量就是岛屿数量。水格不是节点,不因为边界上出现水就提前结束外层扫描。

阅读这道题的独立深文 →
Coding · 30

TikTok 同形岛屿

TikTok 同形岛屿:平移去重,再把旋转与翻转归为一类:用坐标归一化及八种对称变换生成canonical signature,说明为什么遍历顺序和面积不足以判形状。

解题切入:先用BFS收集岛屿所有(x,y),不把发现顺序作为签名。不同起点/邻居顺序会改变遍历序列,却不改变形状,排序坐标可消除这个无关差异。

阅读这道题的独立深文 →
Coding · 31

TikTok Word Break

TikTok Word Break:可重复使用词典词,怎样避免贪心误判?:以可达前缀为DP状态,在Trie内探索所有词结尾,解释最长词贪心失败、空词和结果输出。

解题切入:令reachable[i]表示前i个字符已经能完整分词。reachable[0]=True,只有已可达位置才发起下一个词匹配;不存在的前缀不能因为局部匹配了单词就转True。

阅读这道题的独立深文 →
Coding · 32

TikTok 直方图最大矩形

TikTok 直方图最大矩形:弹栈时宽度为什么是 i−left−1?:用非递减下标栈找左右较矮边界,讲清重复高度、末尾清栈和线性摊销。

解题切入:任意候选矩形的高度可取覆盖柱的最小高度。目标是在每个可能限制高度上找到能延伸的最大连续宽度,暴力枚举区间O(n²),单调栈把边界统一求出。

阅读这道题的独立深文 →
Coding · 33

TikTok 两步跳跃最小成本

TikTok 两步跳跃最小成本:从下标 0 到最后一格的 DP:按明确起终点计算访问成本,区别于可以从第1阶开始并跳出数组的标准楼梯版本。

解题切入:dp[i]表示必须落在i时的最小累计成本,dp[0]=cost[0],dp[1]=cost[0]+cost[1]。这两个初值来自强制起点,不是“从0或1任选”的楼梯模板。

阅读这道题的独立深文 →
Coding · 34

TikTok 指定数字组最大数

TikTok 指定数字组最大数:严格小于 N 的贪心回退:数字可无限复用,先匹配上界,再降低最右可行位;处理无解、零、前导零与长数字。

解题切入:同长度且不含前导零的非负十进制数,数值顺序与字典序相同。因此从左往右尽可能贴住N的前缀;一旦某位变小,后面放最大的可用数字便是该前缀下最优答案。

阅读这道题的独立深文 →
Coding · 35

TikTok 带正负号字符数组相加

TikTok 带正负号字符数组相加:绝对值比较、进位与借位:不转整段整数,拆符号和绝对值,统一零与前导零,覆盖长串进位和跨符号抵消。

解题切入:先校验并解析符号,将绝对值的前导零去掉;空符号后缀要报错。归一化后才能用长度和字典序比较绝对值,例如0009与10若直接按原长度比较就错。

阅读这道题的独立深文 →
Coding · 36

TikTok Alien Dictionary

TikTok Alien Dictionary:首个差异、重复边与无效前缀:从已排序单词推导字符先后,正确去重入度,检测前缀错误与环,并返回确定的拓扑顺序。

解题切入:先为每个出现过的字符建节点,即使它没有产生任何边。不能只登记相邻单词的首个差异,否则单字词、重复词和孤立字符会从答案消失。

阅读这道题的独立深文 →
Coding · 37

TikTok 无向图是否为树

TikTok 无向图是否为树:n−1 条边加无环为何足够?:使用按大小合并和路径压缩,处理自环、重复边、断连与单节点,并对照BFS判定。

解题切入:树的定义是无向连通无环图。连通树必有n−1条边;反过来,n−1条边单独不够,例如三角环加一个孤立节点。还需要检查无环或检查连通性,两者任选一种配合边数。

阅读这道题的独立深文 →
Coding · 38

TikTok 最长无重复子串

TikTok 最长无重复子串:左边界为什么只能前进?:用最近位置跳过重复字符,证明窗口不变量,处理abba、空串和Unicode字符定义。

解题切入:维护窗口[left,right]和每个字符最近一次出现位置last。处理text[right]时,如果这个字符此前出现过,则窗口左端至少要移到last[char]+1,才能删除上次出现。

阅读这道题的独立深文 →
Coding · 39

TikTok 股票单次交易

TikTok 股票单次交易:历史最低价与最大利润的扫描不变量:最多完成一次先买后卖,允许不交易;解释为何不累加所有涨幅,并覆盖递减和相等价格。

解题切入:把每个交易按卖出日j分类。固定卖出日后最优买价一定是此前日期的最低价格,因此无须枚举所有(i,j)组合。

阅读这道题的独立深文 →
Coding · 40

TikTok 最少会议室

TikTok 最少会议室:结束时间堆与同刻交接规则:按开始排序,释放所有已结束会议,用最大同时占用数证明最少房间数。

解题切入:最少房间数下界是任一时刻同时进行的会议数:这些会议不能共享房间。本题还要证明能达到下界,而不只是统计区间个数。

阅读这道题的独立深文 →
Coding · 41

TikTok Merge Intervals

TikTok Merge Intervals:排序扫描、嵌套区间与端点语义:闭区间相接合并,维护已处理并集,处理嵌套、重复、点区间并避免修改输入。

解题切入:按start再end排序。输出维护已扫描区间的并集,以起点递增且互不相交的区间表示;后来的起点不会回到此前输出区间的左侧。

阅读这道题的独立深文 →
Coding · 42

TikTok N 皇后

TikTok N 皇后:列与两类对角线的回溯不变量:逐行选列,常量平均冲突检查,成对撤销状态;说明对称解、空棋盘与枚举输出成本。

解题切入:按行递归,当前row只选一个col,因此同行冲突已由搜索结构排除。无需每次扫描整棋盘,只记录占用列、row−col对角线和row+col反对角线。

阅读这道题的独立深文 →
Coding · 43

TikTok Edit Distance

TikTok Edit Distance:前缀 DP、滚动行与操作序列取舍:插入、删除、替换均为单位成本,推导三项转移,区分字符交换,并用编辑图最短路核验。

解题切入:定义dp[i][j]为a前i字符变成b前j字符的最少操作数,状态是前缀长度而不是当前下标。边界dp[i][0]=i(全部删),dp[0][j]=j(全部插)。

阅读这道题的独立深文 →
System Design / Coding · 44

TikTok In-memory KV

TikTok In-memory KV:Snapshot 隔离、序列化与原子 Restore:定义全量快照与覆盖恢复,隔离可变值,验证版本和坏输入,并讨论锁、持久化与增量成本。

解题切入:先确认快照是什么:不是暴露当前dict的引用,也不是把所有key分批读完的弱一致视图。它应记录某个逻辑时点的完整状态;之后set/delete不能改变已返回快照。

阅读这道题的独立深文 →
OOD / System Design · 45

TikTok Short URL

TikTok Short URL:Class 接口、短码唯一性与分布式取舍:从shorten/resolve合同出发,区分哈希碰撞、数据库唯一约束和不可猜短码,推导存储与读扩展。

解题切入:类可把生成器、存储库和校验器注入,shorten负责校验、查幂等、分配code、事务插入,resolve只按code读状态和longUrl。不要把hash(longUrl)直接作为无需存储的可逆映射:有限短码无法恢复任意原URL。

阅读这道题的独立深文 →
Coding / Database · 46

TikTok 条件更新

TikTok 条件更新:Version Check、幂等键与事务回滚:定义版本和旧值前置条件,在一个事务内保存更新与幂等结果,分析并发重试和外部副作用。

解题切入:先把模糊的check变成明确谓词:id存在且当前version=expectedVersion且当前value=expectedValue。版本比较检测自上次读取后是否发生更新;旧值比较是业务前提,两者不能未经确认写成OR。

阅读这道题的独立深文 →
Coding · 47

TikTok Merge K Sorted Lists

TikTok Merge K Sorted Lists:堆 Key、平局与大链表内存:每路只保留一个候选,使用值和来源编号比较,解释惰性输出、缓冲与输入有序性边界。

解题切入:每条有序链表未消费部分的最小值就是其当前头节点;全局最小值一定是某一路的当前头。因此堆只放每路一个候选,不把所有N个节点都入堆。

阅读这道题的独立深文 →
Coding · 48

TikTok 二叉树最大路径和

TikTok 二叉树最大路径和:单臂 Gain、双臂候选与路径重建:路径可不经过根或叶,正确处理全负数,保存后继指针而非逐节点复制路径。

解题切入:定义gain(node)为从node开始、只向下一条分支延伸的最大和。它将作为父节点路径的一条臂,因此最多选左或右之一:node.value+max(0,gain(left),gain(right))。

阅读这道题的独立深文 →
Coding · 49

TikTok LIS

TikTok LIS:最小尾值、二分替换与严格递增:维护各长度递增子序列的最小尾值,解释tails不是答案路径,并推导重复值与重建。

解题切入:O(n²)DP定义dp[i]为以位置i结束的最优长度,扫描此前所有更小值即可;二分优化将状态按长度聚合,而非逐结束位置保留。

阅读这道题的独立深文 →
Coding · 50

TikTok Lower Bound

TikTok Lower Bound:第一个不小于目标的位置:用半开搜索区间证明二分终止与插入位置,覆盖重复值和目标在两端外。

解题切入:答案p是小于target的元素数量,满足[0,p)全部<target、[p,n)全部≥target。它允许为n,所以不能只在存在的元素下标中搜索。

阅读这道题的独立深文 →
Coding · 51

TikTok 星号括号

TikTok 星号括号:可达余额区间与全部合法展开:将星号明确为左括号、右括号或空,线性判定,并用DFS枚举去重后结果。

解题切入:标准括号余额balance是左数减右数,任何前缀不能负,最终必须0。有*时同一前缀可对应多个余额;只保存最小low和最大high,描述仍可达到的非负余额区间。

阅读这道题的独立深文 →
Coding · 52

TikTok LFU Cache

TikTok LFU Cache:频率桶、最小频率与同频 LRU:用key映射和频率桶维护平均O(1)读写,明确定义更新计数与零容量,不把TTL混入基础LFU。

解题切入:哈希表保存value与frequency,另一个映射把每个频率对应到按最近使用排序的OrderedDict桶。每个key恰好位于自己频率桶一次,最旧在桶首。

阅读这道题的独立深文 →
Coding · 53

TikTok Regex Match

TikTok Regex Match:点星语法、零次与重复状态:明确只支持.和后缀*的全串匹配,使用前缀DP处理空串与重复,避免指数回溯。

解题切入:dp[i][j]为text前i字符与pattern前j字符是否全匹配。普通字符或.必须消费双方各一格,取dp[i−1][j−1]且当前字符可匹配。

阅读这道题的独立深文 →
Coding · 54

TikTok 双端列表与 O(1) Index

TikTok 双端列表与 O(1) Index:环形数组和扩容边界:区分位置访问和查找值,用固定容量环实现两端操作及随机访问,并说明动态扩容摊还成本。

解题切入:普通双链表有O(1)两端操作,但按位置访问要走到第i节点,不能同时凭这一个结构获得O(1)随机索引。动态数组随机访问常量,但左端插入若搬全部元素会线性。

阅读这道题的独立深文 →
Coding · 55

TikTok 二叉树最远两点

TikTok 二叉树最远两点:高度与直径的两个状态:直径按边数计算,允许不经过根,后序保存单臂高度并组合左右路径。

解题切入:定义height(node)为从node向下最深路径的节点数,空子树0。单节点height=1,这样经过node的左右端点距离恰为height(left)+height(right)。

阅读这道题的独立深文 →
Coding · 56

TikTok 24 点

TikTok 24 点:任意括号、非交换运算与精确分数:每次合并一对数,覆盖所有表达式树,保留减除两个方向并用Fraction避免浮点判等。

解题切入:一个表达式是二叉运算树,任一非叶节点把两个子表达式结果合成一个。逆向看可以反复从当前数池取两项合并,最终剩一项;穷举所有两项与运算覆盖全部括号结构。

阅读这道题的独立深文 →
Technical Fundamentals · 57

TikTok Python 面向对象

TikTok Python 面向对象:封装、继承与多态如何落到测试设计:从状态边界和可替换接口解释三特征,区分继承与组合,避免把私有命名当安全隔离。

解题切入:封装是让对象维护自身不变量并通过明确接口修改状态,例如Payment的金额、币种和状态转换不能任意改写;仅把字段放进class并不自动保证业务约束。

阅读这道题的独立深文 →
Technical Fundamentals · 58

TikTok Python 拷贝

TikTok Python 拷贝:赋值、浅复制与深复制的对象图:用嵌套列表和共享引用辨认别名,解释deepcopy保留内部共享以及循环处理。

解题切入:赋值b=a只让两个名字绑定同一对象,没有复制;对其中任意名字做可变操作都影响同一个对象。对象身份与值相等是不同判断。

阅读这道题的独立深文 →
Technical Fundamentals · 59

TikTok Python List 与 Tuple

TikTok Python List 与 Tuple:可变性、嵌套对象和 Hash:区分容器槽位不可变与元素深度不可变,解释什么时候tuple能当字典key。

解题切入:list允许替换、插入、删除元素;tuple固定元素引用序列,不能重新绑定某个槽位。两者均可索引、切片与迭代,不应说tuple天然没有顺序。

阅读这道题的独立深文 →
Technical Fundamentals · 60

TikTok Python Dict

TikTok Python Dict:Key、顺序、冲突与查询复杂度:明确可哈希键、插入顺序和相等键语义,区分平均常量查询与复合操作原子性。

解题切入:dict是键到值的映射,key必须可哈希,且相等key应具有相同hash。value可为可变对象;存入并不自动复制,所有权仍由接口合同决定。

阅读这道题的独立深文 →
Technical Fundamentals · 61

TikTok Python 装饰器

TikTok Python 装饰器:包装时机、参数透传与测试风险:解释函数替换语义、闭包和wraps,区分同步与异步包装,并避免共享状态污染。

解题切入:@decorator是定义时把函数传给decorator并用返回值重新绑定名字,等价f=decorator(f);不是每次调用前都重新执行整个装饰器构造。

阅读这道题的独立深文 →
Technical Fundamentals · 62

TikTok Python __new__ 与 __init__

TikTok Python __new__ 与 __init__:创建实例和初始化边界:区分返回对象与初始化,说明不可变类型构造、自定义工厂和不返回本类实例的情况。

解题切入:__new__(cls,...)负责创建或返回实例,通常调用super().__new__(cls);__init__(self,...)对已创建实例初始化字段,不负责返回新实例。

阅读这道题的独立深文 →
Technical Fundamentals · 63

TikTok Python Generator

TikTok Python Generator:惰性执行、暂停与资源清理:解释yield创建和推进时机、单次消费与生成器内存,避免把惰性等同零存储。

解题切入:含yield的函数调用会创建生成器对象,函数体不是立即全部执行;next或迭代才推进到下一yield并返回值,同时保存局部变量和执行位置。

阅读这道题的独立深文 →
Technical Fundamentals · 64

TikTok Python Iterator

TikTok Python Iterator:可迭代对象与单次迭代器:用iter/next协议区分可重复集合与消费状态,解释StopIteration和测试边界。

解题切入:可迭代对象能够通过iter获得迭代器;迭代器通过next逐项返回,并在耗尽时抛StopIteration。迭代器的iter通常返回自身,保存当前消费位置。

阅读这道题的独立深文 →
Technical Fundamentals · 65

TikTok Python self

TikTok Python self:绑定方法、实例状态与类方法:说明self是命名约定而非保留关键字,区分实例、classmethod和staticmethod参数绑定。

解题切入:self是实例方法首参数的惯用名称,并非保留关键字。obj.method(...)访问绑定方法后会自动把obj传作第一个参数,Class.method(obj,...)则显式传入。

阅读这道题的独立深文 →
Technical Fundamentals · 66

TikTok Python 序列化

TikTok Python 序列化:数据契约、类型还原与信任边界:比较JSON与对象序列化,明确schema、版本、字符编码和坏输入处理。

解题切入:序列化把状态编码为可存储传输表示,反序列化把表示解析成数据;不等于赋值或深复制。要先定义交换的是值还是对象身份、共享关系和类类型。

阅读这道题的独立深文 →
Technical Fundamentals · 67

TikTok Python 内存泄漏

TikTok Python 内存泄漏:可达引用、循环回收与资源释放:区分业务持续持有、循环对象和原生分配,按稳定负载定位增长,避免只看RSS断言泄漏。

解题切入:有GC仍会出现逻辑泄漏:全局缓存、队列、回调注册、日志/异常引用持续保持本应释放对象可达,垃圾回收器不能删除仍可达的业务状态。

阅读这道题的独立深文 →
Technical Fundamentals · 68

TikTok 单向链表倒数第五

TikTok 单向链表倒数第五:双指针间距和长度不足:从链表访问特点推导快慢指针,统一倒数第k,证明终止位置且不修改输入。

解题切入:单向链表节点有value与next,没有按位置随机访问。插删已知节点附近可常量,但找到某个位置仍需沿next前进,不能把所有链表操作都说成O(1)。

阅读这道题的独立深文 →
Technical Fundamentals · 69

TikTok 哪种排序更快

TikTok 哪种排序更快:稳定性、数据分布与内存约束:不把快排当统一答案,比较归并、堆、插入与非比较排序,并设计公平基准。

解题切入:先问n、key比较成本、已排序程度、重复值、是否需稳定、内存预算与是否外存;“最快”不是一个只靠算法名称就能回答的指标。

阅读这道题的独立深文 →
Technical Fundamentals · 70

TikTok 快排平均 O(n log n)

TikTok 快排平均 O(n log n):随机 Pivot 递推与最坏反例:给出期望比较次数递推,解释随机化假设、重复值与递归栈深度。

解题切入:一次partition后pivot定位置,左右子问题规模分别k和n−1−k。本次线性成本并不自动证明总n log n,必须分析递归划分是否长期平衡。

阅读这道题的独立深文 →
Technical Fundamentals · 71

TikTok 栈与队列

TikTok 栈与队列:顺序契约、BFS/DFS和背压:从LIFO/FIFO选择遍历与调度结构,说明操作复杂度和并发任务队列边界。

解题切入:栈后进先出LIFO,适合未完成调用、括号解析、撤销历史和DFS;队列先进先出FIFO,适合BFS层序、按到达调度和生产消费缓冲。

阅读这道题的独立深文 →
Technical Fundamentals · 72

TikTok 二叉树遍历

TikTok 二叉树遍历:前中后序、层序与显式栈:解释访问时机与用途,区分树和图,处理深树栈风险与BST顺序条件。

解题切入:前序在递归子树前访问root,常用于复制/序列化结构;中序在左后右前访问,BST条件下得到有序值;后序在子树结束后访问,适合高度、释放与树DP聚合。

阅读这道题的独立深文 →
Technical Fundamentals · 73

TikTok 红黑树

TikTok 红黑树:黑高、旋转与最坏查询保证:从颜色不变量证明高度界,说明插删修复职责,不把红黑树与二叉堆混淆。

解题切入:红黑树首先满足BST有序关系,再加颜色约束:节点红或黑,root黑,空叶黑,红节点孩子不为红,每个节点到后代空叶路径黑节点数相同。空叶是概念哨兵,不一定存实际对象。

阅读这道题的独立深文 →
Technical Fundamentals · 74

TikTok 数据库索引

TikTok 数据库索引:为什么快、何时不快及写成本:用选择性、回表、复合键和执行计划解释索引,不把建索引当所有查询的万能优化。

解题切入:索引保存按可查找key组织的辅助入口,使等值或范围查询无需逐行判断整表。表扫描O(N)行,树查找可沿少量页定位匹配区间,再读取结果行。

阅读这道题的独立深文 →
Technical Fundamentals · 75

TikTok B+Tree

TikTok B+Tree:页扇出、叶层顺序与范围扫描:解释内部导航和叶层条目,推导页访问规模及分裂/合并取舍。

解题切入:内部节点保存分隔键和孩子页指针用于导航,叶层保存键与记录定位或数据入口;叶层常按键序链接,支持连续范围扫描。数据如何聚簇由表组织决定。

阅读这道题的独立深文 →
Technical Fundamentals · 76

TikTok ACID

TikTok ACID:事务边界、隔离级别与故障验证:逐项连接转账不变量,区分数据库一致性与应用正确性,以及提交持久化和外部副作用。

解题切入:Atomicity是事务内部要么全部生效要么不生效,避免只扣A未加B;异常时回滚已纳入事务的动作,不等于撤销事务外发出的消息。

阅读这道题的独立深文 →
Technical Fundamentals · 77

TikTok SQL Join

TikTok SQL Join:匹配、保留行、NULL 与过滤位置:通过重复key和NULL例子区分inner/outer/cross,并解释WHERE为什么会消掉左连接未匹配行。

解题切入:INNER JOIN只保留条件为True的配对,LEFT保留所有左行并给未匹配右列NULL,RIGHT对称,FULL保留两侧未匹配行,CROSS返回所有笛卡尔配对。

阅读这道题的独立深文 →
Technical Fundamentals · 78

TikTok 手机打开网页

TikTok 手机打开网页:DNS、连接、HTTP 与渲染链路:按缓存、传输和渲染路径解释关键技术,区分各协议条件并定位首屏瓶颈。

解题切入:先解析URL并检查导航/缓存策略,可能从HTTP缓存或Service Worker取内容,并非每次都从DNS到连接完整重做。解释常见新连接路径时先注明冷启动条件。

阅读这道题的独立深文 →
Technical Fundamentals · 79

TikTok 线程与进程

TikTok 线程与进程:共享内存、隔离与 Python 并行条件:区分并发和并行,按IO/CPU任务选择机制,并说明GIL不能保护多步业务不变量。

解题切入:进程通常拥有独立地址空间与资源隔离,线程在同进程共享地址空间但有独立执行栈;共享降低数据交换成本,同时提高竞态和故障波及风险。

阅读这道题的独立深文 →
Technical Fundamentals · 80

TikTok 微信扫码支付测试

TikTok 微信扫码支付测试:订单状态、金额与重试闭环:按扫码到入账状态机设计功能、并发、故障与对账测试,不只罗列页面点击。

解题切入:先画状态:待支付→处理中→成功或失败/关闭;成功是否可退款及退款状态另定义。订单、支付交易和账本是不同对象,不能用页面提示当最终资金真相。

阅读这道题的独立深文 →
Technical Fundamentals · 81

TikTok 七天金条日结

TikTok 七天金条日结:两次切割与 1、2、4 交换:明确允许找零与回收,再用二进制子集表示证明两次切割足够且必要。

解题切入:把整条按七天工资归一化为7单位,切在1和3位置,得到1、2、4三段。两次切割不是每天都切,而是预先获得可反复交换的三段。

阅读这道题的独立深文 →
Technical Fundamentals · 82

TikTok 模块测试风险

TikTok 模块测试风险:数据连接、用户管理与权限管理:把模块功能转成业务不变量,按越权、隔离、并发和故障制定测试矩阵。

解题切入:先讲每模块保护的资产与不变量:连接不能泄露凭证或串租户,用户生命周期要可追踪,权限判断要最小授权且拒绝默认。列接口再逐项判断风险,避免只报“增删改查”。

阅读这道题的独立深文 →
Test Design · 83

TikTok Friends 新功能测试

TikTok Friends 新功能测试:任务分配、缺陷定位与安全发布:以测试lead视角从需求风险到回归、发布门槛和监控,明确分工与缺陷修复闭环。

解题切入:把需求拆成角色、数据可见性、入口、状态和失败行为,确认已有friends功能哪些会被影响。先给核心不变量,例如非好友不可看到私密内容,再安排测试,不从“写多少case”起步。

阅读这道题的独立深文 →
Test Design · 84

TikTok REST API 自动回归

TikTok REST API 自动回归:契约、权限、幂等与数据隔离:从接口合同构建分层测试集,覆盖失败和并发,不让共享测试数据造成随机失败。

解题切入:先把请求方法/path、schema、验证规则、状态码和副作用写成可验证合同。正常输入只是一类,缺字段、类型错、越界、未知字段和错误媒体类型按约定返回,不自行猜标准码。

阅读这道题的独立深文 →
Test Design · 85

TikTok 性能改进验证

TikTok 性能改进验证:基线、负载、分位与持续监控:分离容量和延迟,控制实验变量,验证优化不会损失正确性,并建立上线监测闭环。

解题切入:建立可重复基线,固定版本、硬件、数据、请求分布和缓存策略;优化前后同条件比较。热缓存与冷启动分开,不能旧版冷/新版热便称加速。

阅读这道题的独立深文 →
Test Design · 86

TikTok 全栈 E2E

TikTok 全栈 E2E:关键旅程、真实依赖与可诊断失败:在UI到后端数据之间验证真实journey,控制fixture、异步等待与运行成本。

解题切入:从用户价值挑少数关键journey,例如登录→创建资源→刷新查看→授权另一用户→撤销权限。明确每步UI、API与持久化预期,避免只断言按钮存在。

阅读这道题的独立深文 →
Test Design · 87

TikTok 测试覆盖率

TikTok 测试覆盖率:发现空白、断言质量与风险盲区:区分行、分支和业务场景覆盖,解释高覆盖不能证明正确,用变异与缺陷反馈补足。

解题切入:行覆盖说明代码行被执行,分支覆盖更能显示条件两边是否到达;它们能找未测区域、比较变更影响和阻止覆盖突然下降,但没有证明输出正确。

阅读这道题的独立深文 →
Test Design · 88

TikTok 为什么申请测试岗位

TikTok 为什么申请测试岗位:兴趣、经历与质量工程贡献:用真实经历说明对SDET的理解,连接自动化、风险和开发协作,避免套用编造故事。

解题切入:先说明动机具体来自何种实际工作:例如定位跨模块缺陷、搭可重复自动化或改善发布反馈。只说“喜欢找bug”不足以表达工程岗位关注设计可测性与质量风险。

阅读这道题的独立深文 →
Coding · 89

TikTok Throttle

TikTok Throttle:立即执行与窗口末最后一次调用:保留最后参数和this,按上次实际执行计冷却,处理定时器延迟、边界、取消与重入。

解题切入:区分debounce:后者常在最后一次输入后等完整间隔;本题窗口锚定上次执行,500/700ms的输入不能把第一轮尾触发拖到1700ms。

阅读这道题的独立深文 →
Coding · 90

TikTok var/let 与 setTimeout

TikTok var/let 与 setTimeout:循环绑定和循环外访问:逐步解释同一var绑定、每次let绑定,以及换let后外部log抛错但已注册回调仍可执行。

解题切入:var的i在此作用域只有一个绑定,五个闭包读取同一变量而非定义当时的值。循环同步完成后i=5,所以外部console先输出5,随后五个timer各读到5。

阅读这道题的独立深文 →
ML Coding / Fundamentals · 91

TikTok Softmax CE

TikTok Softmax CE:稳定前向、LogSumExp 与反向梯度:从logits推导平均交叉熵和p−onehot梯度,不先取易下溢的概率对数,覆盖大logit。

解题切入:每行p_j=exp(z_j)/Σexp(z_k)。减去该行最大值m不改变概率,exp(z_j−m)不再因为单个大正logit直接溢出;行方向要与类别轴一致。

阅读这道题的独立深文 →
ML Coding / Fundamentals · 92

TikTok Self Attention

TikTok Self Attention:Q/K/V 形状、Mask 与多头拼接:按维度推导缩放点积,区分self/cross attention并处理padding、因果与整行遮蔽。

解题切入:输入投影为Q=XWq、K=XWk、V=XWv,scores=QKᵀ/√d,行softmax后A乘V。Q/K内维必须一致,K/V条目数同m;softmax沿key轴,不能沿query轴。

阅读这道题的独立深文 →
ML Coding / Fundamentals · 93

TikTok Transformer FFN

TikTok Transformer FFN:逐 Token 非线性与 Attention 的分工:解释FFN在通道上的变换、残差与扩展维度,区分跨token混合与每token共享网络。

解题切入:attention根据上下文混合不同token的value;FFN对每个token表示单独做通道变换,参数跨位置共享。它不直接在位置之间连边,但输入已经可包含上下文。

阅读这道题的独立深文 →
ML Coding / Fundamentals · 94

TikTok Attention 为什么除 √d

TikTok Attention 为什么除 √d:方差、Softmax 饱和与假设:从独立零均值坐标推导点积尺度,说明缩放不保证所有真实网络score方差为一。

解题切入:score未缩放为Σq_i k_i。独立且单位方差下每项均值0方差1,不同项协方差0,和的方差d、标准差√d。维度增加会让典型绝对值增大。

阅读这道题的独立深文 →
ML Coding / Fundamentals · 95

TikTok AUC-ROC

TikTok AUC-ROC:排序配对、同分半票与单类边界:用正负配对概率推导分组统计,解释阈值与不平衡局限,避免同分顺序影响分数。

解题切入:ROC点由阈值产生TPR=TP/(TP+FN)和FPR=FP/(FP+TN),AUC可解释为随机正样本分数高于随机负样本的概率,加同分一半。它主要评价排序,不直接选业务阈值。

阅读这道题的独立深文 →
ML Coding / Fundamentals · 96

TikTok 手写 Logistic Regression

TikTok 手写 Logistic Regression:稳定 BCE、权重和偏置梯度:从线性logit到sigmoid推导平均损失,用有限差分核梯度,说明训练与阈值不同步骤。

解题切入:模型p=σ(z),它是概率模型,不先把p按0.5硬化再求损失。BCE=−ylogp−(1−y)log(1−p),可改写softplus(z)−yz。

阅读这道题的独立深文 →
ML Coding / Fundamentals · 97

TikTok K-means

TikTok K-means:给定质心迭代与均值最优证明:严格使用输入initial centers,定义空簇和平局,区分最终质心与最后一次assignment。

解题切入:Lloyd交替:按当前中心把每点分到最近簇,再对每簇求均值更新中心。不要替换给定initial为随机或前k点,那会改变要求的输出。

阅读这道题的独立深文 →
ML Coding / Fundamentals · 98

TikTok Bagging 手写

TikTok Bagging 手写:有放回成对采样、独立模型与投票:保存x/y配对,给每个基分类器不同bootstrap,定义多数平局并解释方差下降前提。

解题切入:bootstrap抽的是样本索引,同一索引同时选择x_train[i]与y_train[i];分别采样x和y会破坏监督关系。抽N次但可能重复/遗漏原样本,不能改成无放回shuffle。

阅读这道题的独立深文 →
ML Coding / Fundamentals · 99

TikTok Dropout

TikTok Dropout:训练缩放、推理关闭与分布不等价:推导inverted dropout前后向与方差,解释保持期望而非保证非线性输出分布相同。

解题切入:训练用随机mask打断部分通路并使表示不依赖固定共适应组合;不是每次删除网络参数或永久剪枝,梯度仍在保留路径传播。

阅读这道题的独立深文 →
ML Coding / Fundamentals · 100

TikTok 两种 Norm 怎么比较

TikTok 两种 Norm 怎么比较:BN/LN 轴、统计与推理:用明确的BN/LN训练例子说明归一化轴和运行统计,保留未给的实际Norm名称缺口。

解题切入:归一化通式为(x−μ)/√(var+ε)再用γ/β仿射。第一步先说明统计轴,不能仅背公式,BN/LN区别主要在什么样本集合共同计算μ/var。

阅读这道题的独立深文 →
ML Fundamentals · 101

TikTok 混淆矩阵

TikTok 混淆矩阵:Recall >90%、FPR <10% 的严格判断:分清真实正负分母,处理等号和零分母,不用Accuracy替代指定条件。

解题切入:Recall=TP/(TP+FN),FPR=FP/(FP+TN)。FP位于预测正而实际负,FN预测负而实际正,矩阵横竖轴不同会让视觉位置变,先用语义标记。

阅读这道题的独立深文 →
ML Fundamentals · 102

TikTok Ensemble

TikTok Ensemble:Bagging、Boosting 与快速基线取舍:解释线性/非线性组合潜力、训练依赖和解释性,不把随机森林与GBM速度精度当绝对定律。

解题切入:集成把多个基模型输出结合,可能利用互补误差和不同关系,但不保证一集成就优于任何单模型。先检查单模型弱是偏差、方差、特征缺失还是数据泄漏。

阅读这道题的独立深文 →
ML Fundamentals · 103

TikTok 决策树分裂

TikTok 决策树分裂:Gini、Entropy 与 Classification Error:把加权不纯度下降和剪枝区分,说明分类错误率也是指标但区分细微改善较弱。

解题切入:Gini=1−Σp_k²,Entropy=−Σp_klogp_k(0log0取0),Classification Error=1−maxp_k,三者都在纯节点为0,可描述节点混杂程度。Pruning是结构复杂度控制,不是节点impurity公式。

阅读这道题的独立深文 →
ML Fundamentals · 104

TikTok 训练 Loss 持续上升

TikTok 训练 Loss 持续上升:学习率、目标定义与诊断顺序:用二次函数解释过大步长,纠正强正则必导致上升,逐层检查数据和梯度。

解题切入:先核对测量:同一训练集、mean/sum归约、loss是否含正则、batch是否变难、train/eval模式及记录频率。比较不同量会制造“上升”假象。

阅读这道题的独立深文 →
ML Fundamentals · 105

TikTok L1/L2/L0

TikTok L1/L2/L0:为什么有的正则能把系数归零:用一维最优解推导soft threshold和L2收缩,区分目标诱导稀疏与普通梯度更新。

解题切入:L1在0处有折角,其subgradient是区间[−1,1];最优条件允许一段小信号a被完全抵消,得到soft threshold sign(a)max(|a|−λ,0)。

阅读这道题的独立深文 →
ML Fundamentals · 106

TikTok GMM 的 EM

TikTok GMM 的 EM:责任度、加权均值与协方差:完整推导E/M两步,区分软分配与K-means,并说明奇异协方差和局部最优。

解题切入:模型p(x)=Σπ_k N(x|μ_k,Σ_k),隐藏变量z表示成分。直接最大化log和难,EM用当前参数计算后验责任度再优化其加权完全数据目标。

阅读这道题的独立深文 →
ML Fundamentals · 107

TikTok 分类为什么常选 CE 而非 MSE

TikTok 分类为什么常选 CE 而非 MSE:似然与饱和梯度:说明概率MSE可以用于分类,比较sigmoid后的梯度,而非错误断言MSE完全不可用。

解题切入:CE对应二元观察y的Bernoulli负对数似然,对logit梯度p−y。互斥多类对应softmax CE,任务模型与loss应一致。

阅读这道题的独立深文 →
ML Fundamentals · 108

TikTok KL Loss

TikTok KL Loss:方向、交叉熵关系与零概率:先定义P/Q和支持集,解释非对称与蒸馏,不把KL一概称更好或更对称的损失。

解题切入:KL(P||Q)=ΣPlog(P/Q)=cross-entropy(P,Q)−entropy(P)。当P固定时,优化forward KL与对P的CE只差常数,并不是自动更优的另一任务。

阅读这道题的独立深文 →
ML Fundamentals · 109

TikTok LogQ Correction

TikTok LogQ Correction:采样分布、重要性权重与有限样本偏差:从全量归一化项推导减logq,区分负采样与确定正例,不承诺有限样本梯度完全无偏。

解题切入:全量目标Z=Σ_j exp(s_j)。负例按q抽取时未经校正的和更偏向常出现item,模型训练分母不同于全目录。q是采样机制概率,不是模型预测概率,也不是任意点击率。

阅读这道题的独立深文 →
ML Fundamentals · 110

TikTok On-policy / Off-policy

TikTok On-policy / Off-policy:行为策略、目标策略与数据复用:明确谁产生数据、谁被优化,解释分布偏移、重要性权重与离线支持集。

解题切入:on-policy在当前(或最近固定)目标策略产生的数据上估计/更新;off-policy允许用不同μ的数据学习π,关键是目标期望分布与采样分布是否相同。

阅读这道题的独立深文 →
ML Fundamentals · 111

TikTok TRPO

TikTok TRPO:策略改进目标、KL 信赖域与近似边界:解释surrogate和局部KL约束,区分理论单调改进与实际近似算法保证。

解题切入:策略梯度大步更新可能改变访问状态分布,使旧数据的优势估计失效。TRPO将新策略与旧策略差异限制在信赖域,以让局部代理目标更可信。

阅读这道题的独立深文 →
ML Fundamentals · 112

TikTok PPO Clip

TikTok PPO Clip:正负 Advantage、概率比与限制方向:推导min两分支,避免把clip当严格KL约束,说明旧logprob与loss符号。

解题切入:比率用exp(logπnew−logπold),动作/响应与采样时同一mask和条件上下文。旧概率必须保存并停止梯度,不能每轮重算当前模型再称old。

阅读这道题的独立深文 →
ML Fundamentals · 113

TikTok GAE

TikTok GAE:TD 残差、反向递推与终止 Bootstrap:从折扣残差和推导O(T)递推,区分真实终止与截断,说明偏差方差折中。

解题切入:TD残差δ_t=r_t+γV(s_t+1)−V(s_t),真终止下一value不应计。GAE优势A_t=Σ_l(γλ)^l δ_t+l直到轨迹边界,利用value作baseline。

阅读这道题的独立深文 →
ML Fundamentals · 114

TikTok DPO

TikTok DPO:偏好 Pair、参考模型与稳定 Loss:定义chosen/rejected数据与相对logprob差,区分固定参考和旧策略,覆盖长度偏差及标注噪声。

解题切入:数据记录prompt、chosen、rejected、来源和偏好理由,两响应须针对同条件,训练/验证按prompt或来源去重防泄漏。模糊平局和无法判断的pair要有处理政策,不硬造偏好。

阅读这道题的独立深文 →
ML Fundamentals · 115

TikTok LLM Post-training RL

TikTok LLM Post-training RL:奖励、采样与评估闭环:解释偏好对齐和可验证奖励场景,区分SFT/偏好优化/在线RL,防止reward hacking。

解题切入:SFT用示范响应拟合,偏好优化用相对选择,在线RL从当前policy生成响应得到奖励再更新。三者能组合,但数据流、模型数量与算力不同。

阅读这道题的独立深文 →
ML Fundamentals · 116

TikTok Linear Attention

TikTok Linear Attention:结合律、前缀状态与信息取舍:用正特征核替代softmax点积,推导不建n²矩阵的计算,并说明不是精确普通attention。

解题切入:普通显式attention构造n×m两两score;线性核可按结合律先算S=Σφ(k)vᵀ和z=Σφ(k),每query输出φ(q)ᵀS/(φ(q)ᵀz),不建完整矩阵。

阅读这道题的独立深文 →
ML Fundamentals · 117

TikTok GQA

TikTok GQA:Query Head 分组与 KV Cache 规模:在MHA和MQA之间共享K/V,保留每个query head独立注意力,量化缓存节省及质量取舍。

解题切入:MHA每query head配一组K/V,MQA全部query共享一组,GQA将query heads分组,每组共享一组K/V。共享不是把query也平均成同一个向量。

阅读这道题的独立深文 →
ML Fundamentals · 118

TikTok FlashAttention

TikTok FlashAttention:分块在线 Softmax 与 IO 成本:保持精确attention目标,解释跨块max/分母/分子重标定,不把显存优化当线性计算。

解题切入:普通流程把QKᵀ写HBM,再softmax读写权重,最后乘V,n²中间张量增加显存与带宽。分块将部分Q/K/V载入快速存储,直接累计输出。

阅读这道题的独立深文 →
Technical Fundamentals · 119

TikTok KV Cache

TikTok KV Cache:为什么缓存 K/V、Prefill 与 Decode 成本:解释因果前缀复用和位置偏移,量化缓存显存并区分算力、带宽与淘汰取舍。

解题切入:因果模型中历史位置隐藏状态不依赖未来token,因此在权重/上下文相同的推理中,各层旧K/V可复用。新token只生成本次Q/K/V并与缓存历史交互,不重跑全部前缀每层。

阅读这道题的独立深文 →
Technical Fundamentals · 120

TikTok RoPE

TikTok RoPE:坐标对旋转与相对位置点积:推导二维旋转的范数与相对偏移性质,说明相邻/半拆配对及长上下文限制。

解题切入:第j对坐标用角position·frequency_j旋转,二维矩阵为[[cos,−sin],[sin,cos]]。Q/K同规则处理,V通常不需这份旋转,具体模型另确认。

阅读这道题的独立深文 →
Technical Fundamentals · 121

TikTok React Class 与 Function

TikTok React Class 与 Function:状态、生命周期与迁移:比较实例方法和Hook闭包,说明迁移不是简单一一替换生命周期。

解题切入:class组件依实例、this、state/setState与生命周期方法;function组件每次render执行函数,Hook管理状态与效果,局部闭包捕获该次render的值。二者都遵守纯render与提交副作用边界。

阅读这道题的独立深文 →
Technical Fundamentals · 122

TikTok Hooks

TikTok Hooks:调用顺序、状态闭包与 Effect 清理:从稳定Hook槽位解释规则,区分render计算与外部同步,避免遗漏依赖和订阅泄漏。

解题切入:常规Hook需要每次render保持调用顺序,不能条件/循环改变某个state/effect出现位置。要按条件影响行为,可把条件放Hook内部或拆独立组件,配合lint。

阅读这道题的独立深文 →
Technical Fundamentals · 123

TikTok useMemo

TikTok useMemo:缓存计算、依赖身份与正确性边界:先测昂贵计算,再判断缓存是否有效,不把useMemo当副作用或业务状态保证。

解题切入:useMemo缓存某次计算结果,在依赖不变时复用;它不是保证组件不render,也不是改变源数据的持久store。计算应在没有memo时也正确。

阅读这道题的独立深文 →
Technical Fundamentals · 124

TikTok React Native 难点

TikTok React Native 难点:平台差异、交互性能与原生边界:用真实工程问题组织回答,区分JS/原生工作和架构版本,不把跨平台等同一次测试。

解题切入:跨平台共享业务/UI逻辑不消除iOS/Android差异:权限、键盘、安全区、返回手势、字体、后台生命周期及支付/相机等接口要分别验证。

阅读这道题的独立深文 →
Technical Fundamentals · 125

TikTok HTTP Query vs Header

TikTok HTTP Query vs Header:资源选择、元数据与缓存:按参数语义选择位置,说明URL日志暴露和缓存vary,避免把header当天然保密。

解题切入:query通常描述资源筛选/分页/排序,例如?status=open&page=2;header常表达认证、内容协商、追踪或条件请求。两者不是简单“都能传所以随便”。

阅读这道题的独立深文 →
Technical Fundamentals · 126

TikTok 前端 SEO

TikTok 前端 SEO:可抓取内容、搜索意图与效果验证:从索引、标题内容和性能到Search Console证据,区分排名、点击与咨询转化。

解题切入:先查爬虫能访问的HTML和重要链接、状态码、robots/noindex、canonical与sitemap,确认目标页可索引。内容若只在需登录或失败脚本后出现,要针对抓取验证。

阅读这道题的独立深文 →
Technical Fundamentals · 127

TikTok 浏览器渲染

TikTok 浏览器渲染:DOM、样式、Layout、Paint 与合成:解释关键渲染路径、阻塞和重复计算,区分网络加载与主线程首屏瓶颈。

解题切入:HTML解析形成DOM,CSS解析形成样式规则,计算节点样式并建立参与渲染的结构;并非DOM所有节点都必需视觉布局,display:none等会影响。

阅读这道题的独立深文 →
Technical Fundamentals · 128

TikTok JavaScript Deep Clone

TikTok JavaScript Deep Clone:循环、共享引用与属性合同:用WeakMap复制对象图,保稀疏数组和null原型,拒绝未定义的访问器及特殊对象。

解题切入:JSON stringify/parse会丢undefined、symbol等、改变类型并对循环失败,不是通用deepclone;structuredClone有自己的类型/原型合同,也不能替代未定义的自定义要求。

阅读这道题的独立深文 →
语言与工程基础 · 129

Java 多态

Java 多态:运行时分派如何支持可替换的实现:解释 Java 面向对象与多态,用接口调用不同实现,区分重载、重写与静态方法。

解题切入:先说封装、继承与多态分别解决状态边界、实现复用和行为替换,再用同一个接口的两个实现说明运行时分派。

阅读这道题的独立深文 →
语言与工程基础 · 130

Java 抽象类与接口

Java 抽象类与接口:共享状态还是定义能力:比较抽象类与接口,解释默认方法、构造与单继承限制,给出选择原则。

解题切入:接口表达调用方需要的能力,类可实现多个接口;抽象类更适合一族对象共享受保护状态、构造约束或模板流程。

阅读这道题的独立深文 →
语言与工程基础 · 131

Java HashMap

Java HashMap:哈希、碰撞、扩容与键的合同:解释 HashMap 的桶定位、碰撞处理、扩容代价及可变键风险。

解题切入:hashCode 把键映射到散列值,再定位桶;碰撞时仍要用 equals 区分键。相等键必须同 hash,否则检索合同被破坏。

阅读这道题的独立深文 →
语言与工程基础 · 132

Java final

Java final:引用不能重赋值为何不等于对象不可变:分别解释 final 变量、方法与类,并讨论不可变对象和安全发布。

解题切入:final 局部变量或字段只能按初始化规则赋值,引用不能重新指向别的对象;被引用对象内部仍可能变化。

阅读这道题的独立深文 →
语言与工程基础 · 133

Java 异常

Java 异常:传播、资源释放与 finally 的边界:解释 try/catch/finally 与 try-with-resources,避免吞错和覆盖原异常。

解题切入:从可恢复性决定在哪里处理:边界层把明确失败转换为业务错误,底层保留 cause,无法处理时传播。checked 与 unchecked 影响编译期声明要求,不直接代表错误严重程度。

阅读这道题的独立深文 →
语言与工程基础 · 134

Java 序列化

Java 序列化:对象图、版本与不可信输入:解释 Java 对象序列化的用途、对象图身份、版本兼容与跨服务格式选择。

解题切入:序列化把状态转为可存储或传输表示;对象图可能有共享引用和环,格式需要保留或明确舍弃身份。transient 字段不会按默认字段机制持久化,恢复后要重建派生状态。

阅读这道题的独立深文 →
语言与工程基础 · 135

JVM 内存区域与 Java 内存模型

JVM 内存区域与 Java 内存模型:两个问题分别回答:解释堆、栈、方法区和运行时常量池,并区分 happens-before 与可见性。

解题切入:线程共享堆存放对象;每线程 JVM 栈含调用帧、局部变量和操作数栈,程序计数器记录执行位置;方法区承载类相关结构,运行时常量池属于相应类/接口。

阅读这道题的独立深文 →
语言与工程基础 · 136

Java GC

Java GC:可达性、停顿与仍被引用的内存泄漏:解释垃圾回收如何判定对象存活,为什么缓存与监听器仍可能泄漏。

解题切入:从 GC roots 沿引用图找存活对象;失去可达路径的对象才具备回收资格,引用计数不能单独处理环。循环引用在不可达时并不必然泄漏。

阅读这道题的独立深文 →
语言与工程基础 · 137

Java 单元测试框架

Java 单元测试框架:用测试边界解释选择与经验:比较 JUnit、TestNG 与 Spock,并区分断言、mock 和真实集成测试。

解题切入:先描述被测单元与依赖:纯规则用参数化例子,边界错误用精确断言,有状态服务验证可观察行为。

阅读这道题的独立深文 →
语言与工程基础 · 138

CI/CD

CI/CD:可复现产物、发布门禁与回滚:从一次提交解释构建、测试、产物、环境与发布,回答实践追问。

解题切入:CI 检查提交能否构建并通过必要验证;CD 把同一个已验证产物送往目标环境。构建一次、记录版本和依赖,比每个环境重新拼装更容易审计。

阅读这道题的独立深文 →
语言与工程基础 · 139

自动化提升效率

自动化提升效率:从重复步骤到可验证流程:回答用脚本改进工作流,说明输入、失败处理、人工复核与可测收益。

解题切入:选择重复且规则清晰的任务,列人工流程和出错点,先自动化最稳定的部分。输入输出合同比脚本语言更重要。

阅读这道题的独立深文 →
语言与工程基础 · 140

ConcurrentHashMap

ConcurrentHashMap:线程安全为何仍需原子复合操作:解释并发 map 的可见性、复合更新、迭代语义与跨键事务边界。

解题切入:单个 map 操作线程安全,但 get 后 put 是两个操作。计数使用 merge/compute 或合适的原子值,避免丢更新。

阅读这道题的独立深文 →
语言与工程基础 · 141

Java 并发队列

Java 并发队列:无界吞吐、阻塞与背压:比较 ConcurrentLinkedQueue 与有界 BlockingQueue,解释生产消费系统的容量。

解题切入:ConcurrentLinkedQueue 是非阻塞的无界 FIFO 队列,不提供等待元素的 take。非阻塞不意味着每个线程都在有限步内完成。

阅读这道题的独立深文 →
语言与工程基础 · 142

LinkedHashMap

LinkedHashMap:插入顺序、访问顺序与 LRU:解释双链顺序结构如何叠加哈希查找,以及 LRU 的并发限制。

解题切入:HashMap 桶提供按键定位,链式顺序结构提供确定遍历。默认保留插入次序,更新已有键通常不改插入位置。

阅读这道题的独立深文 →
语言与工程基础 · 143

C++ 容器

C++ 容器:底层结构、失效规则与访问成本:用 vector、deque、list、map 与 unordered_map 比较访问、插入和内存。

解题切入:vector 连续存储,随机访问常数,末尾插入摊还常数;扩容可能搬移元素,容量改变时引用/指针/迭代器失效。

阅读这道题的独立深文 →
语言与工程基础 · 144

C++ 段错误

C++ 段错误:从非法访问到可复现定位:解释空指针、越界、悬挂引用和栈溢出,并区分未定义行为与必然崩溃。

解题切入:段错误常来自访问无效或受保护地址;数组越界、use-after-free、失效迭代器、错误指针运算和过深递归都可能触发。

阅读这道题的独立深文 →
语言与工程基础 · 145

C++ 构造器为何不能 virtual,析构器何时应 virtual

C++ 构造器为何不能 virtual,析构器何时应 virtual:从构造链和基类指针删除解释 virtual 的合法位置。

解题切入:构造器不是可重写的普通虚函数,不能声明 virtual。创建哪个完整类型必须在构造前由调用表达式或工厂决定。

阅读这道题的独立深文 →
语言与工程基础 · 146

C++ 虚函数分派

C++ 虚函数分派:实际类型、override 与 ABI:解释基类引用如何找到派生实现,避免把 vtable 当语言唯一实现。

解题切入:虚调用按对象动态类型的最终覆写函数执行;override 让编译器检查签名匹配,避免 const 或参数误差造成隐藏。

阅读这道题的独立深文 →
语言与工程基础 · 147

C 为什么不支持 C++ 式函数重载

C 为什么不支持 C++ 式函数重载:解释 C 函数名与原型规则,比较可变参数、宏和显式命名的能力。

解题切入:C 没有按参数类型建立同名重载集合的语言机制,同一可见函数标识符需要兼容声明。参数原型用于检查调用,不用于选择多个同名实现。

阅读这道题的独立深文 →
语言与工程基础 · 148

C 字符串转整数

C 字符串转整数:完整解析与溢出检查:用 strtol 区分零、非法输入、尾部字符和范围错误,明确 int 目标范围。

解题切入:atoi 无法可靠区分合法0与失败,不适合严格校验。strtol 指定 base=10,调用前 errno=0,保存 endptr。

阅读这道题的独立深文 →
语言与工程基础 · 149

JavaScript rest parameter

JavaScript rest parameter:数组收集与 spread 的方向:解释 rest 参数、默认参数与 arguments,区分展开语法。

解题切入:function f(first,...rest) 中 rest 是真正数组,可用 map/filter,first 不包含在 rest;没剩余时为空数组。

阅读这道题的独立深文 →
语言与工程基础 · 150

Spring 依赖注入与 Bean 生命周期

Spring 依赖注入与 Bean 生命周期:构造、初始化和销毁:解释 @Autowired、构造注入、Bean 创建顺序与代理影响,区分 scope。

解题切入:IoC 容器解析定义、创建实例并注入依赖,再运行相关初始化与后处理。构造注入把必需依赖表达为构造合同,使对象少出现半初始化状态。

阅读这道题的独立深文 →
语言与工程基础 · 151

HTTP GET 与 POST

HTTP GET 与 POST:安全、幂等、缓存与请求内容:比较请求语义,说明 URL、消息体与 HTTPS,不靠长度传言选择方法。

解题切入:GET 请求资源表示,语义安全且幂等;安全指客户端请求不意图改变服务端业务状态,不表示完全没有日志等副作用。

阅读这道题的独立深文 →
Coding · 152

TikTok 多层双链表扁平化

TikTok 多层双链表扁平化:DFS 顺序与原地拼接:把 child 链插到当前节点后,修复 prev/next,并证明无需栈的空间优化。

解题切入:栈版保存原 next,再走 child,自然得到深度优先顺序;重点是复用节点身份并修复反向链接,而不是仅输出值。

阅读这道题的独立深文 →
Coding · 153

TikTok 去元音再反转

TikTok 去元音再反转:字符合同与一次扫描:去掉大小写 ASCII 元音后反转剩余字符串,说明 Unicode 字素边界。

解题切入:删除与反转可交换顺序:对原串从末尾向前遍历,只收集非元音字符。得到与“先过滤再反转”一致结果。

阅读这道题的独立深文 →
Coding · 154

TikTok 段落排版

TikTok 段落排版:贪心换行与左右补空格:按宽度装入连续单词,超过才换行,并明确超长词与空段落。

解题切入:维护当前词列表和含词间空格的长度。加入新词需要 len(word)+(当前非空?1:0),超过 W 时先输出当前行,再用该词开新行。

阅读这道题的独立深文 →
Coding · 155

TikTok 链表分组翻转

TikTok 链表分组翻转:完整组探测与指针不变量:先实现整链反转,再反转每 k 个节点,保留不足 k 的尾组。

解题切入:整链反转维护 previous/current/following,改当前 next 前先保存 following。局部更新始终保留尚未处理链。

阅读这道题的独立深文 →
Coding · 156

TikTok 两个有序数组第 k 大

TikTok 两个有序数组第 k 大:分割边界与重复排名:将第 k 大转为合并序列第 N-k+1 小,二分较短数组的分割点。

解题切入:设取 A 前 i 项、B 前 j 项构成左半,i+j=r。i 只能在 max(0,r-lenB)..min(r,lenA) 范围。

阅读这道题的独立深文 →
Coding · 157

TikTok 二叉树层内连接

TikTok 二叉树层内连接:BFS 边界与常数空间追问:将每层节点按从左到右用 next 连接,覆盖旧指针并处理稀疏树。

解题切入:BFS 每轮固定当前 queue 长度,只处理该层节点;孩子入队不会混入当前层。

阅读这道题的独立深文 →
Coding · 158

TikTok LCS

TikTok LCS:前缀状态、滚动行与重建取舍:求两序列最长公共子序列,推导相等与不等分支,区分公共子串。

解题切入:dp[i][j] 表示两前缀的最优长度。任一前缀为空时0;末元素相等可共同使用,得到 dp[i-1][j-1]+1,否则至少舍弃其中一个,取上/左最大。

阅读这道题的独立深文 →
Coding · 159

TikTok 判断 BST

TikTok 判断 BST:祖先范围与重复键合同:用祖先上下界检查所有节点,说明局部比较不足,并避免数值哨兵。

解题切入:只检查直接孩子无法约束孙子。例如根10、左5的右12,局部5<12却违反整棵左子树都<10。

阅读这道题的独立深文 →
Coding · 160

TikTok 二叉树右视图

TikTok 二叉树右视图:每层最右节点与稀疏边界:按明确题名练习右视图,输出每个深度最右可见值并独立建树验证。

解题切入:DFS 先访问右,再访问左。某深度第一次到达的节点就是从右侧看的最右节点,之后同深度跳过。

阅读这道题的独立深文 →
Coding · 161

TikTok MinStack

TikTok MinStack:前缀最小值与重复最小项:每层保存当前最小值,让弹出自然恢复此前最小,不扫描整个栈。

解题切入:每个栈项存(value,当前前缀minimum)。push 的新最小=min(value,旧最小),pop 同时去掉该层值与摘要。

阅读这道题的独立深文 →
Coding · 162

TikTok MaxStack

TikTok MaxStack:栈序、最大序与懒删除:用双链表与最大堆支持 popMax,明确同值删最靠近栈顶者和长期内存。

解题切入:双链表维护栈次序,节点能常数 unlink;最大堆按(-value,-sequence) 排序,sequence 唯一,平值优先新项。

阅读这道题的独立深文 →
Coding · 163

TikTok 实时中位数

TikTok 实时中位数:两堆的秩边界与规模限制:维护较小一半与较大一半,解释 MaxStack 不能直接替代中位数结构。

解题切入:最大堆 lower 存较小一半,最小堆 upper 存较大一半;所有 lower≤upper,大小差保持0或lower多1。

阅读这道题的独立深文 →
Coding · 164

TikTok 正整数树向上路径和

TikTok 正整数树向上路径和:祖先前缀与退出回滚:判断是否存在某节点沿父指针上行的路径和等于 target,不允许跨左右分支。

解题切入:上行连续路径与同一祖先链上的下行路径集合相同。DFS 到节点的 root前缀和 S,若祖先之前某前缀为 S-target,则中间链之和为 target。

阅读这道题的独立深文 →
Coding · 165

TikTok 最大子数组和

TikTok 最大子数组和:以当前位置结尾的状态:用 Kadane 递推解释重新起点,处理全负数和非空合同。

解题切入:ending 表示以当前项结束的最优非空子数组。它只能从当前值重新开始或接在上一 ending 后,故 max(x,ending+x)。

阅读这道题的独立深文 →
Coding · 166

TikTok 矩阵第 k 小

TikTok 矩阵第 k 小:先确认排序保证再选算法:未假定行列有序,先用大小 k 最大堆精确求秩,再比较有序矩阵优化。

解题切入:扫描所有元素,最大堆维护截至当前最小 k 项。未满先入堆,满后仅比堆顶更小的项替换;堆顶始终是目前第 k 小。

阅读这道题的独立深文 →
Coding · 167

TikTok 登录流统计

TikTok 登录流统计:合法日期、时区与逐用户逐日计数:校验日期时间后聚合登录次数,明确格式、时区、重复事件与排序。

解题切入:先检查固定格式,再用日历解析校验闰年和各月天数;正则只能查外形,不能证明2月30日合法。

阅读这道题的独立深文 →
Coding · 168

TikTok 数组最大绝对差

TikTok 数组最大绝对差:极值证明与题意澄清:针对 max|a[i]-a[j]| 训练,证明等于最大值减最小值,不混入索引差。

解题切入:任意两值都位于 [min,max],绝对差不超过 max-min。选择取得两端的项就能达到该上界,故最优等于极差。

阅读这道题的独立深文 →
Coding · 169

TikTok 大数据流分位数

TikTok 大数据流分位数:秩定义、外排序与近似摘要:从某个 percentile 的精确秩出发,比较两堆、磁盘归并和 quantile sketch。

解题切入:先问精确/近似、p是否固定、数据量N是否已知、能否重放、更新频率与磁盘预算。不同分位数定义可能在同一数据上给不同结果。

阅读这道题的独立深文 →
ML Coding / Design · 170

TikTok 神经网络训练与推理

TikTok 神经网络训练与推理:尺寸、Batch、梯度和评估:从给定输入输出与隐藏层尺寸搭建网络,写完训练循环与推理模式切换。

解题切入:先确认 X[B,d]、标签[B]整数类ID,第一层W1[h,d]、第二层W2[C,h],输出[B,C],loss直接接logits而非先softmax。

阅读这道题的独立深文 →
ML Coding / Design · 171

TikTok 手写 Transformer Decoder

TikTok 手写 Transformer Decoder:因果注意力与完整前向:明确 Decoder-only 训练版,拆解多头、FFN、残差、Norm 与词表投影,并验证无未来泄漏。

解题切入:输入ids[B,T]查token embedding并加position,得到[B,T,d];Q/K/V线性投影拆为[B,H,T,dh],dh=d/H。

阅读这道题的独立深文 →
ML Coding / Design · 172

TikTok GPT 与 BERT

TikTok GPT 与 BERT:可见性、预训练目标与任务适配:比较因果生成与双向掩码理解,并把模型结构与指标选择联系起来。

解题切入:两者都用Transformer基本块,核心区别是attention可见性与训练目标。GPT式用因果mask预测下一个token;BERT式使用双向上下文重建被mask的token。

阅读这道题的独立深文 →
ML Coding / Design · 173

TikTok LoRA

TikTok LoRA:低秩增量、初始化与小数据边界:推导冻结主权重时的低秩训练,解释参数节省为何不等于少样本保证。

解题切入:前向y=Wx+(α/r)BAx,训练只更新adapter及明确选择的额外项;反向仍需通过冻结基础网络传播激活梯度,冻结不代表无需计算。

阅读这道题的独立深文 →
ML Coding / Design · 174

TikTok 多模态 Embedding 训练

TikTok 多模态 Embedding 训练:对齐、负例与检索评估:设计图像、视频和文本的共同表征,区分生成训练与可检索向量目标。

解题切入:定义检索单位:视频全局、片段或图片,文本是query/caption,正例关系如何标注。处理一对多等价正例,避免把正确相关样本当负例。

阅读这道题的独立深文 →
ML Coding / Design · 175

TikTok VLM 项目深挖

TikTok VLM 项目深挖:结构、数据、训练与延迟证据:用一张计算流程解释视觉语言模型,逐项回答端到端、reasoning时间与已知限制。

解题切入:先画image/video→视觉encoder→projector→语言模型→输出,说明视觉token数、维度匹配和连接方式。若用cross attention,与直接拼token方案分开。

阅读这道题的独立深文 →
ML Coding / Design · 176

TikTok 视频 Caption 部署

TikTok 视频 Caption 部署:帧预算、显存与调度:在算力和显存约束下设计多模态视频描述服务,拆分可降成本的阶段。

解题切入:流程拆上传解码、采帧/切片、视觉encoder、LLMprefill/decode、结果存储;每段记录耗时、队列等待和内存峰值。

阅读这道题的独立深文 →
ML Coding / Design · 177

TikTok 视频广告检索

TikTok 视频广告检索:Embedding 候选、精排与水印任务:利用已有 caption/embedding 快速找相关视频,设计过滤、索引更新与水印幂等。

解题切入:品牌query先解析实体与硬过滤,embeddingANN召回,再结合caption文本、品牌安全、版权和业务特征精排。早期多路召回防单向量漏重要关键词。

阅读这道题的独立深文 →
ML Coding / Design · 178

TikTok 大数据库隐私风险分类

TikTok 大数据库隐私风险分类:扫描、证据与误报:设计字段与记录级风险识别,比较规则、模型和 RAG,并保护检测流水线本身。

解题切入:先定义检测对象是schema字段、单元格、文档还是跨字段组合;列风险taxonomy和人工标注协议,避免“隐私”变成无边界标签。

阅读这道题的独立深文 →
ML Coding / Design · 179

TikTok Query → Brand

TikTok Query → Brand:理解、召回、排序与评价:设计搜索词推荐品牌的完整链路,明确实体歧义、冷启动与商业约束。

解题切入:query理解做归一化、语言识别、实体/类别/属性提取;保留歧义,不把词典硬匹配当唯一答案。

阅读这道题的独立深文 →
ML Coding / Design · 180

TikTok 推荐模型选型

TikTok 推荐模型选型:基线、召回和排序的不同目标:比较流行度、协同过滤、双塔与交互排序,按数据、延迟和冷启动选择。

解题切入:建立可测基线:热门/规则与简单线性模型。确认曝光日志、用户/物品ID、反馈延迟和负采样,避免模型复杂度掩盖数据问题。

阅读这道题的独立深文 →
ML Coding / Design · 181

TikTok Embedding 推荐同质化

TikTok Embedding 推荐同质化:多样性重排与质量护栏:在相关性候选上减少重复商品、商家与类别集中,比较 MMR 和约束重排。

解题切入:先诊断同质化来源:近重复向量、热门曝光、召回单路、候选库存或排序目标。只在重排加噪声可能降低相关性又未解决根因。

阅读这道题的独立深文 →
ML Coding / Design · 182

TikTok 过拟合

TikTok 过拟合:验证切分、容量与深度学习正则:从训练与验证差距诊断泛化失败,比较数据、早停、正则与模型容量。

解题切入:过拟合表现为对训练数据细节拟合强、对未见样本泛化差,先看按实体/时间正确切分的学习曲线与错误切片。

阅读这道题的独立深文 →
ML Coding / Design · 183

TikTok Precision、Recall 与 F1

TikTok Precision、Recall 与 F1:混淆矩阵和阈值:从 TP/FP/FN/TN 推导指标,解释零分母、类别不平衡与业务成本。

解题切入:Precision=TP/(TP+FP)衡量预测正中的正确比例,Recall=TP/(TP+FN)衡量真实正被发现比例。F1=2TP/(2TP+FP+FN),强调二者平衡但不含TN。

阅读这道题的独立深文 →
ML Coding / Design · 184

TikTok XGBoost

TikTok XGBoost:梯度提升、二阶目标与树复杂度:把决策树、随机森林与 XGBoost 的训练机制联系起来,说明目标近似与正则。

解题切入:单树按分裂纯度/损失选择局部划分;随机森林用bootstrap和特征随机性训练相对独立树,平均降低方差。XGBoost逐轮加树修正现有预测目标。

阅读这道题的独立深文 →
System Design / 基础 · 185

TikTok 奖励活动压垮后端

TikTok 奖励活动压垮后端:止损、准入与发奖一致性:处理奖励机制引发的高 QPS 故障,拆解短期恢复与长期容量设计。

解题切入:故障中先看错误率、连接/线程池、数据库与重试量,暂停活动放量或启用准入,保护核心服务。不要只扩机器而任由客户端重试放大。

阅读这道题的独立深文 →
System Design / 基础 · 186

TikTok MySQL 异构热迁移

TikTok MySQL 异构热迁移:快照、CDC、对账与切流:设计不停服务的数据库迁移,解释双写失败窗口和回滚的真实条件。

解题切入:定义字段转换、主键、时区、精度、null、删除语义和查询兼容,使用真实样本做双读结果对照。

阅读这道题的独立深文 →
System Design / 基础 · 187

TikTok 登录登出人数峰值

TikTok 登录登出人数峰值:差分与平台规则:从会话区间还原人数曲线,先定义局部峰是单点还是整段平台。

解题切入:每区间start加1、end减1,对差分做前缀得到每秒在线会话数;同秒入/出合并,自然符合半开语义。

阅读这道题的独立深文 →
System Design / 基础 · 188

TikTok Kafka 工作原理

TikTok Kafka 工作原理:分区日志、Offset 与处理语义:从写入、复制、消费和提交位置解释消息系统,区分重放与外部副作用。

解题切入:topic分partition,每partition追加日志提供局部顺序。key分区决定相同业务实体是否能保持顺序;跨partition不自动有全局顺序。

阅读这道题的独立深文 →
System Design / 基础 · 189

TikTok 分布式 KV

TikTok 分布式 KV:分片、复制与读写一致性:设计 get/put/delete,明确线性一致或最终一致,再谈扩容和故障恢复。

解题切入:API定义value大小、missing、delete、条件写和一致性。key路由到partition,metadata记录配置epoch,避免新旧路由同时接写。

阅读这道题的独立深文 →
System Design / 基础 · 190

TikTok CAP

TikTok CAP:网络分区时到底牺牲什么:用具体读写执行解释一致性和可用性的冲突,不把 CAP 当三个产品标签。

解题切入:两个副本之间网络断开,客户端分别访问两侧。如果双方都立即接受不协调写并读本地值,可能无法表现为单一实时顺序。

阅读这道题的独立深文 →
System Design / 基础 · 191

TikTok 并发设计

TikTok 并发设计:从共享状态到原子边界:解释竞态、锁与乐观版本,围绕项目证明不变量而非列工具。

解题切入:列共享状态和不变量,再定位读写及需要原子的多步操作。race不仅是同时写,同步缺失还会造成可见性和顺序问题。

阅读这道题的独立深文 →
System Design / 基础 · 192

TikTok 浏览器连不上后端

TikTok 浏览器连不上后端:分层证据与最小复现:从浏览器网络面板定位 DNS、连接、TLS、HTTP 与 CORS,而非直接重启服务。

解题切入:收集URL、时间、受影响范围、network错误/状态、请求ID和最近变更。浏览器和命令行结果不同是重要线索。

阅读这道题的独立深文 →
System Design / 基础 · 193

TikTok DNS 故障

TikTok DNS 故障:权威、递归缓存与记录差异:定位 NXDOMAIN、SERVFAIL、陈旧记录与地域差异,解释 TTL 的恢复限制。

解题切入:用dig查询A/AAAA/CNAME与响应状态,记录resolver、TTL和答案;逐层比较权威答案与递归缓存,必要时trace委派。

阅读这道题的独立深文 →
System Design / 基础 · 194

TikTok Linux 磁盘满

TikTok Linux 磁盘满:块、Inode 与已删未关文件:用只读检查定位容量来源,再按保留策略释放或扩容,验证写入恢复。

解题切入:先看df -h与df -i,区分字节耗尽和inode耗尽,核对真正报错的mount;容器/卷/配额也可能与主机磁盘不同。

阅读这道题的独立深文 →
System Design / 基础 · 195

TikTok IPv4 与 IPv6

TikTok IPv4 与 IPv6:地址、发现、MTU 与双栈排障:比较协议与部署差异,不把 IPv6 当天然加密或单纯更长地址。

解题切入:IPv4地址32位,IPv6地址128位,表示/前缀不同。IPv6用邻居发现相关ICMPv6机制,不直接照搬ARP。

阅读这道题的独立深文 →
System Design / 基础 · 196

TikTok 网络设备接入节点

TikTok 网络设备接入节点:接口、地址、路由与隔离:解释物理/虚拟接口接入步骤,区分 attach、链路 up 与真正可达。

解题切入:物理设备先确认驱动/内核识别和link状态;虚拟设备确认类型、namespace与所属bridge/网络。ip link show只告诉接口信息,不等于地址与路由正确。

阅读这道题的独立深文 →
System Design / 基础 · 197

TikTok Port Forwarding 与 Tunneling

TikTok Port Forwarding 与 Tunneling:映射和封装:用 SSH 本地转发说明端口映射,再解释隧道不必天然加密。

解题切入:port forwarding把某个监听地址/端口的连接转到另一端点,可由NAT、代理或SSH实现;tunneling把协议/数据通过另一个载体传输。二者可同时成立。

阅读这道题的独立深文 →
System Design / 基础 · 198

TikTok HTTP 状态码

TikTok HTTP 状态码:错误分类、重试与业务合同:解释常见 2xx/3xx/4xx/5xx,并把状态与幂等重试、权限和观测联系起来。

解题切入:200成功、201创建、202接受但未完成、204无响应内容;3xx重定向/缓存相关语义需按具体码,304不是普通资源正文。

阅读这道题的独立深文 →
System Design / 基础 · 199

TikTok libvirt

TikTok libvirt:虚拟化管理 API 与故障分层:解释 libvirt 管理 domain、网络和存储,区分管理库与实际 hypervisor。

解题切入:libvirt提供虚拟化管理API/工具,支持多种hypervisor与相关网络/存储资源。它不是一个等同KVM的CPU虚拟化引擎。

阅读这道题的独立深文 →
System Design / 基础 · 200

TikTok CDN

TikTok CDN:边缘缓存、回源与失效:解释静态资源分发,设计 cache key、TTL、版本与故障时的回源保护。

解题切入:请求经边缘节点命中缓存或回源,距离缩短和连接复用可能降延迟,但缓存不正确会扩散错误。

阅读这道题的独立深文 →
System Design / 基础 · 201

TikTok HTML 语义化

TikTok HTML 语义化:结构、交互与可访问名称:用正确元素表达文档与操作,解释语义对辅助技术、键盘和维护的作用。

解题切入:标题h1..h6按内容层级组织,main/nav/article等表达页面区域;section通常需要可识别主题,不仅为CSS造容器。

阅读这道题的独立深文 →
System Design / 基础 · 202

TikTok DOM 事件冒泡

TikTok DOM 事件冒泡:阶段、Target 与委托:解释捕获、目标和冒泡,区分阻止传播与阻止默认动作。

解题切入:传播路径从祖先捕获到target,再对可冒泡事件回到祖先。event.target是原目标,currentTarget是当前监听器所属元素。

阅读这道题的独立深文 →
System Design / 基础 · 203

TikTok JavaScript 闭包

TikTok JavaScript 闭包:词法环境、共享绑定与释放:用计数器和循环回调解释闭包捕获绑定,避免把它当值的快照。

解题切入:函数与其词法环境形成闭包,创建时决定能访问哪些外层绑定;调用地点不会随意改变词法变量来源。

阅读这道题的独立深文 →
行为 / Coding · 204

TikTok 为什么申请

TikTok 为什么申请:业务兴趣、岗位匹配与真实经历:回答 Why TikTok,用具体岗位问题和个人证据说明动机,避免泛泛公司赞美。

解题切入:用一项你愿意解决的业务/工程问题开始,例如内容分发的质量与延迟,再联系岗位职责,不仅说平台很大。

阅读这道题的独立深文 →
行为 / Coding · 205

TikTok 职业规划

TikTok 职业规划:能力方向、阶段证据与调整:结合 Applied ML Engine 职责表达发展方向,说明如何学习与贡献。

解题切入:先说希望解决的工作类型,例如把模型变成可靠可测服务,再说当前能力和明确缺口。

阅读这道题的独立深文 →
行为 / Coding · 206

TikTok 怎样参与团队合作

TikTok 怎样参与团队合作:接口、分工与闭环:用真实合作案例说明协调与个人贡献,区分正常协作和冲突处理。

解题切入:背景先说明共同目标、团队构成和你的责任。把“我们做了”拆成你具体提出/执行/验证的动作。

阅读这道题的独立深文 →
行为 / Coding · 207

TikTok 为什么选方案 A

TikTok 为什么选方案 A:约束、备选与可逆决策:回答项目技术选型,比较当时可行替代方案与改变决定的证据。

解题切入:先列当时需求、规模、团队熟悉度和风险;没有约束的“最佳技术”不能解释决定。

阅读这道题的独立深文 →
Coding · 208

TikTok BST 查找与删除

TikTok BST 查找与删除:根变化和后继替换:返回匹配节点,再处理删除的零、一、两个孩子情况,保留严格有序不变量。

解题切入:search每步按目标与当前值比较只进入一侧,缩小候选子树;找不到返回None。

阅读这道题的独立深文 →
Coding · 209

TikTok 迷宫 BFS

TikTok 迷宫 BFS:单位步最短路与端点合同:按明确训练网格定义 BFS,验证阻塞、无路和起终点相同。

解题切入:BFS按距离层扩展,每格第一次入队时距离最短;入队即标seen,避免同层重复加入造成过量工作。

阅读这道题的独立深文 →
Coding · 210

TikTok 树形打家劫舍

TikTok 树形打家劫舍:选与不选的后序状态:按标准树独立集训练,证明父子不可同时选与两个子树的组合。

解题切入:每节点take=自身值+左右skip,skip=max(左take,左skip)+max(右take,右skip)。父子约束切断后,两个子树可独立取最优。

阅读这道题的独立深文 →
OA · 211

TikTok 景点邻接对还原

TikTok 景点邻接对还原:链端点与结构验证:由相邻景点对恢复任意方向路径,说明单链假设与分叉/环的区别。

解题切入:建立无向邻接表,链应恰有两个度1端点,其余度2。选一个端点,沿唯一未访问邻居前进。

阅读这道题的独立深文 →
OA · 212

TikTok 电池回充模拟

TikTok 电池回充模拟:耗尽事件、可用时间与缺失政策:复现16分钟样例的7次耗尽,解释最后一块未耗尽不计数,并列出必须澄清的规则。

解题切入:每块维护readyAt时间,开始全部可用。一次耗尽结束时t增加capacity,readyAt=t+recharge,耗尽次数加1;最后使用时长小于capacity则不耗尽、不加计数。

阅读这道题的独立深文 →
Coding · 213

TikTok Coin Change

TikTok Coin Change:最少枚数与组合数的两个状态:把最少硬币和无序组合计数分开推导,解释遍历方向,保留题目目标冲突。

解题切入:最少数dp[s]=min(dp[s-c]+1),dp[0]=0,无解标记;目标是优化而不是计数,金额递增确保依赖较小值已完成。

阅读这道题的独立深文 →
ML System Design · 214

搜索词自动补全

搜索词自动补全:Prefix候选、实时趋势与安全过滤:低延迟候选索引与个性化排序分离,冷前缀也要有回退。

解题切入:事件聚合query规范化/频次/时效,清理机器人与异常刷量,保留语言和地区;敏感/不适合公开建议的query按定义过滤。规范化不丢地区/语言意义。

阅读这道题的独立深文 →
ML System Design · 215

图片视频近似去重

图片视频近似去重:候选召回、时间对齐与验证阈值:exact hash与语义相似不是一回事,误合并会损失不同内容。

解题切入:exact content hash先处理逐字节重复,感知hash/embedding ANN召回近似候选。图像验证比较局部特征/几何或感知差异,尺度/裁剪鲁棒性与误合并权衡。

阅读这道题的独立深文 →
ML System Design · 216

有害视频审核

有害视频审核:多模态证据、分级处置与人工复核:分类置信度和处置策略分开,误报与漏报需按类别评估。

解题切入:ingestion抽帧、ASR、OCR和metadata,统一时间轴,快速规则/轻模型初筛,复杂/不确定样本交重模型或人工。抽样帧可能漏短暂片段,按风险类别提高采样或片段定位。

阅读这道题的独立深文 →

Evidence Review

已发现但暂未写成深文的题目信号

这些帖子只给题名、部分约束或外链;先标注证据缺口,再决定是否补成独立文章。

输入和规则仍需补充的OA题

日期映季节的映射表、triplet条件、round-robin容量与换中心政策、网格传送以及pref[r]−2pref[l]窗口的数值域未完整说明;这些细节会改变解法,不按算法名补造合同。

日期和电池规则、包裹与triplet规则、传送与窗口规则

API、附件与隐藏条件

文章筛选API未给完整JSON字段和排序规则,处罚系统关键条件不可见,多道OA仅有附件文件名;当前无法确定输入输出,不提供猜测答案。

文章排序接口、处罚规则、OA附件

Next Step

把题目放回面试流程

题目只是准备的一部分;按公司攻略核对轮次、岗位差异和常见失分点。

查看 TikTok / ByteDance 面试全攻略 →
✓已复制微信号!