news 2026/9/4 4:23:32

收藏!字节跳动大厂面试90%人挂掉的抖音关注系统设计,手把手教你满分拿捏Offer!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
收藏!字节跳动大厂面试90%人挂掉的抖音关注系统设计,手把手教你满分拿捏Offer!

本文详细拆解了字节跳动等大厂后端架构面试中的抖音关注系统设计题,针对存储和动态推送两大核心难点,提出了基于演进性统一数据模型、Redis ZSet分桶+MySQL分表的存储解决方案,以及推拉结合、分层削峰的Feed流架构推送方案。文章强调架构设计需具备差异化与演进性思维、系统思维与链路优化、精确性与权衡思维,旨在帮助程序员掌握解决高并发、大数据量架构问题的核心思维,提升面试竞争力。

深坑一:关注存储

惯性思维踩雷:一套方案走天下,直接被大V问题问倒

面试官的经典提问:设计抖音的关注和粉丝系统,包括存储和功能,要考虑不同规模用户的差异。

相信很多人的第一反应和我最初一样,自信满满回答:用Redis的Set!用户A关注B,就执行sadd ‘follow:A’ B和sadd ‘fans:B’ A,查询用smembers,速度快还简单。

但面试官的灵魂追问马上就来:一个有1亿粉丝的大V,单Set存1亿个ID要800MB内存,哪个Redis节点扛得住?smembers全量拉取1亿条数据,网络和服务器内存不直接炸了?

这一问直接戳中了问题核心:只设计了通用方案,却忽略了不同规模用户的差异。小博主的粉丝量寥寥无几,单Set完全够用,但大V的千万、上亿粉丝,会直接造成大Key问题,全量拉取更是会引发网络和内存溢出,这就是“一套方案用到底”的致命问题。

满分解法:演进性统一数据模型,Redis ZSet分桶+MySQL分表

架构设计的核心从不是找“万能银弹”,而是设计能适配变化、可平滑演进的统一方案——如果为小V和大V设计两套完全不同的方案,后续用户增长会带来巨大的迁移成本,这是面试官最不想看到的。

这套统一存储方案的核心是:统一模型+Binlog同步+冷热分离,无论小V还是大V都适用,唯一的区别只是“桶”的数量,先上核心架构逻辑:

写操作仅更新MySQL主库→通过Canal同步服务订阅Binlog→近乎实时同步到Redis ZSet分桶;

读操作由查询服务处理→查活跃热数据用Redis ZSCAN分页→查历史冷数据从MySQL加载更多。

核心设计亮点,逐个拆解

  1. 分桶存储,彻底解决大Key问题

不再用单一的fans:userId存储,而是将粉丝列表哈希打散到多个“桶”中,比如fans:userId:0到fans:userId:99。

  • 小博主(粉丝<10万):只用1个桶,逻辑简单,性能和Redis Set几乎无差;
  • 大V(粉丝>100万):动态扩容到100个甚至更多桶,粉丝量增长时,无需修改模型,仅增加桶数就能平滑扩容,完美解决小V到大V的演进难题。
  1. ZSet替代Set,天然支持时间排序

将关注时间戳作为ZSet的score,不仅能存储粉丝ID,还能直接实现“按时间查看粉丝”的需求,无需二次排序,一步到位满足业务功能。

  1. Binlog同步,从根上保证数据一致性

抛弃“先写Redis再异步写库”的双写漏洞方案,写操作只更新MySQL,数据库作为唯一数据源,再通过Binlog将数据变更同步到Redis,从根本上避免了数据不一致的问题。

  1. 冷热分离,降低存储成本

Redis中仅存储近3个月的活跃粉丝(热数据),更早的沉睡粉丝(冷数据)只存在于MySQL分表中。用户查看粉丝列表时,优先展示Redis的热数据,需要看全部则点击“加载更多”异步查询MySQL,兼顾性能和成本。

  1. 分页查询,避免网络拥堵

绝不使用smembers或zrange全量拉取数据,查询时用zscan或zrevrange配合游标分页,每次只返回少量数据,彻底规避网络拥堵和内存溢出。

深坑二:动态推送

暴力解决踩雷:遍历粉丝发消息,直接造成系统性能雪崩

