主要是根据 JD,字节,腾讯,美团的面经总结,按我的简历写法(这篇100% 原题,来不及看大知识库可以看这个。(具体举例我就按我这边辅导所用 ai 项目去举例子。
前端 + AI / Agent 面试通用备战手册
适用对象: 前端 / 全栈 / AI 应用 / Agent 方向实习、校招、暑期面试。
核心目标: 不是帮你“背项目”,而是帮你针对常见面经里的 AI / Agent / SSE / RAG / Prompt / AI Coding 问题,准备一套更通用、更稳妥、可迁移到不同项目上的回答框架。
1. 总原则:AI 面试怎么答最稳
AI / Agent 面试最怕两件事:
-
术语很多,但落不到工程实现
-
把 demo 说成完整平台,被追问时接不住
所以建议所有回答都尽量按下面结构来:
标准答题结构
-
背景:为什么会有这个需求
-
目标:要解决什么问题
-
方案:为什么选这个技术
-
实现:核心链路怎么跑
-
难点:哪里最容易出问题
-
权衡:为什么不用别的方案
-
扩展:如果继续做,会怎么升级
万能保命句
-
这个点我更偏工程实现角度理解。
-
我当前真实做过的是 A、B、C,D 是我延伸了解的部分。
-
如果继续往完整 Agent 方向扩展,我会再补 E、F、G。
2. AI / Agent 方向自我介绍怎么带
30 秒版本
我最近除了前端基础能力,也在关注 AI 应用落地,重点关注的是流式输出、RAG、工具调用和 AI Coding 这些和前端工程结合比较深的方向。我更感兴趣的不是只接一个模型接口,而是怎么把 AI 能力做成稳定、可交互、可观测的产品体验。
1 分钟版本
我最近在准备和实践 AI 应用相关的内容,主要关注三个方向:
-
流式交互体验:比如 SSE 输出、增量渲染、中断与重试;
-
AI 能力工程化:比如把模型、知识库、工具调用做成可复用模块;
-
Agent 相关概念和系统设计:比如 RAG、MCP、Tool、Skill 这些概念如何分层,以及它们怎么落到真实工程里。
所以如果有 AI 前端、AI 应用或 Agent 相关的岗位,我会比较感兴趣。
3. 高频概念题:通用回答模板
你理解的 AI Agent 是什么?
标准回答:
我理解 Agent 不是单纯的大模型对话,而是让模型在目标驱动下,结合上下文、工具和执行策略,去完成一类任务的系统。
它通常包含几层:
-
模型层:负责理解、推理和生成
-
工具层:提供搜索、数据库、HTTP、代码执行等外部能力
-
记忆 / 上下文层:保存用户信息、历史消息、外部知识
-
规划 / 执行层:决定下一步做什么
-
观测 / 安全层:记录过程、限制权限、处理失败
一句话:
Agent = 模型 + 工具 + 上下文 + 执行策略,而不只是聊天接口。
你理解的 AI 应用和 Agent 有什么区别?
标准回答:
AI 应用是更大的概念,只要产品中用到了模型能力,都可以叫 AI 应用;而 Agent 更强调:
-
有明确目标
-
可以调用工具
-
能根据上下文自主决定下一步动作
-
更像一个“执行任务的系统”
所以不是所有 AI 应用都是 Agent,但很多 Agent 一定属于 AI 应用。
RAG 的作用是什么?
标准回答:
RAG 的核心作用是:
在模型生成前,把和问题相关的外部知识先检索出来,作为上下文提供给模型,从而减少幻觉、增强时效性和领域准确性。
它适合:
-
企业私有知识问答
-
文档问答
-
时效性较强的信息场景
-
需要“有依据回答”的场景
一句话:
RAG 不是替代模型,而是给模型补外部知识。
MCP 是什么?
标准回答:
MCP 可以理解成一种让模型或 AI 应用标准化访问外部工具和上下文的接口 / 协议思路。它重点解决的是:
-
工具怎么接进来
-
上下文怎么暴露给模型
-
调用方式怎么标准化
一句话:
MCP 主要解决“连接问题”,也就是模型怎么接入外部世界。
Tool 和 Skill 有什么区别?
标准回答:
Tool 是具体能力单元,比如搜索、发请求、查数据库;Skill 更偏程序性知识或 SOP,强调在某类任务里应该怎么组合和使用这些工具。
可以简单理解成:
-
Tool:能做什么
-
Skill:怎么做事
Agent Skills 是什么?
标准回答:
Agent Skills 更像一套标准化的程序性知识封装,它不是单次工具调用,而是指导 Agent 在特定场景下如何按步骤完成任务的操作手册或 SOP。
比如:
-
先检索资料
-
再筛选可信来源
-
然后调用某个工具生成结构化结果
-
最后按固定模板输出
所以它更像“任务方法论”,不是一个单独工具。
4. SSE 高频问题:通用答法
这是面试里特别常见的一组。
为什么 AI 场景常用 SSE?
标准回答:
因为 AI 文本生成本质上更像服务端持续向前端推送内容,SSE 在这种单向流式输出场景里非常合适。
优点主要有三点:
-
基于 HTTP,接入和调试简单
-
单向 server push 足够满足文本流场景
-
很适合增量输出、任务进度和通知流
如果是高频双向实时通信,比如多人协作、在线状态同步,那 WebSocket 更合适。
SSE 和 WebSocket 的区别?
标准回答:
核心区别在三个方面:
-
方向:SSE 单向,WebSocket 双向
-
协议复杂度:SSE 更轻,WebSocket 更强
-
适用场景:SSE 更适合 AI 输出流、日志流、任务进度流;WebSocket 更适合 IM、协同编辑、多人实时互动
一句话:
AI 输出流更偏 server push,所以 SSE 常常足够;需要复杂双向通信时才更偏向 WebSocket。
流式输出怎么实现?
标准回答:
典型做法是前后端配合:
后端侧
-
调用模型流式接口
-
按 chunk 读取增量内容
-
把内容包装成 SSE 消息返回前端
-
最后发送 done / error 事件
前端侧
-
用 fetch + ReadableStream 或 EventSource 读取响应
-
用 TextDecoder 解码字节流
-
按 SSE 协议边界解析事件
-
根据 text / done / error 等不同类型更新 UI
一句话:
后端负责把模型流转成标准 SSE,前端负责增量解析和渲染。
每个 chunk 都是完整 JSON 吗?
标准回答:
不一定。底层网络传输是按字节流切的,一个 chunk 可能只是一条消息的一部分,所以不能把底层 chunk 直接当成完整 JSON 解析。
更稳妥的做法是:
-
先做流式解码
-
再按 SSE 消息边界拆分
-
最后对完整
data做 JSON parse
这个点很容易被问,答出来会显得你对流式边界问题理解比较到位。
怎么中断 SSE?
标准回答:
如果是 fetch 请求,一般配合 AbortController;如果是原生 EventSource,可以调用 close()。
更完整的方案通常是:
-
前端取消请求
-
后端感知连接关闭
-
如果后端有任务执行器,还要支持真正的服务端取消
怎么做断流重连?
标准回答:
要分场景:
-
通知流 / 事件流:可以直接做重连和游标续传
-
AI 对话流:通常不能简单断了就接着播,要结合会话 ID、消息 ID、历史缓存决定是重试整次请求,还是恢复已生成内容
所以更专业的答法不是“断了就自动重连”,而是:
先区分这个流是否具备可恢复语义,再决定重连策略。
打字机效果频率怎么控制?
标准回答:
如果追求最低延迟,通常按流到达节奏直接渲染;如果希望有更平滑的“打字机效果”,可以加一层 buffer,把内容先缓存,再用 setInterval 或 requestAnimationFrame 按固定节奏消费。
这样做的本质是:
把模型返回节奏和 UI 展示节奏解耦。
5. AI Coding / Prompt Engineering 高频问题
提示词怎么设计?
标准回答:
我会把 prompt 拆成三层:
-
角色层:你是谁
-
任务层:你要完成什么
-
约束层:输出格式、禁止事项、边界条件
如果是代码生成,我会额外强调:
-
先理解上下文再改
-
尽量复用现有结构
-
不要擅自引入新依赖
-
输出要符合项目风格
一句话:
prompt 的目标不是把模型“管死”,而是减少歧义、提高结果可用性。
提示词设计太严格,会不会限制模型发挥?
标准回答:
会,所以要分任务类型。
-
确定性任务:比如修 bug、补表单、写接口层,我会写得更明确,因为目标是稳定和可控
-
探索性任务:比如方案设计、重构思路、技术选型,我会只约束目标和边界,给模型更大发挥空间
一句话:
确定性任务重约束,探索性任务重引导。
AI 生成的代码有没有 review?怎么 review?
标准回答:
一定要 review,而且我觉得 review 是 AI Coding 最重要的一步。
我一般从四层看:
-
功能是否真的满足需求
-
是否符合现有数据流、目录结构、命名风格
-
复杂度是否合理,有没有过度抽象
-
有没有性能、边界、类型和异常风险
如果是 UI 代码,我还会额外看:
-
交互状态是否完整
-
loading / empty / error 是否有覆盖
-
样式和现有设计体系是否一致
AI 生成代码后,数据应该补在哪里?
标准回答:
这个问题本质是在看你有没有理解项目数据流。
判断维度一般有三个:
-
这是局部状态还是全局状态
-
这是展示态、交互态还是业务态
-
项目原有数据入口在哪里,比如
store、context、service、hooks或page loader
所以更好的回答不是“在哪里方便就补哪里”,而是:
补数据的位置要服从项目原有的数据流架构。
6. RAG 高频问题:通用答法
做一个 RAG,大概要怎么做?
标准回答:
一般分为两段:离线建库和在线问答。
离线建库
-
导入文档
-
文档解析
-
文本清洗
-
分块切片
-
生成 embedding
-
存入向量库 / 检索存储
在线问答
-
用户输入问题
-
query 向量化
-
检索相关 chunk
-
组装上下文 prompt
-
调用模型生成答案
-
返回答案和引用来源
RAG 的难点是什么?
标准回答:
我觉得主要有四个:
-
文档解析质量:原始内容干不干净
-
切片策略:切太大和切太碎都不好
-
检索质量:召回结果直接决定上限
-
工程链路完整性:权限、更新、去重、引用展示、错误处理都要补齐
RAG 有什么局限?
标准回答:
RAG 不是万能的,常见局限包括:
-
检索错了,生成也会错
-
分块策略不好会丢上下文
-
长文档仍然受上下文窗口限制
-
并不是所有任务都需要检索增强
-
工程成本其实不低
一句话:
RAG 的上限,很大程度取决于检索质量,而不只是模型本身。
7. 系统设计题:如果让你做一个 AI 客服 / AI 对话系统
前端侧怎么上手?
标准回答:
如果我负责前端,我会从四层切入:
-
交互层:消息列表、输入框、流式输出、中断、重试、引用展示
-
状态层:会话状态、历史消息、streaming 状态、错误状态
-
协议层:和后端约定消息协议,比如 text / done / error / tool / reference
-
可用性层:自动滚动、断流处理、markdown 渲染、用户上翻时暂停跟随
一句话:
前端不只是把文本显示出来,而是把 AI 的不确定输出包装成稳定的产品体验。
如果后端也让你做?
标准回答:
我会按分层设计:
-
模型接入层
-
会话管理层
-
RAG / 知识增强层
-
工具调用层
-
SSE / API 接口层
-
观测与安全层
核心是把系统拆成可维护的模块,而不是所有逻辑都堆在聊天接口里。
8. 前端如何提升 AI 结果可用性
这是非常加分的一题。
标准回答:
前端不能让模型变聪明,但可以让结果更稳定、更可用。
我会考虑这些机制:
-
展示引用依据:提升可解释性
-
结构化渲染:优先展示结构化结果而不是纯文本堆砌
-
重试 / 重新生成:给用户补救手段
-
空态与错误兜底:避免坏结果直接暴露给用户
-
分层展示:先主内容,再引用、工具结果、扩展信息
-
可控交互:支持停止、继续、回看历史、复制、反馈
一句话:
前端不能保证模型正确,但可以显著提升结果的稳定性、可解释性和用户体验。
9. 面试中的避坑表达
不建议轻易说
-
完整 Agent 平台
-
完整 MCP 平台
-
动态 Skill Loader
-
多路召回 RAG
-
Token 级渲染
-
前后端统一 Zod 校验体系
更稳的表达
-
AI 应用 / AI Workflow / AI 交互系统
-
参考 MCP 思想的工具接入机制
-
基础版 / 工程化版 RAG
-
SSE 增量渲染
-
工具封装 / 工具调用单元
10. 万能答法(bushi)
模板 1:我没完全做过,但我知道怎么答
这个点我当前不敢说自己做得特别完整,但我理解它的核心是 A、B、C。如果让我从工程上落地,我会优先处理 D、E、F 这几个问题。
模板 2:我做过工程接入,但不是底层研究
这个问题我更偏工程实践视角,不敢说在算法原理上研究得特别深。但从系统实现角度,我会重点关注输入输出协议、边界处理、状态管理和可观测性。
模板 3:区分“做过”和“了解过”
这部分我自己实际做过的是 A、B,C 是我在项目中顺带补充了解的延伸内容,我可以分别展开讲。
AI / Agent 面试里,真正拉开差距的,不是你知道多少名词,而是你能不能把这条线讲顺:
需求背景 -> 架构分层 -> 协议设计 -> 前后端协作 -> 交互体验 -> 风险控制 -> 可扩展方向
只要你能把这条线讲顺,就算不是拿某一个固定项目举例,也能把很多问题回答得比较稳。