收藏!大模型面试“跪了”?手把手教你应对高阶问题,小白也能看懂
本文分享了作者在腾讯Agent开发岗面试中遇到的大模型相关问题及应对策略涉及缓存设计、MQ异步处理、Redis持久化、RAG系统设计等适合准备大模型岗位面试的程序员学习。腾讯agent开发岗一面我跪了标题我用了“跪了”不是夸张。面试官是个看起来比我大不了几岁的技术大哥笑起来挺和善但问问题的密度和深度让我感觉自己像被放在显微镜下面。38分钟从我的二级缓存设计一路问到Redis持久化从RAG切分问到SDD流程。有的问题我答上来了有的我直接承认“没想过”还有的面试官当场给我讲了新知识。今天把这些问题和我的复盘整理出来希望对正在准备大模型岗位面试的朋友有点帮助。自我介绍完直接开始拷打面试官先让我简单介绍了自己我刚说完“之前在XX公司做过法律文档RAG系统”他就开始追问了。说实话我以为自我介绍只是个开场白结果他每一句话都记在心里后面每一个问题都跟我说的项目有关。项目中你这个本地缓存和Redis二级缓存的设计你认为哪些链路会使用这个本地缓存这个问题问得很细。我们做的法律文档RAG系统用户提问后会先查缓存缓存没有再去检索。我当时的回答是高频且不易变化的查询结果会用本地缓存。具体来说法律条款的释义比如“民法典第584条是什么意思”这类内容几乎不变用户常见问题FAQ的预计算结果知识库的元信息文档列表、更新日期等本地缓存用的是CaffeineRedis是主缓存。查询链路是这样的面试官追问了“什么场景下本地缓存不适用”——我说变化很快的数据比如实时对话的临时状态放本地缓存会导致不同服务器节点之间的数据不一致。缓存的更新的话是怎么想的这是第二个连环坑。缓存更新比缓存查询难十倍。我说了我们的做法写的时候删缓存读的时候再重建。具体流程用户修改了某条法律条款的解释先更新数据库删除Redis里对应的key不是更新是删删除本地缓存用了Redis的订阅发布通知所有服务器节点下次有人查这条数据时缓存没有就查数据库再写进去。面试官问“为什么不直接更新Redis”我说直接更新会有并发问题——两个请求同时更新后写的会覆盖先写的但先写的可能是更新的数据就乱了。删缓存的方式虽然会短暂造成缓存穿透但逻辑简单不会出错。他点了点头。本地缓存的过期时间大概是多久我说分情况法律条款解释24小时文档元信息1小时用户会话临时信息5分钟过期时间太短命中率低太长数据可能不新鲜。面试官追问了“24小时后缓存过期第一个请求会很慢怎么办”——我们做了后台异步刷新发现key快过期时提前几分钟用后台线程去查数据库把缓存续上用户请求来的时候不会感受到延迟。你认为它的这个用户量多少、什么场景下会用到两级缓存这个复杂的一个场景呢这个问题我承认有点懵。他问的是“你有必要做两级缓存吗”。我老实说我们项目的用户量不大日活几千人其实不需要这么复杂的设计。做两级缓存有两个原因技术探索想试试这个架构某些核心接口比如法律条款检索QPS确实高本地缓存能把延迟从几毫秒压到微秒级面试官笑了说“挺好知道自己做复杂了也是一种能力”。这句话让我放松不少。真正的场景读多写少 对延迟极度敏感 单节点QPS过万。比如春晚抢红包那种Redis扛不住全部请求加一层本地缓存能分担大部分读压力。你用MQ去做异步订单你是怎么在自己的电脑上去测试这一块的呢项目里我们用RabbitMQ做订单状态更新的异步处理。本地测试的做法用Docker跑RabbitMQ容器写一个模拟的生产者和消费者测试正常流程、网络断开重连、消费者宕机后的消息积压最难测的是消息丢失。我的办法是在消费者端写日志每条消息处理前记录messageId处理后记录状态两个日志对上就没丢。面试官追问“怎么模拟网络断开”——用docker pause命令暂停容器模拟网络不通然后看生产者的重连机制和消息堆积情况。怎么保证MQ的消息只被接收一次这个问题经典但陷阱很深。MQ只能做到至少一次做不到正好一次。我说的方案生产者发消息时带上唯一的messageId消费者拿到消息先查Redis看这个messageId有没有处理过处理过了就丢弃没处理过就处理然后把messageId写入Redis这样即使MQ重复投递业务层也能过滤。面试官追问“Redis挂了呢”——那就查数据库用唯一索引约束来防重复但性能差一些。没有完美的方案只有适合场景的权衡。什么场景下只处理一次这个问题我一开始没听懂他解释了一下什么场景必须保证消息只处理一次什么场景可以接受重复。我说必须只处理一次扣款、发优惠券、订单状态变更涉及到钱和资源的可以接受重复日志上报、统计计数幂等操作重复执行没影响他补充了一个发送通知邮件。重复发送虽然烦人但不会造成资损属于可接受范围。我记下了。秒杀的时候你Redis中的集合是一直都有效的嘛我们项目里有个模拟秒杀的模块用Redis Set存储库存。我说“不是一直有效只在秒杀活动期间有效”。面试官问“活动结束了呢”——删掉。但如果删的时候服务挂了怎么办这个问题他直接帮我问了就是下一个问题。假如你想要删这个set但是在你要删的时候服务挂掉了这种情况怎么办我当时说那就删不掉了呗下次启动再删。他摇头说这不够好。他给的思路给每个活动key设置过期时间。比如秒杀活动1小时key的过期时间就设1小时10分钟。即使删除操作失败key也会自动过期释放内存不会留下垃圾数据。这个思路让我学到一招——不要只想着“主动删除”要设计“被动兜底”。对于个人订单的数据你认为是持久化在DB中还是Redis中我说订单这种数据必须放DBRedis只能做缓存。他的反问很有意思“那如果用户查自己的历史订单你每次都查DB”我愣了一下说那肯定不行。所以实际做法是主存储MySQL订单的最终状态热数据缓存Redis最近7天的订单用户查的时候先看Redis冷数据归档OSS或数据仓库超过3个月的订单这样既保证数据不丢又保证大部分查询性能。Redis的持久化有研究过吗我说知道RDB和AOF。RDB是定期快照AOF是记录每一条写命令。RDB的优点是文件小、恢复快缺点是会丢最后一次快照后的数据。AOF的优点是丢数据少每秒刷盘或每条命令刷盘缺点是文件大、恢复慢。我们的做法主从架构主库开AOF从库开RDB做备份。面试官追问“如果主库挂了怎么恢复”——从库直接切主AOF用于极端情况的数据恢复RDB用于全量备份。为什么Redis肯定就没有办法去当持久化的数据库呢这个问题我本来觉得答案很明确但面试官举了个例子让我重新思考了。我当时的回答Redis是内存数据库即使有持久化也是异步的。你写一条数据到Redis返回成功的时候数据不一定写到了磁盘可能在内存里还没刷盘。如果这个时候断电数据就丢了。关系型数据库的redo log是同步刷盘的返回成功之前数据已经安全了。面试官说“有一年春晚是百度赞助的春晚上抢红包百度就是使用Redis进行持久化的。”我当时真的第一次听说。他说Redis在某些场景确实可以当主存储——比如红包的金额、秒杀的库存、用户会话。这些数据丢了有影响但可以忍受因为业务场景决定了丢数据的概率很低但高并发带来的收益巨大。百度的红包系统用Redis存红包余额配合精心设计的刷盘策略和主从切换能做到99.999%的可靠性。所以不是“Redis绝对不能做持久化数据库”而是“看你的业务能接受多大的丢数据风险”。这个回答让我对Redis的认识深了一层。智能体项目为什么使用Spring AI框架而不用Python的那些框架我说了两个原因团队技术栈是Java用Spring AI意味着不用单独运维一套Python环境公司内部的基础设施配置中心、监控、链路追踪对Java支持最好面试官追问“那你觉得Python的LangChain不好吗”——我说LangChain生态更丰富但Java项目硬接Python会带来额外的网络开销和运维成本。选型是权衡不是比谁技术更先进。你去比较过用Java以及其他语言去实现同一个模块之间的复杂度吗我说没有刻意比较过但有直观感受。举个例子调用OpenAI的APIJava要写HTTP客户端、处理流式响应、解析JSON代码量是Python的三倍。Python几行requests搞定。但复杂度不只是代码行数。Java的静态类型在多人协作时是优势——方法签名一改编译器直接报错比Python运行时才发现问题省心很多。面试官说“这就是取舍”我点头。你认为Java这个语言跟Python比起来的话它的优势是什么我列了几个性能JIT编译长时间运行的热代码性能接近C并发成熟的多线程模型比Python的GIL强太多生态Spring Boot整套方案大型项目开发效率高可维护性静态类型 强大的IDE重构更安全Python的优势是开发和试错快。所以我的习惯是原型用Python写验证完了用Java重构上线。项目中RAG是怎么设计的这个我画了流程图关键点混合检索向量相似度 关键词匹配避免纯向量检索漏掉专有名词重排序向量检索的相似度分数不准用专门的reranker模型重新打分Prompt把检索到的内容塞进Prompt同时告诉模型“如果找不到答案就说不知道”面试官追问“如果检索到的内容里没有正确答案怎么办”——Prompt里明确写了“根据以下内容回答如果内容里没有相关信息请回复‘根据现有知识无法回答这个问题’”这个指令能大幅减少幻觉。知道关键字召回的方式吗我说BM25然后简单解释了一下BM25不是简单的关键词匹配它会考虑词频、文档长度、以及某个词在整个文档集合中的稀有程度。比如搜索“民法典”这个词在所有文档里都很常见BM25会给它较低的权重搜索一个冷门法律术语出现一次就比出现十次“民法典”有价值。面试官说“可以”然后问“你们项目里BM25和向量检索怎么融合”——我们用的是加权求和最终得分 0.6 × 向量相似度 0.4 × BM25分数权重是通过测试集调出来的。对于RAG知识库一般情况下你是怎么往里面导入数据呢是在另外一个入口嘛是的数据导入和用户查询是两个独立的入口。导入流程文档PDF/Word/Excel上传到OSS触发一个异步任务解析文档、清洗文本按语义切分不是固定长度调用Embedding模型生成向量写入向量库我们用的是Milvus同时写入BM25用的倒排索引面试官追问“文档更新了怎么办”——增量导入对比文档的MD5值只处理变化的部分。全量重建太贵了百万级文档一次全量要跑几个小时。智能体多轮对话的循环框架用的是哪个我们没用现成的框架自己写了一个状态机。核心是三个循环多轮对话的关键是状态管理。每一轮结束后把当前状态“我在等用户提供合同编号”存在Redis里下一轮请求来了先读这个状态才知道现在进行到哪一步了。面试官问“为什么不直接用LangChain”——生态太封闭出了问题不好调试。自己写的虽然糙但每一行代码都在掌控中。你觉得用Java做的话它怎么让CPU的利用率提高呢这个问题问的是Java的性能优化。我提到了几个点用虚拟线程Java 21而不是传统的操作系统线程切换成本低避免锁竞争用ConcurrentHashMap、AtomicXXX这些无锁或轻量级锁的类减少对象创建避免频繁GC导致的Stop-The-World批量处理把多次IO合并成一次面试官追问“你们的RAG系统用了几台机器”——4台8核16G的服务器CPU利用率大概在40-60%瓶颈在LLM调用的网络IO不在CPU。如果用本地小模型CPU就是瓶颈了。Spring AI这个选型你觉得它的优势在哪我说Spring AI的优势在于它把LLM调用、Prompt模板、Function Calling这些能力整合进了Spring生态。举个例子用Spring AI你可以在Controller里直接注入一个ChatClient就像注入普通的Service一样。配置管理、日志、监控都能复用Spring Boot那一套不用重新造轮子。但缺点也很明显生态不成熟很多高级功能比如复杂Agent编排还是不如LangChain。面试官说“选成熟度还是先进性这是每个架构师都要做的决定”。你这个项目里调用的模型是什么我们用的是通义千问Qwen-72B和智谱的GLM-4。选国内模型的原因是数据合规——有些法律文档不能出境。如果用OpenAI数据会经过国外的API公司在合规上过不去。面试官追问“效果和GPT-4比怎么样”——说实话有差距尤其在复杂推理任务上。但在中文法律文本理解上Qwen和GPT-4的差距没有想象中大大概差5-8个百分点。对于大部分业务场景这个差距是可以接受的。国内的大模型厂商和大模型都有哪些我说了几个阿里通义千问Qwen系列百度文心一言腾讯混元智谱GLM系列月之暗面Kimi深度求索DeepSeekMiniMaxABAB系列面试官说“你漏了字节的豆包”——我确实忘了赶紧记下来。然后他问“你觉得哪个最强”——我说没有绝对的最强看场景。Qwen的中文能力强GLM-4的推理能力好Kimi的长上下文是特色。做RAG的话长上下文模型有优势可以直接把更多检索结果塞进Prompt。最后反问在我反问的阶段还问到我SDD的哪些步骤需要人工参与。这个是在我反问他问题的时候他反过来问我。我说SDDSystem Design Document系统设计文档里下面这些步骤必须有人工参与需求分析AI理解不了业务背后的潜规则技术选型AI不知道公司的技术栈限制和团队能力数据模型设计AI不懂业务实体之间的关系安全合规评估AI不知道公司要过哪些合规评审可以用AI辅助写文档模板、生成架构图草稿、检查有没有遗漏的点但最终决策必须是人。面试官说“很好很多人觉得AI能替代架构师了但真正做过项目的都知道不可能”。最后如果说程序员已经是高薪职业那么干AI的程序员就是高薪中的高薪。现在的市场已经用数据给程序员指明了方向学AI大模型就是冲刺高薪的最优解看着身边越来越多的同行转型大模型、拿到高薪offer很多人心里都动了心但真正的难题来了零基础小白不知道从哪入门有基础的程序员找不到系统学习路径实战项目练手无门面试不知道考什么别慌今天就给大家整理了一份【2026年最新版】AI大模型免费学习资源包覆盖从入门到实战、从理论到面试、从基础到进阶的全流程所有资料均已整理归档无冗余、无套路免费分享给每一位想抓住AI风口的程序员和小白扫码免费领取全部内容1、大模型系统化学习路线2、大模型学习书籍文档3、AI大模型最新行业报告4、大模型项目实战配套源码5、大模型大厂面试真题四阶段精细化学习规划附时间节点可直接照做结合上述资源给大家整理了一份可直接落地的四阶段学习规划总时长约2个月小白可循序渐进程序员可根据自身基础调整节奏高效掌握大模型核心能力快速实现从“入门”到“能落地、能面试”的跨越。第一阶段10天初阶应用该阶段让大家对大模型 AI有一个最前沿的认识对大模型 AI 的理解超过 95% 的人可以在相关讨论时发表高级、不跟风、又接地气的见解别人只会和 AI 聊天而你能调教 AI并能用代码将大模型和业务衔接。大模型 AI 能干什么大模型是怎样获得「智能」的用好 AI 的核心心法大模型应用业务架构大模型应用技术架构代码示例向 GPT-3.5 灌入新知识提示工程的意义和核心思想Prompt 典型构成指令调优方法论思维链和思维树Prompt 攻击和防范…第二阶段30天高阶应用该阶段我们正式进入大模型 AI 进阶实战学习学会构造私有知识库扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架抓住最新的技术进展适合 Python 和 JavaScript 程序员。为什么要做 RAG搭建一个简单的 ChatPDF检索的基础概念什么是向量表示Embeddings向量数据库与向量检索基于向量检索的 RAG搭建 RAG 系统的扩展知识混合检索与 RAG-Fusion 简介向量模型本地部署…第三阶段30天模型训练恭喜你如果学到这里你基本可以找到一份大模型 AI相关的工作自己也能训练 GPT 了通过微调训练自己的垂直大模型能独立训练开源多模态大模型掌握更多技术方案。到此为止大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗为什么要做 RAG什么是模型什么是模型训练求解器 损失函数简介小实验2手写一个简单的神经网络并训练它什么是训练/预训练/微调/轻量化微调Transformer结构简介轻量化微调实验数据集的构建…第四阶段20天商业闭环对全球大模型从性能、吞吐量、成本等方面有一定的认知可以在云端和本地等多种环境下部署大模型找到适合自己的项目/创业方向做一名被 AI 武装的产品经理。硬件选型带你了解全球大模型使用国产大模型服务搭建 OpenAI 代理热身基于阿里云 PAI 部署 Stable Diffusion在本地计算机运行大模型大模型的私有化部署基于 vLLM 部署大模型案例如何优雅地在阿里云私有部署开源大模型部署一套开源 LLM 项目内容安全互联网信息服务算法备案…扫码免费领取全部内容6、这些资料真的有用吗这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理现任上海殷泊信息科技CEO其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证服务航天科工、国家电网等1000企业以第一作者在IEEE Transactions发表论文50篇获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的技术人员这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】