大厂前端面试真题(三)
某大厂一面,竟然都是关于AI的,看来已经成为趋势。
1. 怎么用 AI Coding 的?用的什么工具?
根据日常使用的说明即可,如:目前的标配是 “Trae + 豆包” 或 “Cursor + Claude Code”。但我不是把 AI 当成聊天机器人,而是把它作为集成开发环境(IDE)的智能上下文层。在实际开发中,我更看重的是 “意图的颗粒度”。我不会让 AI 直接去写一个功能,而是利用大模型先分析需求,告诉AI主体的方向。比如在开发一个复杂的列表过滤功能时,我会先定义好数据流向,让 AI 负责生成样式和基础逻辑,我则负责处理那些复杂的业务逻辑和状态同步。我把 AI 当成一个能读懂我项目上下文的“高级结对编程伙伴”。你还可以往 “AI提问方式”“skills技能”等 方向引,聊聊你是如何通过这些让AI生成的代码质量更加好 。2. 了解 SDD、Spec Coding 吗?
了解。这其实是 AI 时代提高代码产出准确率的工程化手段。* SDD(Software Design Document,即软件设计文档):我会先让 AI 辅助生成设计文档,包括模块职责、数据流向图和状态机转换。在代码动笔前,先对齐设计,这能规避掉 80% 的返工。* Spec Coding:这是一种“规格驱动”的做法。我会先写好 代码规范 或 技术要求,然后把这些“规格限制”喂给 AI。这相当于给了 AI 一个硬性约束,让它在这个框架内填写代码。这比直接让它写功能要稳得多。可以引申到 “测试驱动开发(TDD)” 在 AI 时代的进化,聊聊如何利用 AI 快速生成覆盖边缘情况的单测用例。3. AGENTS.md 里应该写什么?和 README 的区别?
README 是写给人看的,侧重“怎么用”,介绍项目是什么、如何快速启动、如何部署;AGENTS.md 是写给 AI 编辑器看的,侧重“怎么写”, AGENTS.md 的核心目标是:让AI理解项目的上下文、约束、架构和操作规范,从而生成更准确、更符合项目风格的代码,避免产生“幻觉”或破坏现有结构。在 AGENTS.md 里,我会定义这个项目的技术要求。比如:* 项目架构与目录结构:哪些逻辑必须放在 services,哪些必须放在 hooks。* 编码规范与风格:AI需要遵循特定的代码风格,而不是默认的通用风格。* 技术栈与依赖:明确告知AI当前项目使用的特定库,防止AI建议使用项目未集成的库。。* 关键约定与业务规则:AI需要知道的隐性规则或业务逻辑。* 常用命令与工作流:帮助AI在执行操作(如修复错误、添加功能)时知道该运行什么命令。4. 如何让 AI 遵守项目规范?
靠 Prompt 叮嘱是“软约束”,必须配合工程化“硬约束”。除了在 .cursorrules 里写死规则外,我更看重 “示例驱动(Few-shot)”。我会把项目里写得最规范的一个组件作为示例文件,要求 AI 严格模仿。更重要的是,我会集成 Git Hooks,在 AI 提交代码前强制跑一遍自定义的 AST 静态扫描。如果 AI 生成的代码违反了命名规范或钩子调用顺序,直接在提交阶段拦截。可以转向 “工程质量红线” 的话题,谈谈在引入 AI 后,团队的代码审计(CR)流程发生了哪些改变。5. 介绍一下项目,为什么用 RAG,RAG 存些什么?
RAG(检索增强生成)解决了模型知识滞后和私有数据不可见的问题。在我的项目中,RAG 主要是为了处理私有技术栈的咨询。因为大模型没见过我们内部封装的框架和业务规范,直接问它会瞎编。* 存什么:我会把代码库的 index.d.ts、业务流程图(Markdown 格式)、以及 API 文档切片后转成 Vector(向量) 存入数据库。* 核心逻辑:当用户提问时,先去库里召回最相似的 3-5 个技术片段,拼接到 Prompt 里发给模型。可以引申到 “向量检索的准确率优化”,比如如何做文本切片(Chunking)以及多路召回策略。6. 介绍一下 SSE,为什么用 SSE,SSE 怎么连接的?
SSE(Server-Sent Events)是基于 HTTP 的轻量级单向流式传输协议。* 为什么用:AI 吐字是一个一个出来的,如果等全部生成完再返回,**首屏时间(TTFT)**会非常糟糕。SSE 相比 WebSocket 更轻量,不需要处理复杂的握手,且天然支持 HTTP 缓存和断线重连。* 怎么连:前端使用 fetch 配合 ReadableStream 或者专门的 EventSource API。通过设置 Accept: text/event-stream 保持连接,服务端持续推送 data: 格式的数据块。可以聊聊 “打字机效果”的渲染优化,以及如何处理 SSE 连接在移动端或者弱网环境下的异常中断。7. 前端 AI 实时补全怎么做的?
核心在于 防抖(Debounce)+ 细粒度上下文采集。* 触发机制:监听编辑器的输入,只有当用户停顿(比如 300ms)且光标处于特定语法位置时才触发请求。* 上下文构造:AI 不仅看当前这一行,还需要获取光标前后的 AST(抽象语法树)片段。会把当前文件的 Imports 和相邻文件的函数定义打包发给后端。* 渲染:利用编辑器(如 Monaco 或 VS Code 扩展)的 Inline Completion 接口,以灰色虚影展示,不阻塞正常打字。可以谈谈 “端侧小模型(On-device LLM)” 在本地补全场景的应用前景。8. 简历上的项目,现在让你做的话 AI 占比会有多少?你会怎么利用 AI?
我认为体力活占比 80% 交给 AI,核心决策 20% 留给人。以前我可能在写各种数据映射和 UI 细节,现在我会把 AI 提拔为“全职外包经理”。* 我会利用 AI 快速生成单元测试和 E2E 测试,这是以前最耗时且没人愿意干的。* 我会利用 AI 进行 “多方案性能对比”。比如在 React 和 Vue 的选型上,或者在不同的状态管理方案上,让它给出优劣势分析并生成 Demo。* 我会把更多的精力放在业务逻辑的抽象上,而不是具体的语法实现。可以聊聊 “人机协作下的工程提效比”,如何衡量引入 AI 后真实的开发周期缩短了多少。9. 如果产品经理给你多个需求,你会怎么让 AI 去完成?
不能直接丢给 AI,要走 “解析 -> 拆解 -> 编排 -> 验证” 的闭环流程。* 需求共识:先把 PRD 给 AI,让它找出其中的逻辑矛盾或缺失的边界情况。* 原子化任务:让 AI 将需求拆解成互不干扰的 Git Branch 任务。* 并行生成:分别开启不同的对话上下文,处理 UI、逻辑 Hook 和 API 对接。* 一致性检查:这是最关键的。我会让 AI 编写一个集成测试,来验证这几个新功能合在一起后,会不会对旧逻辑产生破坏。可以引申到 “复杂系统下的依赖管理”,聊聊如何防止 AI 生成的代码导致系统过度耦合。如果面试官继续深挖,不要怕。只要你坚持一个原则:“我是决策者,AI 是执行者”,所有的追问都可以引回到“你是如何通过人的判断力来兜底质量”这个点上。