解决了存储问题,面试官的追问接踵而至:1亿粉丝的大V发了新动态,怎么推给所有粉丝?

我当时脑子一热的答案,也是很多人的常规思路:遍历粉丝列表,给每个粉丝发一条Kafka消息!

结果面试官直接皱眉:遍历1亿次循环要多久?瞬时产生1亿条Kafka消息,下游系统扛得住吗?这不是做系统设计,是写DDOS攻击脚本!

这个回答的问题在于,用“暴力循环”处理海量粉丝推送,会制造巨大的瞬时流量洪峰,对自身业务和下游系统造成毁灭性打击,完全没有考虑系统的抗压能力。

满分解法:推拉分明、分层削峰的Feed流架构

面试官真正想要的答案,是一套具备削峰填谷能力的推拉结合架构,而且要先明确一个核心区分:更新Feed流的关注列表和App系统通知推送是两个完全不同的系统,不能混为一谈。

这套架构的核心是:事件驱动+异步削峰+批量处理,大V发动态后仅产生1条Kafka事件,再通过粉丝分层、分级推送、批量处理,将流量洪峰平滑分摊,彻底避免系统雪崩。

两大核心推送场景,精准设计方案

A. Feed流更新:写扩散模型,精准分层不做无用功

大V发动态,本质是把动态ID扩散写入粉丝的收件箱(inbox ZSet),核心思路是粉丝分层+异步削峰+Pipeline批量处理:

  1. 粉丝分层,舍弃低活跃用户

将1亿粉丝按活跃度分三档,不做无意义的推送,节省海量资源:

  • 高活跃粉丝(近7天登录,如3000万);
  • 中活跃粉丝(近30天登录,如5000万);
  • 低活跃粉丝(超30天未登录,如2000万):直接放弃写扩散,等用户重新打开App时,用“拉模式”主动拉取即可。
  1. 异步削峰,分级处理流量

大V发布动态后,仅发送1条“动态发布事件”到Kafka,由分组服务消费该事件,为不同活跃度粉丝生成不同优先级的推送任务,投递到不同Kafka Topic:

  • 高活跃粉丝:即时推送任务,优先更新Feed流;
  • 中活跃粉丝:延迟推送任务(如延迟1小时),将瞬时洪峰分摊到不同时间段。
  1. Pipeline批量处理,大幅降低I/O

下游推送服务更新粉丝的inbox ZSet时,绝不逐条执行zadd,而是从Kafka一次性消费1000条消息,通过Redis Pipeline在一次网络请求中批量更新1000个粉丝的收件箱,网络I/O直接降低几个数量级。

B. App强推送:通知模型,极致克制不打扰

这是手机收到的App系统通知,属于强打扰操作,策略必须极度克制,核心是少量推+大部分拉:

  • 推(Push):仅对设置了“特别关心”的用户,或算法筛选的核心互动粉丝,通过APNS/FCM等系统发送实时推送,范围极小;
  • 拉(Pull):绝大部分用户,只静默更新Feed流收件箱,等用户下次打开抖音时,客户端主动从服务端拉取最新动态列表即可。

核心总结:搞定大厂架构题,这3种思维是关键

这道抖音关注系统设计题,看似考的是Redis、MySQL、Kafka的技术使用,实则考察的是架构师的核心思维能力,也是大厂面试的核心考察点,掌握这3点,你就是面试官眼里的“Offer收割机”:

  1. 差异化与演进性思维:能预见不同数据规模的系统瓶颈,设计统一的可演进方案,避免后续的迁移成本和风险;
  2. 系统思维与链路优化:把单个功能点放在完整业务链路中思考,用分层、异步、批量等手段,构建健壮、可扩展的系统;
  3. 精确性与权衡思维:精准拆分业务场景,为不同场景设计适配的技术方案,在用户体验和服务器成本之间做出合理权衡。

大厂的架构面试题,从来不是考你会不会用技术,而是考你会不会用技术解决实际问题。分治与演进,是解决高并发、大数据量架构问题的核心思维,掌握这两个核心,再遇到类似的系统设计题,就能从容应对。

最后

对于正在迷茫择业、想转行提升,或是刚入门的程序员、编程小白来说,有一个问题几乎人人都在问:未来10年,什么领域的职业发展潜力最大?

