面试总体概述
案例背景
同一候选人 10.13 完成 AI 技术应用岗的技术一面与技术二面,两轮各约 1 小时,结果都在面试结束后十分钟内通知。一面所有问题围绕实习与项目展开,深挖 Agent 开发的 Harness 编排、记忆模块与技术选型,八股只涉及 Redis;手撕先给了一道非 hot100 的 hard(二分 + 贪心,未写出完整代码),换题后是字符串排列。二面不考八股,聚焦 AI 的安全应用与项目落地,并追问 AI Coding 工具的使用方法与 coding plan 选型,手撕为两个数组的交集。
基本信息
- 公司:华为技术有限公司
- 岗位:AI 技术应用
- 招聘类型:校招
- 面试时间:2026-10-13
- 面试轮次:2 轮
- 平均时长:1 小时
- 题目数量:共 11 题,均附参考答案
- 整体难度:★★★☆☆ 中等
- 候选人背景:有实习经历,面试全程围绕实习与项目展开
面试轮次与结构
| 轮次 | 类型 | 时间 | 时长 |
| --- | --- | --- | --- |
| 1 | 技术一面 | 技术面 | 2026-10-13 上午 9 点多 | 1 小时 |
| 2 | 技术二面 | 技术面 | 未注明 | 1 小时 |
高频考点
| 考点 | 分类 | 出现轮次 | 次数 |
| --- | --- | --- | --- |
| 手撕代码(二分 + 贪心 hard / 字符串排列 / 数组交集) | 算法与数据结构 · 手撕代码 | 技术一面、技术二面 | 3 |
| Agent 应用开发(Harness 编排 / 记忆模块) | 项目经历 · Agent 开发 | 技术一面 | 2 |
| AI Coding 工具与 coding plan 选型 | 机器学习 / AI · 工程效率 | 技术二面 | 2 |
| AI 的安全应用与项目落地 | 机器学习 / AI | 技术二面 | 2 |
| Redis 基础 | 基础八股 · 数据库 | 技术一面 | 1 |
备考建议
| 优先级 | 易失分点 | 准备动作 |
| --- | --- | --- |
| P0 | 非 hot100 的 hard 手撕写不出来就放弃表达 | 按「二分答案 + 贪心判定」等套路做专项训练;场上先把单调性与判定函数讲清楚,再主动请面试官给提示 |
| P0 | Agent 项目讲不出哪些是自己实现的 | 准备一张 Harness 调用链图与记忆模块的读写流程图,能说清每一步由谁触发、失败怎么处理 |
| P1 | AI 工具只会用、不会说 | 整理常用 AI Coding 工具的适用场景与套餐差异,准备一个「使用前后耗时对比」的具体例子 |
| P1 | 偏项目就完全放弃八股 | Redis 等基础仍会抽查,按「数据结构 → 过期与淘汰 → 缓存穿透/击穿/雪崩 → 持久化与高可用」整理一页 |
| P2 | 题意不清时闷头硬写 | 养成先复述题意与约束、确认边界再动手的习惯;存在多解时先讲清两种理解,再选一种实现 |
第 1 轮:技术一面
面试形式与时长
- 轮次名称:技术一面
- 面试类型:技术面
- 时间:2026-10-13 上午 9 点多
- 时长:1 小时
- 本轮题量:6 题
重点考查维度
- 项目经历 —— 本组 3 道题
- 算法与数据结构 —— 本组 2 道题
- 基础八股 —— 本组 1 道题
面试结束后约 10 分钟通知一面通过。所有问题围绕实习与项目展开,八股仅涉及 Redis。
看难题下的思路表达与临场调整,而不是非要写出完整代码;考察回溯模板的熟练度与去重细节;看是否真的自己实现过编排层,而不是只会调 API。
面试真题与参考答案
Q1 手撕:一道非 hot100 的 hard(二分 + 贪心)
算法与数据结构 · 手撕代码
考察重点:看难题下的思路表达与临场调整,而不是非要写出完整代码。
参考答案:
具体题干没有完整留存,只留下「二分 + 贪心」这个考点,按这一套路给出通用解法。
这类题通常是「二分答案 + 贪心判定」:
- 把「求最优值」转成「判定可行性」:给定一个值 x,能否在限制下完成。
- 二分搜索答案区间 [lo, hi],按判定结果收缩边界。
- check(mid) 用贪心实现,保证 O(n)。
- 注意单调性前提与上下界取值,区间开闭要和判定条件一致。
def solve(a, k):
def check(x):
# 贪心:按容量 x 依次装填,看能否在 k 段内覆盖全部元素
cnt, cur = 1, 0
for v in a:
if cur + v > x:
cnt += 1
cur = v
else:
cur += v
return cnt <= k
Q2 手撕:字符串排列
算法与数据结构 · 手撕代码
考察重点:考察回溯模板的熟练度与去重细节。
参考答案:
def permute_unique(s):
res = []
s = sorted(s)
used = [False] * len(s)
def dfs(path):
if len(path) == len(s):
res.append("".join(path))
return
for i in range(len(s)):
if used[i]:
continue
if i > 0 and s[i] == s[i - 1] and not used[i - 1]:
continue
used[i] = True
path.append(s[i])
dfs(path)
path.pop()
used[i] = False
dfs([])
return res
要点:
- 复杂度 O(n!),去重后为 O(n × 结果数),额外空间 O(n)。
- 动手前先问清「是否要求去重、是否按字典序输出」,条件不同实现与输出顺序都会变。
- 本题在换题后当场写出并通过。
标签:回溯去重
Q3 Agent 开发中 Harness 是怎么设计的
项目经历 · Agent 开发
考察重点:看是否真的自己实现过编排层,而不是只会调 API。
参考答案:
Harness 是模型与工具 / 环境之间的编排层,面试官想听你如何把「大模型 + 工具 + 状态」串起来,可以按四块讲:
- 工具层:工具注册与 schema 定义(参数校验、工具描述质量直接影响模型调对的概率),统一出入参结构。
- 循环控制:ReAct 式的 think → act → observe 循环,设置最大步数、超时与提前终止条件,避免死循环。
- 上下文与状态:多轮工具结果的裁剪与压缩(只保留必要字段),长结果落盘、按需回读。
- 稳定性与可观测:超时重试、幂等、异常兜底;每一步的输入输出都打日志,便于离线复现与评测。
讲的时候最好配一张自己画的调用链,说明每一步谁触发、失败怎么处理。
追问链(3 条):
- 工具调用失败与重试怎么处理
- 上下文超长时怎么压缩
- 怎么评测编排效果
标签:Agent、Harness、工具编排
Q4 记忆模块是怎么做的
项目经历 · Agent 开发
考察重点:考察长期记忆的存储、召回与评测设计。
参考答案:
记忆模块要区分「短期」与「长期」:
- 长期:事实性信息抽成结构化 KV(用户偏好、关键结论),语义类内容写入向量库,按当前 query 召回 top-k 再拼进上下文。
再补三件事才算完整:
- 写入时机:什么时候写、写什么字段、如何合并同义或冲突信息。
- 召回策略:阈值过滤、时间衰减、rerank,避免召回噪音污染上下文。
- 评测:把「该记住的有没有记住、不该记的有没有混进来」做成可回归的用例集。
追问链(2 条):
- 记忆冲突时怎么处理
- 向量库选型与召回精度怎么调
标签:记忆模块、向量检索、上下文管理
Q5 实习的产出、遇到的问题与技术选型
项目经历
提问形式:连续追问群
考察重点:以实习为核心验证项目真实性与个人贡献度。
参考答案:
三个子问题连着答,顺序建议:
- 产出:一句话说清业务价值 + 你独立负责的部分 + 可量化的结果。
- 问题:挑一个真实、有排查过程的问题(现象 → 假设 → 验证 → 定位 → 修复),重点讲你的定位路径。
- 选型:给出对比维度(性能、开发成本、可维护性、团队熟悉度),说明为什么选 A 不选 B,以及现在回看会不会改。
凡是简历与口述里出现的名词都要能往下展开一层。
追问链(3 条):
- 实习期间最核心的产出是什么
- 遇到的问题怎么定位与解决
- 关键技术选型为什么这么定
标签:实习经历、技术选型
Q6 Redis 相关八股
基础八股 · 数据库
提问形式:维度式提问
考察重点:确认基础八股没有明显缺口,考察原理能否落到项目。
参考答案:
Agent / 应用类项目里的 Redis 一般围绕四块被问:
- 数据结构与场景:String 做计数与缓存、Hash 存对象、ZSet 做排行榜与延时队列、List / Stream 做队列。
- 过期与淘汰:EXPIRE / TTL、惰性删除 + 定期删除、maxmemory-policy 各类淘汰策略的取舍。
- 缓存一致性:穿透(布隆过滤器 / 空值缓存)、击穿(互斥重建 / 逻辑过期)、雪崩(过期时间打散、多级缓存)。
- 持久化与高可用:RDB 与 AOF 的差异、主从 + 哨兵 / Cluster 的取舍。
结合自己项目里的键设计与失效策略来讲,比背条目更有说服力。
标签:Redis、缓存
第 2 轮:技术二面
面试形式与时长
- 轮次名称:技术二面
- 面试类型:技术面
- 时长:1 小时
- 本轮题量:5 题
重点考查维度
- 机器学习 / AI —— 本组 3 道题
- 项目经历 —— 本组 1 道题
- 算法与数据结构 —— 本组 1 道题
先面谈后手撕,全程没有八股。面试结束后约 3 分钟通知二面通过。帖中把本轮日期标注为「10.30 左右」,与标题日期不一致,故此处不填具体日期。
看是否理解大模型应用的风险面与工程化防护手段;验证项目是否真跑起来,以及你能否用数据描述结果;看是否有成型的 AI 辅助开发流程。
面试真题与参考答案
Q1 AI 的安全应用怎么考虑
机器学习 / AI · 安全
提问形式:开放讨论
考察重点:看是否理解大模型应用的风险面与工程化防护手段。
参考答案:
可以按「输入 → 模型 → 工具 → 输出」四层讲:
- 输入层:Prompt 注入与越狱防护(系统提示与用户内容隔离、指令优先级、可疑内容过滤)、敏感信息脱敏。
- 模型层:输出内容审核与兜底话术、幻觉抑制(强制引用来源、结构化输出校验)。
- 工具层:工具调用做权限最小化与白名单,参数二次校验;涉及写操作时加二次确认或人工审批,防止模型被诱导执行危险动作。
- 输出层:日志留痕与审计、可回滚。
结合项目举一个你实际做过的防护点,比罗列风险更有说服力。
标签:Prompt 注入、权限控制
Q2 项目的落地情况
项目经历
提问形式:开放讨论
考察重点:验证项目是否真跑起来,以及你能否用数据描述结果。
参考答案:
「落地」的关键词是可用的证据:
- 谁在用:真实用户量 / 调用量 / 使用频次。
- 效果:用指标说话(准确率、节省时长、人工介入率),并说明指标怎么测、基线是什么。
- 稳定性:在线可用性、失败率、平均响应时间。
- 迭代:上线后收到什么反馈、改了哪些。
项目还没上线就说明当前阶段(内测 / 灰度)、已验证的部分与下一步计划,不要夸大。
标签:落地效果、指标
Q3 AI Coding 工具的使用方法
机器学习 / AI · 工程效率
提问形式:开放讨论
考察重点:看是否有成型的 AI 辅助开发流程。
参考答案:
面试官在判断你是不是真的把 AI 编进了工作流,可以按环节讲:
- 需求与设计:用模型做方案对比、拆任务、写接口草稿。
- 编码:补全与整块生成、重构、单测生成、跨文件改动。
- 评审与排错:先让模型做一轮 review、给出报错的可疑点,再自己验证。
- 规则约束:项目级规则文件(约定技术栈与代码风格),上下文只投喂相关文件而不是整个仓库。
配一个具体例子:某个改动原本要多久、用工具后多久、返工点在哪里。
标签:AI Coding、工作流
Q4 购买了哪些大模型厂商的 coding plan
机器学习 / AI · 工程效率
考察重点
看是否长期、真实地使用,而不是临时应付。
参考答案
这题不是考谁买得多,而是看你有没有形成稳定的使用习惯:
- 说出实际在用的 1~3 家,以及各自擅长的场景(长上下文重构 / 代码补全 / Agent 式改动)。
- 说明选择理由:成本、额度、上下文长度、是否支持团队协作与规则文件。
- 说明组合方式:主力工具做日常开发,另一家处理长任务或做交叉验证。
- 没买过就如实说在用免费额度或自建方案,重点讲清你依赖它完成了什么。
关键词
coding plan、工具选型
Q5 手撕:两个数组的交集
算法与数据结构 · 手撕代码
考察重点
基础编码题,看边界与复杂度意识。
参考答案
先确认真实条件:是否要求结果去重(LC 349)还是保留出现次数(LC 350),数组是否已排序、规模多大。条件不同解法不同。
### 去重版:哈希集合
### 时间复杂度 O(m+n)
def intersection(nums1, nums2):
return list(set(nums1) & set(nums2))
### 保留出现次数版:哈希计数
### 时间复杂度 O(m+n),额外空间 O(min(m,n))
from collections import Counter
def intersect(nums1, nums2):
cnt = Counter(nums1)
res = []
for x in nums2:
if cnt.get(x, 0) > 0:
res.append(x)
cnt[x] -= 1
return res
如果两数组已排序,可以用双指针做到 O(m+n) 且 O(1) 额外空间。
面试时先问清约束再动手,是最稳的做法。
关键词
哈希表、双指针
备考提示
备考阶段,我发现很多同学容易陷入「不知道从哪准备」的困境。机会永远留给有准备的人,希望读到这篇文章的每一位同学都能拿到心仪的 offer。
以上内容整理自学员和应届同学反馈的真实面经,结合华为技术有限公司的最新考情整理,仅供参考学习。祝各位求职者顺利拿到心仪 offer!