面灵AI→

27 届秋招 AI 面试全程:Agent 系统设计、记忆模块与万级并发后端

轮次
AI面试
时间
2026-09
来源
牛客网

《面试题目》

  1. 可以听到吗?
  2. 叫什么名字?先做一下自我介绍,3 分钟时间,做一个简短的自我介绍吧。
  3. 你刚才说到你对 AI Coding 也是有一些经验,那么你用的 Agent,或者说你在用什么工具写代码?
  4. 你用的是什么会员、什么订阅?
  5. 你现在自己有订阅吗?
  6. 昨天晚上发布了一个新的模型,你知道这个模型吗?
  7. 你用过 Claude 模型,是吗?
  8. 因为你前面说过你用过 Claude Code,所以你用过的最新版 Claude 模型是什么模型?
  9. 当时用的是什么版本?
  10. 我看到你在某公司做全栈开发实习生,你在那里都干了些什么?你的工程重点是什么?
  11. 你现在有哪些传统技术栈?注意是传统技术栈,就是不借助 AI、你自己能手写代码的部分,有哪些?
  12. Java 的话,你现在做全栈主要使用什么技术开发?
  13. 你用过 Go 或者 Rust 吗?
  14. 我看到你在智能鼠标 Agent 平台里面用到了 RabbitMQ,那么你给我讲一下,在 Java 里面你是怎么使用队列的?在智能鼠标开发过程中,你是怎么使用消息队列完成对应工作的?
  15. 有没有用过 Kafka 或者 Flink 这种大数据相关技术?
  16. 你当时项目里面有没有接触过大数据相关技术?
  17. 有没有用过任何大数据相关的东西?
  18. Spring Cloud 了解吗?
  19. Spring Boot 会吗?
  20. Spring Boot 熟悉吗?
  21. 如果现在让你实现一个战略地位类似 Claude Code 或者 Codex 这样的 Agent,但是它是面向大众市场的,不是专门面向程序员的,你会怎么设计?讲一下设计思路
  22. 你刚才提到会基于一个开源 Agent 项目来改。如果现在给你一个现成的开源 Agent,让你把它改成类似 Claude Code、Codex 这种更复杂、更大型的系统,你会怎么做?
  23. 所以说你用过这个开源 Agent 项目,是吗?
  24. 你给我讲一下它的设计思路。
  25. 你刚才讲到的这些更多是来自 LLM 的能力,而不是 Agent 工程本身的能力。你着重讲一下 Agent 这一部分,因为我们是开发岗,不是算法岗。
  26. 你不止一次提到记忆模块。如果让你设计一个记忆模块,而且你简历里面也写到过双层记忆,那么你认为一个比较好的记忆系统应该是什么样子?讲一下它的基本系统结构。
  27. 你刚刚提到,如果要把一个上下文窗口中的记忆放进向量数据库,存储的时候会先把它结构化。这个结构化你是怎么做的?用了什么算法、什么技术,或者什么方案?
  28. 如果现在让你开发一个比较大的在线考试系统,前端使用 Next.js、React 等技术,同时有一些高性能组件使用 Rust + WebAssembly,后端使用 Java,那么使用 Java 开发后端的时候,我们应该注意哪些重点,才能保证这些二进制代码在前端能够正常运行?
  29. 你可以使用 Spring Boot 或 Spring 技术栈,大概讲一下,怎么样才能把这种二进制的高性能前端组件集成到正常前端里面,让它正常运行?后端的系统结构应该怎么设计?你会使用哪些解决方案?
  30. 比如 C++ 经过编译以后会产生二进制代码,Java 需要运行在 JVM 里面,C++ 是直接运行在机器上的,现在我们让高性能模块运行在机器或者运行时上,但页面呈现在网页里面,可能是 WebView,也可能嵌入正常前端,那后端应该怎么设计,才能构建出一个稳定的系统?
  31. 我看到你第一个项目是一个面向高校学生的 AI 全学科辅导平台,大概流程是不是:学生向 AI 提问,也可以拍照上传题目,AI 帮他解答,同时整理错题、做汇总,最后给学生一些解答和建议?
  32. 如果现在有 1 万个学生同时向 AI 发问,假设 AI 算力无限、模型并发无限,那么你怎么处理整个后端?你们当时的技术栈是怎么应对这种高并发请求的?怎么保证这么多人的 AI 回复都能够正常返回?
  33. 你刚才说到「结构化会话状态」,你给我解释一下什么叫结构化会话状态?
  34. 你简历里面还写到优化了教育知识库的 RAG 检索链路。假设学生问的是微积分,但是同样一个微积分问题,在数学和物理里面可能有不同的理解和解法。如果 AI 本身没有准确判断出这是数学题还是物理题,那么进入 RAG 检索以后,你怎么保证它应该去检索数学知识库还是物理知识库?
  35. 你再说一下,在 Java 里面你还会哪些技术栈?比如高并发、线程池、微服务、大数据这些方向,还有没有其他东西?算法相关的也可以。
  36. 我看到你的项目经历里面还有一个多智能体的数据查询系统,对吧?你给我大概讲一下这个系统的设计思路。
  37. 好,我没有其他问题了,你还有什么问题想问我吗?

