NiceOffer

面试面经 · B站

【B站】【大模型开发】【暑期实习二面】面经(八股+大模型项目+手撕)

B站面经大模型开发实习

背景

海外一年制硕士,后端开发方向,投递 B 站大模型平台开发暑期实习。一面是基础技术面,二面偏工程落地与项目深挖,整体面试风格务实,不绕弯子。

题目摘要

  1. Go 语言基础:goroutine 与 channel 的底层实现差异,GMP 调度模型中 P 的本地队列何时会发生任务窃取,以及 context 包在超时控制中的典型使用方式。
  2. MySQL 八股:覆盖索引的底层结构,为什么说回表是性能杀手,以及 EXPLAINtype 字段从好到差的完整顺序。
  3. Redis 八股:缓存穿透、击穿、雪崩的区别与应对策略,重点考察了分布式锁的 Redlock 实现细节与过期时间设置的坑。
  4. 大模型项目深挖:基于 RAG 的文档问答系统,追问了检索召回率低时的优化路径、Function Calling 的触发机制设计、以及多轮对话中上下文管理的 token 成本控制。
  5. 手撕算法题:题目是「寻找旋转排序数组中的最小值」,要求写出二分查找实现,并说明与普通二分查找的边界条件差异。

项目深挖

追问一:RAG 检索召回率低,你会怎么优化?

参考回答方向:先定位是召回阶段还是重排阶段的问题。召回阶段可以尝试混合检索(BM25 + 向量检索),用 RRF 或加权融合方式合并结果;也可以对文档做更细粒度的切分,比如把固定长度 chunk 改为按语义段落切分,配合滑动窗口保留上下文。重排阶段可以引入 cross-encoder 模型做精排,但要注意推理耗时,必要时用蒸馏后的小模型。面试官还追问了评估方式,我当时回答用构建 golden set + Recall@K 指标衡量,线上再用用户反馈兜底。

追问二:Function Calling 的触发逻辑是怎么设计的?

参考回答方向:我当时的实现是基于模型对工具描述的语义匹配,把每个函数的 name、description、parameters 拼成 system prompt,让模型输出结构化 JSON 时附带 tool_call 标记。面试官追问了误触发和漏触发的情况,我补充了规则兜底:先做关键词匹配预筛,命中后再让模型判断;同时设置 confidence threshold,低于阈值时默认走普通对话分支。另外提了函数参数的强校验,防止模型输出非法 JSON 导致解析崩溃。

追问三:多轮对话的上下文管理,怎么控制 token 成本?

参考回答方向:核心是分层管理。短期记忆用滑动窗口保留最近 N 轮,长期记忆通过摘要压缩存入向量库,按需检索。我提到了对历史消息做 token 计数,超过阈值时触发摘要生成,但摘要本身也要控制长度。面试官进一步问摘要丢失细节怎么办,我回答对关键实体和用户明确提到的偏好做额外持久化,在摘要生成时强制注入这些信息。成本优化方面,提了缓存重复前缀(如系统 prompt + 固定工具描述),以及用更小的模型做意图识别过滤无效上下文。

手撕算法:寻找旋转排序数组中的最小值

题意:一个按升序排列的数组在某个未知点做了旋转(如 [4,5,6,7,0,1,2]),要求找到最小元素,时间复杂度 O(log n)。

关键思路:二分查找,每次比较 nums[mid]nums[right]。如果 nums[mid] > nums[right],说明最小值在右半部分,left = mid + 1;否则最小值在左半部分(含 mid),right = mid。注意边界条件:数组没有旋转时直接返回 nums[0];循环条件是 left < right,结束时 left 即最小值下标。核心洞察是旋转点把数组分成两段升序序列,而最小值恰好是第二段的起点,利用与右端点的比较可以判断当前处于哪一段。

准备建议

  1. 项目准备要落到工程细节:不要只讲用了 RAG 和 LangChain,要能说清楚检索链路每一步的耗时占比、chunk 大小怎么定的、召回率具体从多少提升到多少。面试官对「我调了 embedding 模型」这种回答免疫,你要能说出为什么换、换了之后指标变化多少、代价是什么。
  1. Go 语言重点复习并发模型:B 站后端 Go 为主,goroutine 调度、channel 阻塞机制、sync 包常用原语是高频考点。建议手动画一遍 GMP 调度流程图,理解 P 的本地队列和全局队列的交互,以及 work stealing 的触发时机。手写一个带超时控制的 worker pool 练手。
  1. 算法题保持手感:二面手撕难度中等偏上,重点复习二分查找变体(旋转数组、寻找峰值)、链表操作、二叉树遍历。不要只刷原题,要理解边界条件的推导过程,因为面试官会追问「为什么是 left < right 而不是 <=」这类细节。

结果反馈

一面通过后约一周收到二面通知,面试完第三天 HR 电话告知通过,约了终面。

想系统备战大厂大模型/Agent 开发?NiceOffer 提供 SDE+LLM 双轨 1v1 陪跑,合同保底 40w 年薪,文末扫码咨询。