B站社招后端开发面经:三轮技术面+HR面,两周拿Offer 📅 发布时间:2026/8/30 5:33:23 👁 浏览次数: 先说结论B站社招后端开发岗三轮技术面加一轮HR面前后两周出头拿到offer。整个过程复盘下来我是真想把它写下来不是炫耀而是这里面有很多东西值得细说项目怎么讲、系统设计怎么答、算法题练到哪个程度、HR面怎么聊薪资。我尽量把能记住的都写清楚给准备跳槽的朋友一个参考。这份面经适合谁两类人一类是已经决定投B站、正在犹豫或者焦虑的人你可以照着里面的节奏准备另一类是准备面互联网中大型公司后端岗位的人虽然题目可能不完全一样但考察逻辑是通的。如果你刚开始准备社招建议先收藏后面分阶段看。我本人情况说一下三年后端经验在一个互联网中厂做社区相关业务主语言是Go平时也写Java。投的岗位是bilibili社招后端开发方向偏社区和业务架构base上海。整体面试节奏非常紧凑一面到二面隔了一周二面到三面隔三天三面后两天HR面HR面后三天意向书。这个节奏说实话超出我预期因为之前面过一些大厂经常等一周都没消息B站这边流程推进得算快的。1. 先聊聊这次面试的整体准备思路1.1 刚开始准备时我做了什么我决定面B站不是临时的。当时看了几个B站技术博客和一些公开分享发现他们的技术栈和业务场景很适合我高并发视频、直播弹幕、社区互动、创作者后台这些场景对后端来说都是实打实的挑战。所以最开始准备我不是直接刷题而是先做三件事梳理自己之前做过的项目列出3个最能体现能力的方向把过去一年写的代码和技术方案翻出来重新过一遍确定自己的短板集中补基础。这一步很关键。社招和校招最大的区别是面试官基本都会顺着你简历上的项目往深问问到你答不上来为止。所以把自己的项目吃透比多刷100道题更值。我当时用了一个很笨但很有效的方法把每个项目按“背景-方案-难点-结果-反思”的框架写成一页文档然后自己模拟面试官围绕每个项目能问什么问题全列出来再试着回答。这些问答我整理了差不多两万字相当于给自己做了一次完整的技术复盘。1.2 目标岗位的分析与准备重点B站社招后端岗招聘JD上写的内容其实比较泛参与社区业务后端开发、负责核心功能的设计与实现、保障系统稳定性等等。但结合我对B站业务的了解他们的后端面试大概率会围绕这些场景高并发读写大量用户同时看视频、异步任务与消息队列转码、审核、私信、缓存设计热点数据、排行榜、数据一致性播放量、点赞数这种不能随便错的指标以及一定概率出现的算法题和系统设计题。所以我给自己定的准备重点是这样的Go语言基础包括GMP调度模型、channel底层、垃圾回收机制数据库和缓存的深度理解MySQL索引原理、事务隔离级别、Redis缓存穿透/击穿/雪崩系统设计的通用思路遇到任何场景题能快速搭框架算法题的LeetCode Hot 100刷两遍。时间分配上每天保证2小时刷题周末各花半天做项目复盘和系统设计模拟。过程很枯燥但坚持下来效果是明显的。2. 投递与简历别让第一关就栽了2.1 投递渠道怎么选反馈速度差很多我这次用的是内推。B站员工在内推系统里提交后简历会直接进到对应部门的池子里比自己在招聘软件上投要快很多而且方便跟进。我一个朋友自己投简历卡了两周没动静后来让同事内推第二天就接到了HR的电话。这个差异是很现实的内推相当于有人帮你做了第一轮信任背书。另外要注意的是如果你用的是招聘软件岗位信息可能更新不及时很多看起来还挂着的岗位其实已经招满了。B站官网招聘页上的岗位相对靠谱一些内推的话可以直接问推荐人有没有合适的HC。我在投递前还特意跟内推人确认了部门方向和团队业务避免投进一个自己完全不感兴趣的领域。2.2 简历怎么写才不拖后腿简历这部分我踩过坑所以多说两句。刚准备跳槽时我简历写得很像“系统说明书”负责了xx系统开发使用了xx技术栈维护了xx模块。这种写法最大的问题是没有任何信息量面试官根本看不出你的能力边界。后来我按这个思路改的每一条经历都写清楚“我做了什么、遇到什么难点、怎么解决、结果是什么”。比如“对xx接口做性能优化通过索引优化和缓存改造接口耗时从600ms降到120msQPS从200提升到1500”。这样的描述才有冲击力面试官也愿意顺着问。项目数量控制在3个左右别贪多。我写了三个项目各有侧重一个高并发接口优化一个异步任务处理系统一个基础组件建设。每个项目名字加粗放在最前面下面列3到4条关键点要求自己每条都能展开讲5分钟。写完简历后我找了两个朋友帮忙看一个问“你这行什么意思”另一个问“这个为什么要这么做”回答不上来的地方就是简历里需要改的地方也是可能会被面试官抓住打穿的地方。3. 技术面复盘一面基础二面深度三面格局3.1 一面基础题和项目深挖是主体一面面试官应该是组里的技术骨干上来没有寒暄直接用我的项目开场“挑一个你觉得最能打的项目讲讲它解决了什么问题。”这是我准备过的所以讲了大概10分钟用的是STAR结构。讲完后面试官开始追问细节问得特别细你说接口耗时从600ms降到120ms到底优化了什么数据量是多少索引怎么建的缓存淘汰策略为什么选LRU如果缓存挂了怎么办这些问题如果不提前复盘过临时很容易卡壳。一面后半段是基础题快问快答方向很集中Go的goroutine调度是怎么实现的GMP模型里P的数量由什么决定如果一个goroutine阻塞了会怎样channel的底层结构是什么无缓冲channel和缓冲channel的区别channel关闭后读写会怎样MySQL为什么用B树做索引用哈希行不行聚簇索引和非聚簇索引区别Redis缓存穿透、击穿、雪崩分别是什么怎么解决TCP三次握手、四次挥手的每个步骤为什么TIME_WAIT要等2MSL这些问题每个背都不难但要在45分钟里连续答上来并且被追问不慌还是需要扎实准备。我的体会是回答基础题不要只背结论要把“为什么”讲出来。比如追问缓存穿透时不能只说“用布隆过滤器”要说明白布隆过滤器为什么能拦截不存在的key它有没有误判率误判会影响什么如果误判了怎么兜底。面试官要的是你思考问题的方式不是标准答案。3.2 二面系统设计题是重头戏二面是我觉得最硬的一轮面试官是高级技术人员开场简单聊了下项目后直接给了一道系统设计题“如果让你设计B站的弹幕系统你会怎么设计假设同时有100万人在线看同一个热门视频。”这类题社招基本躲不掉。系统设计没有标准答案但面试官会看你的思考过程和工程经验。我当时的答题框架是“需求澄清-量级估算-架构方案-存储设计-关键场景优化”。先说量级估算。100万人在线假设其中10%的用户会发弹幕每人每30秒发一条那每秒写QPS大概是100万×10%÷30≈3333其实并不高弹幕写压力不大压力大的是读观众要实时看到弹幕假设每人每秒拉取一次弹幕读QPS就是100万这个量级必须靠缓存和长连接扛。然后我提出方案客户端通过WebSocket与弹幕网关保持长连接服务端从Redis的有序集合ZSet里读取当前时间窗口的弹幕推送给客户端。弹幕写入先走Kafka消息队列异步落库保证主链路不受影响。热点视频做房间维度隔离比如每个热门视频单独部署一组网关节点避免全站相互影响。面试官追问了几个问题弹幕顺序怎么保证如果ZSet太大怎么办弹幕的审核怎么做我答弹幕按视频ID时间戳做ZSet的score客户端拉取时用score范围查询ZSet只保留最近5分钟的弹幕更早的走MySQL归档审核是异步的通过MQ消费后调用审核服务可疑内容不推送正常内容实时放行。整体聊了差不多半小时面试官会不时给一些提示所以不用怕自己说得不完美关键是敢想敢说并且逻辑自洽。3.3 三面Leader面考察的是业务判断力和沟通能力三面是技术Leader这轮其实没有太多纯算法和源码题更多是围绕业务思考。印象比较深的问题有几个你觉得B站和抖音的社区氛围差异在技术上有什么体现如果让你设计一个创作者激励策略技术上你怎么支撑你怎么看待业务迭代速度和系统稳定性之间的取舍如果产品提了一个你觉得不合理的需求你怎么沟通说实话这类问题光靠背八股没用得对业务有真实的理解。我当时聊到B站的弹幕文化、评论区和UP主生态提到社区产品对实时互动要求高、对内容治理要求高、对创作者工具要轻量好用然后从技术层面说实时互动要有低延迟通道内容治理要有一套异步审核链路创作者工具要把常见操作模板化降低使用门槛。Leader面还有一个显著特点他会关注你怎么跟同事协作。有一个问题我记得挺清楚——“你负责的接口被另一个业务方依赖对方改需求但会影响你的稳定性你怎么处理”我没有直接说“不同意”而是说先看对方需求的目标再评估技术方案的兼容性尽量通过加开关、版本兼容和灰度来过渡如果实在有风险就拉上双方leader一起对齐优先级。这种回答其实很加分因为它体现的是工程成熟度。3.4 算法题复盘B站社招难度不算夸张B站社招的算法题难度我的感受是比一线大厂校招要温和一些基本在LeetCode Hot 100的范围内不太会出特别偏的“劝退题”。我遇到的题目给大家列一下LRU缓存机制、字符串转整数要考虑溢出、无重复字符的最长子串、合并两个有序链表、实现一个支持随机获取元素的集合。这些题目你去看LeetCode的高频题列表基本都在前面。算法题本身不难但有几个细节要注意一是要边写边讲思路别闷头写二是写完要主动说时间复杂度和空间复杂度三是注意边界条件。我写字符串转整数时面试官在最后问“字符串里带空格和正负号怎么办”我一开始没考虑全后来补上了。面试官没为难我但如果是自己写的时候就把边界列清楚印象分会好很多。还有一个经验如果某一题卡住了别死磕。先跟面试官说思路比如“这题我想到暴力解法是O(n^2)我尝试用滑动窗口优化”面试官一般会顺着你的思路提示。最怕的是沉默沉默会让面试官不确定你是真的不会还是在思考。宁可说“我想用HashMap记录出现的位置但还没想清楚具体怎么判断更新”也比一言不发强。4. HR面与offer细节这些软东西别忽视4.1 HR面会聊什么怎么答更稳妥HR面不代表走流程尤其是B站这种重视社区氛围的公司HR会认真判断你的价值观和稳定性。我当时被问的问题包括为什么想看新机会为什么选择B站期望的薪资范围是多少对加班怎么看最快到岗时间是什么时候回答“为什么离职”有个大原则绝对不要吐槽前公司。这不是虚伪而是HR会担心你入职后也同样吐槽他们。我当时的回答是“希望去更大规模的业务场景里挑战自己当前团队的技术方向越来越偏运维个人成长空间变窄了”。这样说既真实又体面。“为什么选B站”这种问题建议提前做功课。我当时提到B站的内容生态、弹幕文化、UP主创作激励、直播和游戏等业务矩阵说我希望技术能力能服务到真实的社区场景里。不要只回答“因为B站二次元氛围好、工作环境好”这种回答太单薄了。4.2 薪资谈判和背调的实操经验薪资谈判是很多人容易忽略的环节。我总结下来有几个关键点。先了解B站同岗位的市场行情可以问一下内推人或者猎头给出期望区间而不是死数字比如“我期望涨幅在20%到30%之间”给HR留出谈判空间不要直接报自己目前薪资的具体金额可以表达为“我目前总包大概是xx但我更看重的是新岗位的空间和业务方向是否匹配”。B站这边背调做得很正规会通过第三方背调公司核实简历上的工作经历、职位、薪资范围和离职原因。所以简历上千万别造假哪怕把工作时间拉长一个月都可能被发现。背调前最好跟之前的leader和HR打个招呼避免突然接到电话一脸懵。我当时跟两位前同事提前说明情况请他们客观评价对方都很配合。关于HR面后的等待期这里要提个醒即使面试表现不错offer审批也可能因为hc、薪资包流程等因素变慢。我当时HR面后第三天收到意向书算快的。如果一周没消息可以礼貌地问一下HR进展不要直接催也不要一副“反正我有别家offer”的姿态保持真诚和耐心会让HR更愿意帮你争取。5. 踩过的坑和复盘这些细节你可能也会遇到5.1 项目深挖时暴露的问题我前面提到准备阶段整理了项目问答但即使这样一面还是被一个问题问住了“你当时为什么用Redis做分布式锁如果Redis主节点挂了锁会丢吗有没有更好的方案”我当时用的是Redis SETNX实现分布式锁只答出了设置过期时间避免死锁但对于主从切换导致锁丢失的问题没答上来。面试官没深究给我讲了RedLock的思路同时提醒我在真实业务里要结合场景选方案。后来我复盘发现很多所谓的“分布式锁”面试题本质是在考你对“一致性”和“可用性”的取舍理解。所以准备项目时不要只看自己用了什么还要追问自己“为什么不用别的方式”把所有技术选型的替代方案都想过一遍才不容易被问倒。5.2 面试复盘答错和答不上来之后怎么办面试中遇到完全不会的问题我的处理方式是先坦诚说这个方向我没有很深的研究然后把自己知道的边角知识说出来最后表明愿意学习。这样做虽然拿不到满分但比胡编乱造强太多。有一个比较关键的心态调整方法面试结束后立刻把记不住的问题记录下来。我是用手机备忘录在出会议室后马上记记完后当天晚上再补充细节。这个习惯让我很受益因为人在紧张状态下记忆会模糊但刚结束面试时的印象是最新鲜的。整理完题目后我会针对每一题找答案、补知识确保下次遇到类似问题能答得更好。5.3 心态管理和时间管理小技巧社招面试通常不是一周内结束的战线可能拖到两三周甚至一个月。这期间很容易焦虑一面过了怕二面挂二面过了怕三面挂HR面完了又怕offer审批出幺蛾子。我的应对方法是把每一天的准备工作具体化比如“今天刷3道滑动窗口题”“今天看完MySQL索引原理并写一页笔记”“今天做一次系统设计mock”有事做就不会那么慌。另外我当时还做了一次模拟面试。请一位也在准备跳槽的朋友当面试官把我的自我介绍和项目讲述完整过一遍对方直接指出我语速太快、项目重点不突出、结尾总是很仓促。这个模拟面非常值比我自己埋头准备效率高多了。建议有条件的朋友可以试试交叉面试真的能发现很多盲区。6. 一些实用准备清单和资料6.1 刷题和基础知识的日常安排刷题平台我用的就是LeetCode高频题至少刷两遍。第一遍按标签刷相当于每个算法思想过一遍第二遍随机刷模拟真实面试的出题节奏。我给自己定的目标不高每天3道题周末加练一个系统设计题坚持了大概三周面试中遇到的算法题基本都能cover住。Go语言方面我建议把《Go语言设计与实现》里的调度和channel章节反复看B站面试对Go的底层机制问得不算浅。MySQL和Redis这块《高性能MySQL》和《Redis设计与实现》适合精读尤其索引结构、事务隔离级别、缓存一致性这几个点几乎是必考题。6.2 系统设计的通用模板系统设计题我建议准备一套自己的模板遇到任何题都按这个框架走。第一步澄清需求和边界搞清楚核心功能是什么、量级多大、一致性要求多高。第二步做量级估算写出每秒QPS、存储量、带宽等关键数字。第三步画整体架构从客户端到网关、业务服务、存储、消息队列等各层怎么分工。第四步细化存储和缓存设计聊表结构和Redis key设计。第五步针对热点场景和异常情况做优化比如热点数据、缓存穿透、服务降级。这套模板不是套路它是让你在压力下不慌的骨架。真正聊的时候面试官会不断往里面加条件和约束你就顺着这个框架往里填答案基本不会跑偏。7. 最后的个人体会面完这轮我最深的感觉是面试不是刷题比赛而是一场信息战。你在面试前对公司了解多少、对自己项目复盘多深、对常见系统的思考框架多熟都会直接写在你的回答里。B站的面试风格总体是务实的不故意刁难人但对基础深度、工程判断和业务理解都有要求。这也是我为什么建议准备阶段一定要花时间看业务、看产品、看技术博客别只看面试题。最后再分享一个小技巧拿到offer之后可以发一封简短的感谢信向每一位面试官表达感谢同时说清楚自己的入职安排。这不只是礼貌也是在职业圈子里攒口碑。B站的面试体验整体不错流程透明面试官专业就算最终没去这个过程也是一次很好的能力体检。祝各位都能面到自己想去的地方。