《参考解析》

  1. AI Coding 这一类开场题考的是「你在什么任务上用、怎么保证质量」:把工具名放一边,讲清三件事——在哪类任务上交给 AI(脚手架、样板代码、单测、脚本),在哪类任务上只让它当参谋(核心链路、并发与事务、线上问题定位),以及你怎么验收(可运行的测试、code review、diff 逐块看)。订阅与版本这类问题如实回答即可,被追问「昨晚发布的新模型」不知道就直说,硬编模型名比不知道更伤。

  2. 「面向大众市场的类 Claude Code Agent」是这道面试的主菜,答法要有分层架构:接入层(多端、鉴权、配额与计费)、会话编排层(规划-执行循环、上下文裁剪与压缩、工具调用的编排与失败重试)、工具与执行层(沙箱化执行、文件与网络权限、可回滚)、记忆层(短期会话状态 + 长期向量库)、模型层(多模型路由、降级与成本控制)。大众市场还要额外讲:内容安全审核与合规留痕、限流与排队、按量计费的计量口径。简历里写的「基于开源 Agent 改造」要能说出改造点——加了哪层、替掉了什么、为什么原设计不满足大众场景。

  3. 记忆模块要区分「存什么」和「怎么取」:典型分层是短期上下文(本轮会话窗口,做压缩与摘要)、长期语义记忆(向量库存事实与偏好)、以及结构化的用户画像(JSON/Schema 存确定性字段)。写入侧的关键是「先抽取再落库」——把自由文本转成带类型、带时间戳、带来源的结构化条目,去重与冲突时按时间与置信度覆盖;读取侧是「按相关性召回 + 重排 + 注入预算控制」,避免把整库塞进上下文。被追问结构化怎么做时,可以说清用 JSON Schema 约束模型输出、再用规则校验兜底,而不是只说「用大模型抽」;能提一句遗忘策略(时间衰减、容量上限)会显得更完整。

  4. 1 万个学生同时提问,考的是「算力无限但后端有限」的架构判断:先声明瓶颈不在模型而在你的连接、状态与编排——接入层无状态多实例、会话状态外置到 Redis/数据库(这正是「结构化会话状态」的含义:把对话历史、任务阶段、已生成的中间结果存成可序列化的结构,而不是留在某台机器的内存里);再用消息队列把「提问」与「生成」解耦削峰,前端用 SSE/WebSocket 流式回包并做断线续传;配合按用户与按模型的限流、排队与优先级,超时与失败要能重试且幂等(同一提问重试不能重复扣费、不能重复生成两遍)。

  5. Rust + WebAssembly 与 Java 后端配合,考的其实是「前后端边界与部署形态」:WASM 产物是静态资源,由前端构建流程打包或 CDN 分发,与后端无关;Java 侧要做的是给出稳定的接口契约(版本化 API、CORS/同源与安全头、内容哈希文件名避免缓存不一致)、在 WebView 与浏览器两种容器下做兼容性验证(WASM 特性、内存上限、线程与 SIMD 支持差异),以及决定重活放在哪——浏览器算力有限时,把同一套 Rust 代码编译成服务端原生库或独立服务,由 Java 通过 HTTP/gRPC 调用。答题时说清「谁负责分发、谁负责契约、谁负责降级」三点,比罗列技术名词更得分。

  6. RAG 找到「数学库还是物理库」,本质是把学科判定提到检索之前:可选多条路——查询分类/意图识别先路由到指定知识库(最可控,但会引入分类错误)、检索时带学科标签做过滤或用元数据加权、多库并行召回后按分数重排融合、以及把「不确定」做成兜底(两库都召回,由模型基于上下文判断并显式说明依据)。工程上一定要给分类结果留可观测性(记录判定结果与置信度)和纠偏入口(用户指出答错学科后回写标注),否则路由错了没人知道。

  7. 多智能体数据查询系统的讲解要落到「分工与收敛」:谁负责理解自然语言并生成查询意图、谁负责 schema 检索与 SQL 生成、谁负责校验与纠错、谁负责汇总成自然语言结论,以及它们之间怎么传递中间结果(结构化 JSON 而不是自由文本);再说失败处理——SQL 执行报错时把错误信息回灌给生成者重试、限定重试次数、超限降级为澄清提问。能被追问的点通常是「怎么防止智能体之间循环调用」和「怎么控成本」,各准备一句。