字节跳动后端开发面经

字节跳动 · 后端开发 · 2026-04

《面试题目》

一、实习与背景询问 自我介绍及实习经历考察(20分钟,含部分八股)。

二、技术问题 Q4:你在项目中使用了Redis Zset,它是用来做什么的? Q5:Zset的数据结构是怎样的? Q6:B+树是什么?为什么使用它?

三、编程题 Q7:股票买卖问题(一次买卖与两次买卖变种)。

四、反向提问 Q8:询问部门业务(生活服务营销)及技术方向。


《参考解析》

1. Redis Zset 核心机制 Zset(有序集合)常用于延时任务、排行榜等场景。底层由哈希表(dict)+ 跳表(skiplist)实现。哈希表提供O(1)的成员查找,跳表则通过多级索引保证有序,支持O(logN)的范围查询和插入,相比单纯的链表效率更高。

2. MySQL B+树的优势 B+树作为InnoDB引擎的索引结构,叶子节点存储数据且双向链表连接,非叶子节点仅存索引。其“矮胖”的树高设计大大降低了磁盘IO次数;由于全量数据都在叶子节点,查询性能更稳定,且天然支持范围扫描和排序,非常适合数据库存储。

3. 股票买卖问题思路 这是经典的动态规划问题。一次买卖通过记录遍历过程中的minPrice计算差值即可。两次买卖变种通常使用状态机定义:第i天处于持有/卖出状态的最大收益,通过记录四个状态(第一次买入、第一次卖出、第二次买入、第二次卖出)进行状态转移方程递推。