答案只有一个:人工智能(尤其是大模型方向)

当下,人工智能行业正处于爆发式增长期,其中大模型相关岗位更是供不应求,薪资待遇直接拉满——字节跳动作为AI领域的头部玩家,给硕士毕业的优质AI人才(含大模型相关方向)开出的月基础工资高达5万—6万元;即便是非“人才计划”的普通应聘者,月基础工资也能稳定在4万元左右

再看阿里、腾讯两大互联网大厂,非“人才计划”的AI相关岗位应聘者,月基础工资也约有3万元,远超其他行业同资历岗位的薪资水平,对于程序员、小白来说,无疑是绝佳的转型和提升赛道。


对于想入局大模型、抢占未来10年行业红利的程序员和小白来说,现在正是最好的学习时机:行业缺口大、大厂需求旺、薪资天花板高,只要找准学习方向,稳步提升技能,就能轻松摆脱“低薪困境”,抓住AI时代的职业机遇。

如果你还不知道从何开始,我自己整理一套全网最全最细的大模型零基础教程,我也是一路自学走过来的,很清楚小白前期学习的痛楚,你要是没有方向还没有好的资源,根本学不到东西!

下面是我整理的大模型学习资源,希望能帮到你。

👇👇扫码免费领取全部内容👇👇

最后

1、大模型学习路线

2、从0到进阶大模型学习视频教程

从入门到进阶这里都有,跟着老师学习事半功倍。

3、 入门必看大模型学习书籍&文档.pdf(书面上的技术书籍确实太多了,这些是我精选出来的,还有很多不在图里)

4、AI大模型最新行业报告

2026最新行业报告,针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。

5、面试试题/经验

【大厂 AI 岗位面经分享(107 道)】

【AI 大模型面试真题(102 道)】

【LLMs 面试真题(97 道)】

6、大模型项目实战&配套源码

适用人群

四阶段学习规划(共90天,可落地执行)
第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范
第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署
第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建
第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型

  • 带你了解全球大模型

  • 使用国产大模型服务

  • 搭建 OpenAI 代理

  • 热身:基于阿里云 PAI 部署 Stable Diffusion

  • 在本地计算机运行大模型

  • 大模型的私有化部署

  • 基于 vLLM 部署大模型

  • 案例:如何优雅地在阿里云私有部署开源大模型

  • 部署一套开源 LLM 项目

  • 内容安全

  • 互联网信息服务算法备案

  • 👇👇扫码免费领取全部内容👇👇

3、这些资料真的有用吗?

这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理,现任上海殷泊信息科技CEO,其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证,服务航天科工、国家电网等1000+企业,以第一作者在IEEE Transactions发表论文50+篇,获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。

资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的技术人员,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/30 1:53:55

Mem Reduct:让老旧电脑重获新生的内存优化神器

Mem Reduct&#xff1a;让老旧电脑重获新生的内存优化神器 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/memreduct 你是否曾遇…

作者头像 李华
网站建设 2026/9/4 0:49:56

Python期权回测新范式:从数据困境到策略落地的完整路径

Python期权回测新范式&#xff1a;从数据困境到策略落地的完整路径 【免费下载链接】optopsy A nimble options backtesting library for Python 项目地址: https://gitcode.com/gh_mirrors/op/optopsy 打破量化投资的隐形壁垒 在量化交易的世界里&#xff0c;每一秒的…

作者头像 李华
网站建设 2026/9/3 21:42:32

AndroidFaker:设备标识虚拟化技术实现移动隐私防护

AndroidFaker&#xff1a;设备标识虚拟化技术实现移动隐私防护 【免费下载链接】AndroidFaker Android Faker a Simple Xposed Module Which Spoof Your Device IDs Values. Supporting Android 8.1 项目地址: https://gitcode.com/gh_mirrors/an/AndroidFaker 在移动互…

作者头像 李华
网站建设 2026/8/30 18:21:42

vue基于springboot框架的短剧推荐系统设计与实现--论文

目录系统架构设计数据库设计推荐算法实现前端功能模块后端接口开发系统测试计划论文写作安排开发技术源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;系统架构设计 采用前后端分离架构&#xff0c;前端使用Vue.js框架&#xff0c;后端基…

作者头像 李华