NiceOffer

面试面经 · Shein

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

Shein面经Agent 开发实习

背景

海外一年制硕士,国内某大厂 Agent 相关组暑期实习二面,全程约 60 分钟,面试官是组内一线研发,整体风格偏工程落地,八股问得不深但会顺着项目一直往下钻。

题目摘要

  1. Go 语言基础:slice 的底层结构、扩容规则,以及 for range 遍历时取地址的经典坑;追问 sync.Map 和普通 map+mutex 的取舍。
  2. MySQL 八股:聚簇索引与回表、explain 里 type 字段的等级、什么情况下索引会失效;结合一个 order by + limit 的慢查询让现场分析。
  3. Redis 八股:缓存穿透/击穿/雪崩的区别与各自解法,追问布隆过滤器误判怎么处理、热点 key 怎么发现。
  4. Agent 项目深挖:RAG 召回质量怎么评估、Function Calling 的工具描述怎么写才稳定、多轮对话上下文怎么裁剪、推理成本怎么压。
  5. 手撕算法:给一个整数数组和一个目标值,返回所有和为目标的不重复二元组下标组合(LeetCode 1 的变体,要求去重且返回下标)。关键思路:排序 + 双指针,去重时跳过相邻相同元素;若必须返回原始下标,则先记录 (value, index) 再排序,或改用哈希表一次遍历、用 set 对结果去重。

项目深挖

简历上写了一个基于 RAG + Function Calling 的智能客服 Agent,面试官几乎全程围绕它问。

追问一:你的 RAG 召回效果怎么衡量?如果召回不准,你从哪一层开始排查?

参考回答方向:先讲清楚离线评估指标——召回率、MRR、命中率,用一批人工标注的 query-doc 对做评测集。排查要分层:先看切分策略(chunk 太大导致语义稀释,太小导致上下文断裂),再看 embedding 模型是否匹配领域语料,然后看检索方式(纯向量 vs 向量+BM25 混合),最后看 rerank 有没有上。重点是要能说出「我实际改过哪一层、指标涨了多少」,而不是罗列所有可能。

追问二:Function Calling 里工具描述怎么写,模型才不容易调错?工具多了怎么办?

参考回答方向:工具名和描述要具体、带约束,把参数的类型、取值范围、必填项写清楚,避免多个工具语义重叠。工具数量多的时候不要全塞进 prompt,可以按意图先做一层路由,只挂载当前场景相关的工具,既省 token 又降误调。还可以补充:给模型 few-shot 示例、对参数做 schema 校验、调用失败时把错误信息回灌让模型重试。

追问三:多轮对话上下文越来越长,你怎么管理?推理成本怎么压?

参考回答方向:上下文管理上,短期用滑动窗口保留最近 N 轮,长期把历史对话做摘要压缩,关键实体/槽位单独抽出来存结构化状态,不依赖原始文本。成本优化上:简单意图走小模型或规则,复杂推理才上大模型;对稳定 query 做语义缓存;把 system prompt 和工具描述做成可缓存的 prefix;控制 max_tokens、减少不必要的 rerank 调用。能报出「优化前后单次对话 token 降了多少、延迟降了多少」会加分很多。

准备建议

  1. 八股只背高频、能讲透的:MySQL 就把索引、事务、慢查询分析吃透,Redis 就把三大缓存问题和持久化搞清楚,别贪多。每个点准备一个「我项目里怎么用的」例子,面试官更爱听落地。
  2. 把项目拆成「问题—方案—指标」三段式:针对 RAG、Function Calling、上下文、成本这四个方向,各准备一个具体改动和量化结果。没有真实数据就自己跑个小评测集,别空谈。
  3. 手撕按题型刷,不按题号刷:双指针、滑动窗口、哈希、二分、二叉树遍历这几类覆盖大部分实习手撕。每道题写完主动说时间/空间复杂度和边界情况,比闷头写完更加分。

结果

二面通过,三天后收到 HR 面邀约。

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