面灵AI→

吉比特前端一面:AI coding 工作流、MCP 与接口幂等

轮次
一面
时间
2026-10
来源
牛客网

《面试题目》

  1. 自我介绍。
  2. 分享一下你用 AI coding 做工作提效的整套开发流程(从接到需求到自测上线),也就是你说的 harness 工程。
  3. 需求拆解时为什么先自己做而不是先丢给 AI?那些边界问题是不是应该沉淀成知识库,让 AI 先拆自己再看?
  4. AI 常见的不是写出闭包、性能这类代码问题,而是不理解需求里的隐性约束,你除了提示词还有什么预防手段?
  5. 你做过 MCP 服务,讲一下 MCP 是什么,实现一个 MCP 服务大致是什么流程?
  6. MCP 由几部分组成?
  7. 讲讲最近一段实习和负责的 AI 项目,你负责哪一块、有哪些有价值的优化?
  8. 底层用的是什么?只是大模型问答吗?Agent 能力是怎么实现的?
  9. 这个旅游平台除了问答还有什么能力?有没有记忆管理、会话管理、工具调用?
  10. 记忆系统的设计在服务端还是前端也有介入?
  11. 你们的东西和市面上大厂的产品(如豆包)比有什么优势或区别?
  12. 后端接口怎么保证幂等性?
  13. token 保证幂等性是什么意思?怎么保证?举个具体场景。
  14. 这个 token 的有效期是多久?如果他开了第一张票之后又下另一个订单开另一张票,用的还是同一个 token,怎么区分新增订单,会不会冲突?
  15. 算法:LeetCode 56 合并区间。
  16. 反问。

《参考解析》

AI 开发工作流(harness):可复用的骨架是:需求落到可验证的验收标准(先写清楚「做完什么样算对」,最好先有测试或检查脚本)→ 给上下文(相关文件、现有约定、接口 schema,而不是只给一句话需求)→ 小步让 AI 改(一次一个函数或一个文件,便于 review 和回滚)→ 自动验证(lint、类型检查、测试必须跑通)→ 人工 review 关键逻辑(安全、边界、数据一致性)→ 提交时写清为什么改。这套流程的价值不在「AI 写得多」,而在「错的时候能被拦住」。

需求该谁先拆:先自己拆的理由是边界与取舍只有人知道——哪些是这次不做的、哪些约束来自业务方、哪些改动会影响别的团队。AI 拆出来的方案往往「技术上合理但业务上不对」。更好的做法是分两步:人给目标和约束(含不做什么),AI 出拆解方案,人 review 后再进入实现。至于沉淀知识库:通用规范(代码风格、技术栈约定)适合沉淀,具体需求的业务边界不适合——它们变化快,沉淀下来反而变成过期上下文。

隐性约束怎么防:AI 出错主要不在语法,而在「它不知道的假设」。可用手段:把隐性约束显式化(写成验收清单、类型定义、注释里的不变量);用测试把行为固定住;让 AI 先复述它的理解再由人确认;对关键路径优先让它改而不是重写(重写会丢掉老代码里未写明的兼容逻辑);review 时专门盯「它有没有悄悄改了不该改的地方」。

MCP 是什么:Model Context Protocol 是一套让模型应用与外部能力对接的标准协议,把「工具/资源/提示模板」用统一的方式暴露出来,客户端(宿主应用)负责发现、调用和权限控制。价值在于解耦:工具提供方写一次 server,所有支持 MCP 的客户端都能用,不用为每个宿主写适配。

MCP 服务的组成:一个 server 通常包含:能力声明(提供哪些 tools、resources、prompts,带 JSON Schema 描述参数)、传输层(stdio 本地进程,或 HTTP/SSE 远程)、调用处理(收到 tools/call 后执行、返回结构化结果或错误)、鉴权与权限(谁能调、能调什么、危险操作要不要确认)。实现流程:定义工具清单与 schema → 实现各工具的处理函数 → 选传输方式并起服务 → 在客户端注册 → 用真实调用验证错误分支。

接口幂等与 token:幂等的本质是「同一个请求重复到达,结果只生效一次」。HTTP 语义上 GET/PUT/DELETE 天然幂等,POST 不幂等,所以下单这类 POST 要显式加幂等键。实现方式:客户端为一次「业务意图」生成唯一 key(uuid 或 业务号),服务端用它做唯一索引或 Redis setnx,重复请求直接返回首次结果。关键点是幂等键的粒度与生命周期——它标识「这一次提交」,不是「这个用户」。所以面试官追问的「token 有效期一天、下午两点开一张票、三点又开一张票」正是这个坑:如果幂等键按用户或按天生成,第二次提交会被当成重复而丢掉。正确做法是每次「点提交」生成一个新 key,key 的有效期只需覆盖这一次请求的重试窗口(分钟级),而不是一天。

和大厂产品的差别:不要硬吹。可讲的差异点:垂直场景的深度(特定业务的流程、数据、话术)、可定制性(企业自己的知识库与权限)、成本与部署方式(私有化、数据不出域)。反过来也要承认大厂在通用能力、多模态、生态上的优势。

合并区间:按左端点排序,然后线性扫描——如果当前区间左端点 <= 上一个区间的右端点就合并(右端点取 max),否则另起一段。注意用 max 而不是直接覆盖,因为可能出现完全包含的情况。时间 O(n log n)(排序主导),空间 O(n) 存结果。