万类智生后端开发面经
《面试题目》
一、云图库平台项目问题
- 项目背景是什么?整体架构怎么设计的?
- 图片上传功能是怎么实现的?
- 大文件上传怎么处理?有没有考虑超大文件?
- 网站加载慢,你用了什么优化方案?
- 双缓存(本地 + Redis)存的是什么数据?是图片还是用户数据?
- 项目 DDD 领域是怎么拆分的?
- 系统设计边界有没有考虑过?
二、AI Agent 项目问题
- 基于 Spring AI 的 AI Agent 整体流程是什么?
- 基础任务(比如查天气)完整流转逻辑是怎样的?
- 查天气这种功能为什么需要知识库?必要性是什么?
- 情感问答的本地知识库检索流程是什么?
- Embedding 向量对比的准确性原理是什么?
- 为什么需要用 Embedding?
- 对话记忆功能是怎么实现的?
- 抛开所有框架,重新设计一个极简 Agent 系统怎么做?
- 最小闭环(比如 “早上好” 交互)怎么实现?
- RAG 完整流程是什么?
三、Java 后端 / 分布式 / 中间件问题
- 数据库事务机制你了解多少?
- 对 Open Cloud 架构怎么理解?
- 有没有想过自建 Agent?
- Spring Cloud 微服务学到什么程度?
- RabbitMQ 消息队列的实现细节了解吗?
- Redis 底层机制你熟悉哪些?
- 用 Redis 怎么设计一个消息队列?
- Redis 主从复制能用来做消息队列吗?
- 高并发场景下的加锁机制怎么设计?
四、技术认知与工具问题
- Claude 和 ChatGPT 在代码生成上的差异是什么?为什么?
- 你更擅长哪些开发方向?能接受测试 / 前端等岗位吗?
- 对 AI 智能家居硬件、端侧算力结合机器学习怎么理解?
五、压力类 / 底层设计问题
- 不用任何框架,从零实现一个最小 Agent 怎么做?
- 你现在的方案在真实业务场景下能用吗?有哪些缺陷?
《参考解析》
- 大文件上传:采用切片上传(Chunk Upload),前端将文件切割为固定大小块并添加索引,后端按顺序接收并写入临时目录,最后进行合并(Merge)。超大文件需引入断点续传机制,记录已上传的块索引。
- RAG 流程:文档解析 -> 文本分块 -> Embedding 向量化 -> 存入向量数据库 -> 检索(Query 向量化后对比) -> 召回上下文 -> LLM 生成回复。
- Embedding 原理:将非结构化数据转化为高维空间的数值向量,通过计算向量间的余弦相似度(Cosine Similarity)来评估语义的相关性,从而实现模糊搜索。
- Redis 实现消息队列:使用 List 的
LPUSH/RPOP或BRPOP实现简单的队列;使用 Stream 结构(XADD/XREAD)实现更专业的消息队列,支持消息持久化、ACK 确认机制和消费组模式。 - 最小 Agent 实现:核心是 Prompt Engineering + LLM API 调用。本质上是一个“输入处理 -> 意图识别 -> 工具调用 (Tool Calling) -> 输出拼接”的循环闭环。