本轮 AI+Java中级开发面试题库(带答案)
生成时间:2026-05-24 21:22
【面试题】1. 大模型中的"幻觉"问题是什么?在AI应用落地中如何有效缓解?
【标准答案】幻觉问题指大模型生成看似合理但实际错误或虚构的内容。缓解方法主要有四种:一是RAG检索增强,让模型基于真实文档回答;二是提示词约束,明确要求"不知道就说不知道";三是输出引用溯源,标注答案来源便于验证;四是后处理校验,用规则或小模型做事实核查。实际项目中,RAG+提示词约束组合使用效果最好,能将幻觉率降到15%以下。
【面试题】2. Java中ConcurrentHashMap是如何保证线程安全的?JDK1.7和1.8有什么区别?
【标准答案】ConcurrentHashMap通过分段锁机制保证线程安全。JDK1.7采用Segment分段锁,默认16个Segment,每个Segment继承ReentrantLock,锁粒度较粗。JDK1.8优化为CAS+synchronized,锁粒度细化到每个桶节点,并发度更高。具体来说:put时先CAS尝试插入,失败则用synchronized锁住当前桶的头节点;扩容时多线程协同,每个线程负责部分桶的迁移。性能上,1.8在高并发场景吞吐量提升约30%。
【面试题】3. 什么是RAG检索增强生成?相比直接调用大模型有哪些优势?
【标准答案】RAG是检索增强生成的缩写,核心流程是:用户提问→从向量数据库检索相关文档→将文档作为上下文喂给大模型→生成答案。优势有四点:一是知识时效性强,无需重新训练就能更新知识;二是答案可溯源,每个回答都能标注来源文档;三是成本可控,避免了昂贵的模型微调;四是减少幻觉,模型基于真实文档回答更准确。实际落地中,RAG是企业知识库问答的首选方案。
【面试题】4. Spring Boot的自动装配原理是什么?@EnableAutoConfiguration是如何工作的?
【标准答案】自动装配核心是约定优于配置。@EnableAutoConfiguration通过@Import导入AutoConfigurationImportSelector,它会扫描所有META-INF/spring.factories文件,加载EnableAutoConfiguration配置类。每个配置类配合@Configuration和@ConditionalOnXxx注解(如@ConditionalOnClass、@ConditionalOnMissingBean),根据类路径和已有Bean决定是否装配。比如DataSourceAutoConfiguration只在有数据源依赖且未自定义DataSource时才生效。理解这个原理,排查"为什么这个Bean没注入"就很快。
【面试题】5. 向量数据库的索引原理是什么?为什么用向量检索比关键词检索更适合语义搜索?
【标准答案】向量数据库核心是将文本转为向量,通过计算向量相似度找最相近的内容。主流索引算法有三类:一是暴力搜索(FLAT),精度高但慢;二是IVF倒排索引,先聚类再在类内搜索,平衡精度和速度;三是HNSW图索引,基于可导航小世界图,搜索性能最优。语义搜索胜在能理解同义表达,比如"汽车"和"轿车"关键词检索无交集,但向量检索因为语义相近能匹配。实际项目中,我们用HNSW索引,召回率能达到92%以上。
【面试题】6. JVM的垃圾收集器有哪些?CMS和G1有什么核心区别?
【标准答案】主流GC有Serial、Parallel、CMS、G1、ZGC。CMS和G1的区别:一是设计目标不同,CMS追求最短停顿时间,G1兼顾吞吐量和停顿时间;二是内存布局不同,CMS基于传统分代,G1将堆划分为多个大小相等的Region,不再物理隔离年轻代老年代;三是回收策略不同,CMS只能回收老年代,G1可以指定停顿时间目标,优先回收垃圾多的Region(Garbage First)。JDK9之后G1成为默认GC,停顿时间可控是其最大优势。
【面试题】7. 如何设计一个AI Agent?Agent的决策循环包含哪些步骤?
【标准答案】AI Agent的核心是感知-思考-行动循环。具体步骤:一是感知,接收用户输入或环境状态;二是推理,大模型分析当前任务,决定下一步行动;三是工具调用,根据推理结果选择工具执行(如搜索、查数据库、调用API);四是观察,获取工具执行结果;五是循环,将观察结果反馈给模型继续推理,直到任务完成。技术栈上,用LangChain或Spring AI框架实现Agent最方便,框架封装了工具注册、提示词模板、记忆管理等能力。
【面试题】8. MySQL索引失效的常见场景有哪些?如何避免?
【标准答案】索引失效常见场景:一是查询条件对索引列做函数操作,如WHERE YEAR(create_time)=2024;二是隐式类型转换,字符串索引用数字查询;三是LIKE以%开头,如LIKE '%abc';四是OR条件中非索引列存在;五是联合索引不满足最左前缀;六是SELECT *导致回表成本高,优化器可能选择全表扫描。避免方法:查询条件尽量使用索引列原值;联合索引按最左前缀使用;用覆盖索引减少回表;定期分析执行计划,用EXPLAIN检查type和key字段。
【面试题】9. 提示词工程中,什么是思维链(Chain of Thought)?在什么场景下使用效果最好?
【标准答案】思维链是让大模型一步步推理的提示词技术。核心是在提示词中加一句"请一步步思考"或给出推理范例,引导模型展示推理过程而非直接给答案。效果最好的场景:一是数学推理题,分步计算减少错误;二是复杂逻辑判断,拆解问题避免遗漏;三是多条件决策,逐条分析更全面。实测在GSM8K数学数据集上,使用思维链能将准确率从17%提升到58%。关键是提示词要给出推理范例,让模型理解你想看到思考过程。
【面试题】10. Redis实现分布式锁的方案有哪些?Redisson的看门狗机制解决什么问题?
【标准答案】分布式锁方案有三种:一是SETNX+EXPIRE,简单但加锁和设置过期时间非原子,可能死锁;二是SET NX EX原子命令,解决了原子性问题;三是Redisson框架,最完善。Redisson的看门狗机制解决锁过期释放问题:业务执行时间超过锁过期时间,传统方案锁会被其他线程抢占。看门狗机制会在锁快过期时自动续期(默认30秒续期一次),业务执行完才释放。使用时直接lock()即可,不需要手动设置过期时间,Redisson自动管理锁生命周期。