面试面经 · Shein
【Shein】【大模型开发】【暑期实习三面】面经(八股+大模型项目+手撕)
Shein 大模型开发 暑期实习三面面经
背景:海外一年制硕士,主攻 NLP 与 LLM 应用,一段中小厂算法实习经历。
题目摘要
本次三面整体风格偏工程落地,面试官为大模型平台组技术负责人,全程围绕“能不能把模型用起来、用得稳、用得便宜”展开。具体考点如下:
- 编程语言基础(Go):goroutine 与 channel 的底层原理、内存逃逸分析、
sync.Map适用场景及与普通 map + RWMutex 的取舍。 - MySQL/Redis 八股:MySQL 隔离级别与 MVCC 实现、覆盖索引优化;Redis 持久化 RDB/AOF 对比、缓存穿透与布隆过滤器误判率计算。
- RAG 项目深挖:针对简历中一个电商客服问答系统,追问 chunk 切分策略、混合检索权重调优、重排序模型选型依据。
- Function Calling 与上下文管理:多轮对话中工具调用结果如何压缩回上下文、token 超限时的截断策略。
- 推理成本优化:Prompt 缓存命中率如何提升、KV Cache 显存占用估算、量化方案对比(INT8 vs FP16)。
- 手撕算法题:实现一个支持
set(key, value, timestamp)和get(key, timestamp)的键值存储,要求get返回给定时间戳之前最近一次set的值(若不存在返回空串)。关键思路:每个 key 维护一个有序数组(或 TreeMap)存储(timestamp, value),get时二分查找最后一个小于等于给定时间戳的条目,时间复杂度 O(log N)。
项目深挖
追问 1:你提到 RAG 的 chunk 大小从 512 调到 256 后效果变好,具体是哪些指标变好?为什么?
参考方向:不要只回答“准确率提升”。要拆解到检索层和生成层——召回率(Recall@K)上升,因为小 chunk 降低了跨段落语义污染;但精确率可能下降,所以同时引入了 sentence-window 或 parent-document 检索策略来补偿。另外要提到小 chunk 导致检索片段变多,LLM 输入 token 增加,推理延迟上升约 18%,最后用重排序模型只取 Top-3 来控制成本。面试官想看的是你是否理解“调参是系统工程,不是单点最优”。
追问 2:Function Calling 场景下,如果 LLM 连续调用 5 个工具,每个工具返回结果都很长,你怎么控制上下文长度?
参考方向:三个层次。第一层,工具返回前做摘要,用一个小模型(如 3.5-turbo)或规则抽取关键字段,而非直接拼原始 JSON;第二层,采用“滚动窗口 + 关键信息持久化”策略,将历史工具调用结果写入外部存储(如 Redis),对话上下文中只保留最近一轮的工具结果摘要和用户最新意图;第三层,设置总 token 预算(如 8K),超限时触发“压缩节点”,将早期对话用 LLM 生成结构化摘要替换原文。同时要提对工具结果做 schema 校验,防止脏数据污染后续调用。
追问 3:推理成本优化具体怎么做的?有没有量化数据?
参考方向:分两块。一是工程侧,开启 Prompt 缓存,将系统提示词和固定工具定义放在前缀,实测缓存命中率约 40%,单次请求成本下降约 25%;二是模型侧,对比过 INT8 量化与 FP16,INT8 下显存占用降低约 45%,但推理延迟反而上升了 8%(因为反量化开销),最终选择对长序列任务用 FP16、对短序列高并发任务用 INT8。另外提到用 vLLM 的 continuous batching 将 GPU 利用率从 30% 提到 70%。面试官追问“为什么 INT8 延迟更高”时,要答出反量化操作在 GPU 上并非完全免费,且小 batch 下计算密度低,访存瓶颈占主导。
准备建议
- 把 RAG 和 Function Calling 的每个参数都量化一遍。不要只说“我调了 chunk size”,要能说出调整前后指标变化、token 成本变化、延迟变化。面试官对“凭感觉调参”非常敏感,数字是最好的护身符。建议提前跑一组 ablation,哪怕只有 3-5 组实验,也能形成完整叙事。
- Go 语言重点复习并发模型,不要只背八股。三面大概率会问
channel的阻塞/非阻塞收发、select的随机公平性、goroutine栈扩容机制。建议手写一个“用 channel 实现工作池”的代码,并思考如果 worker panic 了怎么 recover、如何优雅关闭 channel——这些是生产环境真实会踩的坑。
- 准备一道“带时间戳的 LRU 变体”类题目。本次考的
set/get with timestamp本质是 TreeMap 二分查找,但面试官可能换皮考 LRU + 过期时间、或跳表实现。核心在于:理解有序数据结构在“找最近有效值”场景的优越性,以及为什么不用哈希表直接覆盖(因为要保留历史版本)。建议 LeetCode 刷 981 题(Time Based Key-Value Store),并延伸思考如果数据量超过内存怎么办(LSM Tree 思路)。
结果反馈
三面结束后约 4 个工作日收到 HR 电话,告知通过,进入 Offer 审批环节。整体感受是 Shein 的面试更看重“工程落地能力”而非纯算法炫技,建议后续面试者多准备线上问题排查案例和成本优化相关数据。
想系统备战大厂大模型/Agent 开发?NiceOffer 提供 SDE+LLM 双轨 1v1 陪跑,合同保底 40w 年薪,文末扫码咨询。