面试脚本(30 分钟)
目标:给你一套可直接背的面试流程。
目录
- 流程安排
- 项目讲述模板
- 现场小题
- 过渡话术(可直接用)
- 结尾提问(你可以反问)
- 自我介绍模板(60 秒)
- 项目讲述示例
- 时间分配(更细)
- 自我介绍样例
- 项目讲述样例
- 口述模板(可直接替换)
- 常见追问与示例回答
- 反问清单(更多)
- 项目介绍详细版(示例)
- 技术深挖问题清单
- 现场小题展开
- 结束语模板
- 常见错误(避免)
- 现场回答模板(可复用)
- 深挖问题题库
- 面试后复盘清单
- 分段话术(示例)
- 技术深挖回答模板
- 作品集展示话术
- 现场题答题框架
- 面试官常见追问列表
- 答题检查清单
- 模拟回答(模板)
- 技术回答示例(简版)
- 面试结束 Checklist
- 反问模板(更多)
- 快速答题短句(可背)
- 补充话术(10 条)
- 追问备用回答(简版)
- 结束后跟进
- 进阶反问
- 现场写代码注意点
- 复盘模板
- 结束语(备用)
- 补充话术(更多)
- 最后补充
- 结束备注
- 详细回答示例库(可直接套用)
- 结构化回答脚手架(长答)
- 完整面试脚本(逐段详解)
- 深挖问题详细回答(示例)
- 完整可运行代码(面试脚本清单)
流程安排
- 自我介绍(3 分钟)
- 项目介绍(10 分钟)
- 技术深挖(10 分钟)
- 现场小题(5-7 分钟)
项目讲述模板
- 问题:要解决什么
- 方案:怎么做
- 指标:如何评估
- 结果:具体数据
现场小题
- 写一个“流式 + 取消”最小实现
- 设计一个“RAG 文档问答”流程
过渡话术(可直接用)
- “接下来我用 1 分钟讲下系统架构,再用 1 分钟讲指标结果。”
- “这个问题我分三点回答:原因、方案、结果。”
结尾提问(你可以反问)
- 团队目前 AI 应用落地的最大瓶颈是什么?
- 你们更看重“体验”还是“成本控制”?
自我介绍模板(60 秒)
- 前端背景 + AI 应用方向
- 做过的项目(流式/RAG/工具)
- 指标或结果
项目讲述示例
- 需求:企业文档问答
- 方案:切分 + 向量检索 + RAG Prompt
- 结果:TopK 命中率 85%
时间分配(更细)
- 0-2 分钟:自我介绍
- 2-8 分钟:项目一(流式聊天)
- 8-15 分钟:项目二(RAG)
- 15-22 分钟:工程化(成本/监控)
- 22-28 分钟:现场小题
- 28-30 分钟:反问
自我介绍样例
“我是前端背景,过去半年专注 AI 应用工程,做过流式聊天、RAG 文档问答与工具型应用。重点在体验、成本控制与可观测性。”
项目讲述样例
- 问题:用户反馈回答不可信
- 方案:加入引用面板
- 结果:用户满意度提升 20%
口述模板(可直接替换)
“我负责的模块是 ___,核心目标是 ___. 我们采用了 ___ 方案,关键指标是 ___,最终提升到 ___。”
常见追问与示例回答
- 为什么选 SSE?
- SSE 简单稳定,适合单向流式输出
- 为什么要 RAG?
- 确保可追溯,避免幻觉
- 如何做评估?
- 用例集 + 命中率 + 引用准确率
反问清单(更多)
- 你们最关注的业务指标是什么?
- 团队目前最大的技术债是什么?
- 你们对 AI 应用的可靠性要求?
项目介绍详细版(示例)
- 背景:用户希望快速查询公司制度
- 方案:RAG + 引用面板
- 技术:切分/检索/重排
- 结果:引用准确率 92%
技术深挖问题清单
- 为什么选择 SSE?
- 如何做 Token 预算?
- 如何做流式中断?
- 如何做成本控制?
现场小题展开
- 写一个 AbortController 示例
- 设计一个 RAG pipeline
结束语模板
“感谢面试,我也很期待参与你们的 AI 应用落地。”
常见错误(避免)
- 只讲功能,不讲指标
- 没有引用来源,可信度不足
- 讲不清楚成本控制
现场回答模板(可复用)
“我会先 ___,再 ___,最后 ___,并用 ___ 指标验证。”
深挖问题题库
- 为什么不用 WebSocket?
- 如何处理超时?
- 如何做权限隔离?
- 如何做限流?
- 如何做重试?
面试后复盘清单
- 哪些问题答得不完整
- 哪些指标没有数据
- 哪些项目细节可补充
分段话术(示例)
- “这个模块我用三点讲清楚。”
- “我先讲问题,再讲解决方案。”
- “最后我给一个指标结果。”
技术深挖回答模板
- 关键点 1
- 关键点 2
- 关键点 3
作品集展示话术
- “这是一段 45 秒录屏。”
- “这是架构图,包含前后端与向量库。”
- “这是评估指标表。”
现场题答题框架
- 画流程图
- 说明关键接口
- 说明异常处理
- 说明指标
面试官常见追问列表
- 为什么不用微调?
- 如何做 RAG 评估?
- 如何做成本预算?
- 如何做 Prompt 回滚?
- 如何做错误码设计?
- 如何处理模型不可用?
- 如何做内容过滤?
- 如何保证稳定性?
- 如何做用户引导?
- 如何做 AB 测试?
答题检查清单
- 是否提到“指标”
- 是否提到“兜底”
- 是否提到“可观测”
模拟回答(模板)
“我们先 ___,然后 ___,最后 ___,指标是 ___。”
技术回答示例(简版)
- SSE:单向流式,部署简单
- RAG:检索 + 生成,减少幻觉
- 成本:预算 + 缓存
面试结束 Checklist
- 是否强调前端优势
- 是否展示项目成果
- 是否给出指标
反问模板(更多)
- 团队目前最大的挑战?
- 你们的 AI 应用主要面向谁?
- 你们更关注哪些指标?
快速答题短句(可背)
- “我们用强约束 Prompt 降低幻觉。”
- “我们用 RAG 保证可追溯。”
- “我们用 traceId 做排障。”
- “我们用 A/B 测试验证效果。”
- “我们用 max_tokens 控制成本。”
补充话术(10 条)
- “我先讲结论。”
- “这里我补一句背景。”
- “我用数据说明效果。”
- “我补充一个兜底方案。”
- “这是一个常见坑。”
- “这部分我做了简化。”
- “我先跑通再优化。”
- “这个指标提升了。”
- “这块我做了监控。”
- “这个方案可回滚。”
追问备用回答(简版)
- “我会加引用与校验。”
- “我会加成本面板。”
- “我会加监控告警。”
- “我会加错误码。”
- “我会加日志脱敏。”
结束后跟进
- 发送感谢信
- 补充项目链接
- 总结问题清单
进阶反问
- 你们如何评估模型效果?
- 你们如何做成本预算?
- 你们的 RAG 规模多大?
现场写代码注意点
- 先写伪代码
- 再写核心逻辑
- 最后补异常
复盘模板
- 亮点
- 不足
- 下一步
结束语(备用)
- “感谢这次交流。”
- “期待后续沟通。”
补充话术(更多)
- “这个方案可扩展。”
- “这个方案可回滚。”
- “这个方案可量化。”
- “这个方案可验证。”
最后补充
- 记得复盘
结束备注
- 保持自信
详细回答示例库(可直接套用)
Q: 为什么选择 SSE 而不是 WebSocket?
- 结论:SSE 够用、实现成本低、部署简单
- 细节:AI 场景主要是服务端单向推送
- 风险:双向需求少,SSE 更稳
Q: 如何做流式中断?
- 前端:AbortController
- 服务端:监听
req.on("close")关闭上游
const controller = new AbortController();
fetch(url, { signal: controller.signal });
controller.abort();
Q: 如何做 RAG 评估?
- 用例集:20-50 条问题
- 指标:TopK 命中率、引用准确率
- 产物:评估表
Q: 如何控制成本?
- 方案:max_tokens + 历史摘要 + 缓存
- 指标:单次成本、日均成本
Q: 如何保证输出格式?
- 方案:JSON schema 校验 + 重试
- 指标:JSON 合格率
Q: 如何设计引用面板?
- 方案:编号 + 原文片段 + 跳转
- 指标:点击率、停留时长
Q: 如何设计错误码?
- 方案:统一错误码 + 前端兜底
- 指标:MTTR
Q: 如何设计成本面板?
- 字段:token_in/token_out、模型、费用
- 展示:单次 + 日汇总
结构化回答脚手架(长答)
- 问题本质:一句话定义问题
- 方案步骤:3-4 步
- 指标:1-2 个指标
- 风险:1 个风险点
完整面试脚本(逐段详解)
1)自我介绍(60-90 秒)
- 核心句:前端背景 + AI 应用落地 + 结果指标
- 细节:流式聊天 / RAG / 工具型应用
- 指标:命中率、引用准确率、成本
2)项目一:流式聊天
- 问题:体验不连贯、可中断能力不足
- 方案:SSE + AbortController + 节流渲染
- 指标:TTFT、平均耗时
3)项目二:RAG 文档问答
- 问题:回答不可追溯
- 方案:切分/检索/重排 + 引用面板
- 指标:TopK 命中率、引用准确率
4)工程化与成本
- 方案:Prompt 版本化 + 评估集 + 成本面板
- 指标:JSON 合格率、成本下降
5)现场小题(示例回答结构)
- 先画流程图
- 再写关键接口
- 再写异常处理
- 最后给指标
目标 → 流程 → 风险 → 指标
6)反问(高质量)
- 你们目前 AI 应用的核心指标是什么?
- 是否更关注体验还是成本?
深挖问题详细回答(示例)
Q1: 为什么选择 SSE 而不是 WebSocket?
- 结论:AI 流式以单向推送为主,SSE 足够且成本低
- 步骤:POST /chat → SSE 响应 → 前端解析
- 风险:需要双向协作时再考虑 WebSocket
Q2: 如何做流式中断?
- 前端:AbortController
- 服务端:监听 req.close 关闭上游
- 指标:中断成功率
const controller = new AbortController();
fetch(url, { signal: controller.signal });
controller.abort();
Q3: 如何做 RAG 评估?
- 用例集:20-50 条问题
- 指标:TopK 命中率、引用准确率
- 产物:评估表 + 回归报告
Q4: 如何控制成本?
- 方案:max_tokens + 摘要 + 缓存
- 指标:单次成本、日均成本
Q5: 如何保证输出格式?
- 方案:JSON schema 校验 + 重试
- 指标:JSON 合格率
{ "code": "E_FORMAT", "message": "格式不合规" }
完整可运行代码(面试脚本清单)
源码目录:
docs/demos/portfolio-demo
node docs/demos/portfolio-demo/index.js