NiceOffer

面试面经 · 小红书

【小红书】【大模型开发】【暑期实习三面】面经(八股+大模型项目+手撕)

小红书面经大模型开发实习

小红书 大模型开发 暑期实习三面面经

背景:海外一年制硕士,一段中小厂 NLP 算法实习,一个 RAG 个人项目。三面是交叉面,面试官来自推荐架构组,整体风格偏工程和底层,问得细,不太关心你背了什么,更在意项目里每一步的取舍和代价。

题目摘要

  1. Go 语言基础:channel 的底层数据结构,无缓冲和有缓冲 channel 在 send/receive 上的阻塞时机,如何用 channel 实现并发安全的计数器。
  2. MySQL 索引:联合索引 (a, b, c) 下,WHERE b = 1 AND a = 2 能否走索引?WHERE a > 100 AND b = 5 呢?分别解释原因。
  3. Redis 缓存一致性:Cache Aside 模式下,先更新 DB 再删缓存和先删缓存再更新 DB 各有什么问题?最终选了哪种,为什么?
  4. Agent 项目深挖:RAG 检索结果重排的策略细节,Function Calling 的触发准确率和延迟优化,上下文窗口超限的截断策略。
  5. 手撕算法合并区间(LeetCode 56 变体)。给定若干 [start, end) 左闭右开区间,合并所有重叠区间,返回合并后的区间列表。关键思路:按 start 排序,遍历时维护当前合并区间的 curEnd,若新区间 start <= curEnd 则更新 curEnd = max(curEnd, end),否则输出当前区间并重置。注意左闭右开时 start == curEnd 不算重叠。

项目深挖

面试官全程围绕我简历上的「智能客服 Agent」项目展开,追问密度很高,这里列三个最典型的。

追问 1:你的检索结果重排用的还是 bge-reranker 的默认阈值 0.5,这个阈值是怎么定的?线上如果调高到 0.7,对最终答案的准确率和召回率会有什么影响?

参考方向:阈值提高,重排后保留的片段更少、更精准,生成阶段幻觉概率下降,但可能过滤掉相关但表达不充分的片段,导致答案信息缺失,表现为召回率下降。实际调优建议画 PR 曲线,选 F1 最高点。更优做法是不要用单一阈值,而是结合 query 与片段最高分之间的相对差做动态判断,例如最高分 0.9、次高分 0.2,只取最高分即可;若最高分 0.6、次高分 0.55,说明信息分散,应多保留几个片段。

追问 2:Function Calling 触发准确率不够高,你当时说加了 prompt 约束和示例,但有没有想过从模型侧解决?

参考方向:面试官其实在提示你,prompt 工程是兜底手段,不是根本解法。可以回答:考虑用更小的专用分类模型(如 BERT-base 微调)先做意图判断,只有意图命中工具调用时才走 LLM 的 function calling 分支,这样能把误触发率降低 30% 以上,同时减少无效的 LLM 调用,降低推理成本。如果场景固定,甚至可以用规则 + 小模型做硬路由,LLM 只负责参数抽取。

追问 3:你的上下文管理是「超限就丢弃最旧的 message」,这样会不会导致对话连贯性崩掉?

参考方向:直接丢弃最旧消息确实粗暴,但工程上可以接受,因为早期消息对当前意图影响通常较小。更优策略是分层:系统指令和工具定义永远保留,最近 N 轮完整保留,更早的对话做摘要压缩(用 LLM 把历史信息提炼成 3-5 行摘要),摘要本身参与后续每次生成。代价是每次摘要需要额外一次 LLM 调用,约增加 10-15% token 成本,但能显著提升长会话体验。

准备建议

1. 把项目里的每个数字都问一遍「为什么是这个值」

面试官不会问你「你的 RAG 流程是什么」,而是会问「top_k 为什么是 5 不是 10」「chunk_size 为什么是 512」「相似度阈值为什么是 0.5」。提前把所有超参的调优过程和数据跑一遍,哪怕只是小样本对比实验,也要能说出调参方向。没有数据的项目在面试里站不住脚。

2. Go 和 Java 选一个,把并发模型和内存模型吃透

大模型开发岗位的工程面大概率会考语言基础,且偏向并发和性能。如果简历写了 Go,至少把 channel、goroutine、GMP 模型、sync.Pool 这些背熟,并准备一个实际用过的并发场景(比如并发拉取多个向量库的检索结果再 merge)。不要只背概念,要能画出来 channel 的 ring buffer 结构。

3. 手撕算法不要只刷 LeetCode 原题,要做变体

三面考的是左闭右开区间合并,和 LeetCode 56 的区别在于边界条件不同。面试官看的是你能不能快速识别出「边界条件变了,但排序 + 贪心的大框架不变」。建议把常见题目的变体都过一遍:合并区间、插入区间、区间交集,以及把闭区间改成开区间的场景。手撕时先说思路再写代码,写完主动跑一个边界测试用例。

结果反馈

三面结束后 3 天收到 HR 通知通过,约了隔周的 HR 面,整体流程推进速度比预期快。

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