跳到主要内容

面试脚本(30 分钟)

目标:给你一套可直接背的面试流程。

目录

流程安排

  1. 自我介绍(3 分钟)
  2. 项目介绍(10 分钟)
  3. 技术深挖(10 分钟)
  4. 现场小题(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 应用落地。”

常见错误(避免)

  • 只讲功能,不讲指标
  • 没有引用来源,可信度不足
  • 讲不清楚成本控制

现场回答模板(可复用)

“我会先 ___,再 ___,最后 ___,并用 ___ 指标验证。”

深挖问题题库

  1. 为什么不用 WebSocket?
  2. 如何处理超时?
  3. 如何做权限隔离?
  4. 如何做限流?
  5. 如何做重试?

面试后复盘清单

  • 哪些问题答得不完整
  • 哪些指标没有数据
  • 哪些项目细节可补充

分段话术(示例)

  • “这个模块我用三点讲清楚。”
  • “我先讲问题,再讲解决方案。”
  • “最后我给一个指标结果。”

技术深挖回答模板

  • 关键点 1
  • 关键点 2
  • 关键点 3

作品集展示话术

  • “这是一段 45 秒录屏。”
  • “这是架构图,包含前后端与向量库。”
  • “这是评估指标表。”

现场题答题框架

  1. 画流程图
  2. 说明关键接口
  3. 说明异常处理
  4. 说明指标

面试官常见追问列表

  1. 为什么不用微调?
  2. 如何做 RAG 评估?
  3. 如何做成本预算?
  4. 如何做 Prompt 回滚?
  5. 如何做错误码设计?
  6. 如何处理模型不可用?
  7. 如何做内容过滤?
  8. 如何保证稳定性?
  9. 如何做用户引导?
  10. 如何做 AB 测试?

答题检查清单

  • 是否提到“指标”
  • 是否提到“兜底”
  • 是否提到“可观测”

模拟回答(模板)

“我们先 ___,然后 ___,最后 ___,指标是 ___。”

技术回答示例(简版)

  • SSE:单向流式,部署简单
  • RAG:检索 + 生成,减少幻觉
  • 成本:预算 + 缓存

面试结束 Checklist

  • 是否强调前端优势
  • 是否展示项目成果
  • 是否给出指标

反问模板(更多)

  • 团队目前最大的挑战?
  • 你们的 AI 应用主要面向谁?
  • 你们更关注哪些指标?

快速答题短句(可背)

  • “我们用强约束 Prompt 降低幻觉。”
  • “我们用 RAG 保证可追溯。”
  • “我们用 traceId 做排障。”
  • “我们用 A/B 测试验证效果。”
  • “我们用 max_tokens 控制成本。”

补充话术(10 条)

  1. “我先讲结论。”
  2. “这里我补一句背景。”
  3. “我用数据说明效果。”
  4. “我补充一个兜底方案。”
  5. “这是一个常见坑。”
  6. “这部分我做了简化。”
  7. “我先跑通再优化。”
  8. “这个指标提升了。”
  9. “这块我做了监控。”
  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、模型、费用
  • 展示:单次 + 日汇总

结构化回答脚手架(长答)

  1. 问题本质:一句话定义问题
  2. 方案步骤:3-4 步
  3. 指标:1-2 个指标
  4. 风险: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