面试面经 · 华为
【华为】【Agent 开发】【暑期实习三面】面经(八股+大模型项目+手撕)
海外一年制硕士,投的是华为 2012 实验室下某个做智能体平台的团队,暑期实习三面(技术终面),面试官是部门的技术负责人,全程 70 分钟,节奏偏深挖,八股问得少但每问都往底层追。
题目摘要
- Go 语言基础:
slice的扩容机制、map并发读写为什么会 panic、context的取消传播是怎么实现的,追问到channel底层hchan结构。 - MySQL / Redis 八股:聚簇索引与回表、
RR隔离级别下间隙锁怎么解决幻读;Redis 的持久化选型、缓存穿透/击穿的工程解法,追问到热 key 在 Agent 场景下的具体表现。 - Agent 项目深挖:RAG 检索链路的分块策略与召回率评估、Function Calling 的工具路由与参数校验、多轮对话的上下文管理与截断策略、推理成本优化(缓存、模型分级、prompt 压缩)。
- 手撕算法:给定一个字符串数组
tools表示可用工具名,再给一个用户 query,要求实现一个简易的意图路由——按 query 与工具描述的字符级相似度(如最长公共子序列长度归一化)排序返回 Top-K 工具。关键思路:先做分词/去停用词预处理,用 DP 求 LCS 长度,除以max(len(query), len(tool))做归一化,堆排或直接排序取 Top-K,注意空串和大小写边界。 - 系统设计小题:如果 Agent 的 tool 调用需要串行多个外部 API,如何设计超时与重试,避免雪崩。
项目深挖
追问一:你的 RAG 分块策略是怎么定的,怎么证明它比别的策略好?
面试官不满足于"我用了 512 token 固定切分"。参考回答方向:先说清文档类型(如果是 API 文档/工单,结构化程度高,按语义段落切比固定长度好),再讲评估方法——构造一批带标准答案的 query,用召回率@K 和 MRR 对比不同 chunk size 和 overlap 的效果,最好能给出"chunk 从 256 调到 512 时召回涨了 X%,但再往上因为噪声引入反而下降"这种带拐点的结论。如果没做过离线评估,就诚实说线上是靠人工抽检 + badcase 回流,但要能讲出你观察到的失败模式(比如跨 chunk 的答案被切断)。
追问二:Function Calling 里模型选错工具或者参数填错,你怎么兜?
参考回答方向:分两层。第一层在 prompt 和 schema 设计上——工具描述要写清适用边界和反例,参数用 JSON Schema 做强约束(enum、required)。第二层在运行时——解析模型输出后做 schema 校验,校验失败把错误信息回灌给模型让它重试一次,重试仍失败则降级到规则匹配或直接反问用户澄清。可以补一句:对于高频且边界清晰的意图,直接用分类小模型或关键词兜底,比每次都走大模型便宜且稳。
追问三:多轮对话上下文越来越长,token 成本和延迟怎么控?
参考回答方向:分层处理。近期对话保留原文,较早的轮次做摘要压缩;系统 prompt 和工具定义这类静态内容走 prompt caching(如果用的模型支持);对历史消息做相关性筛选,只把和当前 query 相关的片段塞回去。要能说出取舍——摘要会丢信息,所以关键实体(订单号、用户 ID)要单独抽出来结构化保存,不依赖自然语言摘要。如果面的是华为,可以提一嘴他们在推的昇腾/盘古侧推理优化,但要谨慎,别硬蹭。
准备建议
- Go 别只背语法,把 runtime 三件套过一遍:slice 扩容(1.18 后阈值和增长因子变了)、map 的
hmap/bmap结构与扩容触发、channel 的hchan和 sendq/recvq。面试官问"为什么"的时候要能画出来,光说结论会被打断。
- RAG 和 Agent 项目准备一套可量化的叙事:不要只讲"我用了 LangChain 搭了个 RAG",要准备 2-3 个具体数字——召回率、端到端延迟、单次调用成本、badcase 下降比例。没有真实数字就用离线实验补,面试官能听出来你是真跑过还是背的。
- 手撕题按"Agent 场景包装的字符串/排序题"准备:华为这类岗位的手撕往往不是纯 LeetCode 原题,而是套一层业务壳(工具路由、意图匹配、相似度排序)。把 LCS、编辑距离、Top-K 堆排、Trie 这几类练熟,能在白板上 15 分钟写完并处理边界。
三面结束当天下午收到 HR 通知通过,一周后发实习 offer。
想系统备战大厂大模型/Agent 开发?NiceOffer 提供 SDE+LLM 双轨 1v1 陪跑,合同保底 40w 年薪,文末扫码咨询。