当前位置: 首页 > article >正文

《Java面试85题图解版(二)》进阶深化中篇:Spring核心 + 数据库进阶

《Java面试85题图解版二》进阶深化中篇Spring核心 数据库进阶阅读提示这是“图解比喻一句话总结”面试题库第二篇的进阶深化中篇覆盖Spring核心与Spring Boot9题和数据库进阶8题共17道高频面试题。每道题仍然是四层结构——结构图 → 场景比喻 → 关键对比表 → 一句话总结。三、Spring 核心与 Spring Boot第44-52题 第44题Spring IoC 与 DI一图看清传统方式控制正转 IoC方式控制反转 应用程序主动 new 对象 容器创建对象并注入 我去拿 我给你比喻记忆DIY组装 vs 品牌整机传统自己跑电子城买CPU、主板、内存自己组装。得知道每样配件的型号、接口。IoC直接买品牌机描述需求“我要打游戏”。工厂帮你采购所有零件组装好插上电送到桌上。DI电脑送到时显卡、内存已插好系统已装好——你关心整体功能不关心零件间怎么连线。 一句话总结IoC是把控制权交给容器DI是容器把装配好的对象推给你。 第45题Spring Bean 生命周期一图看清实例化 → 属性注入(Autowired) → 各种Aware接口回调 → BeanPostProcessor前置处理 → PostConstruct初始化方法 → InitializingBean.afterPropertiesSet() → 自定义init-method → BeanPostProcessor后置处理AOP代理在此发生 → 使用 → PreDestroy → DisposableBean.destroy() → 自定义destroy-method比喻记忆新员工入职到离职实例化签劳动合同。属性注入配发电脑、工牌依赖注入。Aware回调知道自己工号BeanNameAware、所属部门BeanFactoryAware。PostConstruct安好自己工位开始工作。AOP代理给他配个助理代理对象对外由助理处理。PreDestroy离职前交接工作。 一句话总结Spring Bean从实例化到销毁经历十几步AOP代理在后置处理器环节生成。 第46题Spring AOP 底层原理一图看清JDK动态代理基于接口Proxy.newProxyInstance生成代理类 CGLIB代理基于继承生成目标类的子类 Spring Boot 1.x有接口用JDK无接口用CGLIB Spring Boot 2.x起默认CGLIB即使有接口也用它比喻记忆两种明星经纪模式JDK代理明星只按合同走穴接口经纪人代理合同上的所有服务。CGLIB代理经纪人直接扮演明星的替身继承明星类连合同上没写的行程都接管了。 一句话总结有接口用JDK无接口用CGLIBBoot 2.x起默认CGLIBfinal类无法代理。 第47题Spring 循环依赖与三级缓存一图看清三级缓存 一级 singletonObjects完全初始化好的Bean成品 二级 earlySingletonObjects早期半成品引用 三级 singletonFactories对象工厂可生成代理 A实例化 → 三级缓存存A工厂 → 填充B属性发现需要B → B实例化 → 三级缓存存B工厂 → 填充A属性从三级获取A早期引用 → B完成 → 放入一级缓存 → A获得完整B → A完成 → 一级缓存比喻记忆情侣杯制作制作A杯捏出A杯泥胚模具放入三级。要在A上印B头像B还没做。制作B杯捏B杯印A头像时从三级取出A的模具。B烧制完成放入成品柜一级。回到A杯印上已完成B的头像A烧制完成。⚠️ 构造器注入无法解决杯胚还没捏出来就要对方头像不可能。 一句话总结三级缓存解单例Setter循环依赖构造器注入无解。 第48题Spring Boot 自动装配原理一图看清SpringBootApplication → EnableAutoConfiguration → Import(AutoConfigurationImportSelector) → 读取 META-INF/spring/...AutoConfiguration.imports → 加载所有候选配置类 → Conditional条件过滤ConditionalOnClass、ConditionalOnMissingBean等 → 条件满足则创建Bean比喻记忆商场智能供货系统AutoConfiguration.imports全球所有能供货的品牌清单。AutoConfigurationImportSelector供应链经理挨个打电话看品牌是否还活着classpath有无。ConditionalOnMissingBean你已经自己进了耐克鞋那我就不供了避免摆两家打架。最终效果空货架自动摆上默认商品开箱即用。你自己进的货自定义Bean优先。 一句话总结读全量候选配置→条件过滤→只装你缺的用户自定义覆盖默认。 第49题SpringBootApplication 三个核心注解一图看清SpringBootApplication SpringBootConfiguration本质是Configuration标记配置类 EnableAutoConfiguration自动装配 ComponentScan组件扫描默认扫描主类所在包及子包比喻记忆三合一办公套件SpringBootConfiguration挂牌“此房间是配置办公室”。EnableAutoConfiguration自动雇齐前台、保洁、网管。ComponentScan扫描全公司看谁挂着工牌Component、Service、Controller等。 一句话总结一个注解三功能配置类自动装配组件扫描。 第50题Transactional 失效场景一图看清生效前提public方法 经过Spring代理调用 异常正确抛出 常见失效 同类内部调用this.method()不走代理 方法非publicprivate/protected 异常被catch吞掉没抛出去 rollbackFor未指定只回滚RuntimeException和Error受检异常不回滚 数据库引擎不支持事务MyISAM 多线程拿不到同一个事务比喻记忆酒店无线门卡走过代理必须刷门卡过闸机AOP代理系统才记录进出。同类调用在房间里直接把东西递给朋友不经过闸机酒店系统不知道。catch吞异常前台手动掩盖了出错的记录财务部不知道自然不会退款。受检异常酒店只在“房费付不了”时自动退款RuntimeException。忘带身份证这种小问题不管除非提前说“任何问题都退款”rollbackFor Exception.class。 一句话总结事务生效三要素public方法、走过代理、异常正确抛出。 第51题Spring MVC 请求处理流程一图看清请求 → DispatcherServlet中央调度 → HandlerMapping找对应的Controller → HandlerAdapter执行Handler → Controller执行业务 → 返回ModelAndView 或 ResponseBody → ViewResolver解析视图 / HttpMessageConverter写JSON → 响应返回比喻记忆电影院放映流程DispatcherServlet售票大厅前台所有观众先到前台。HandlerMapping排片表查“《流浪地球》在几号厅”。HandlerAdapter放映员按下播放键调用Controller方法。Controller电影正片执行业务逻辑。ViewResolver画面投射到正确银幕或给手机用户直接发链接ResponseBody返回JSON。拦截器检票员入场前查票散场后检查卫生。 一句话总结请求经DispatcherServlet统一调度Mapping找HandlerAdapter执行ViewResolver渲染。 第52题Spring Boot Starter 自定义一图看清1. 创建autoconfigure模块 → 写自动配置类 Conditional条件 2. 在META-INF/spring/...AutoConfiguration.imports声明配置类全限定名 3. 创建starter模块 → pom引入autoconfigure和相关三方依赖 4. 可通过EnableConfigurationProperties绑定配置属性比喻记忆乐高套装Autoconfigure模块拼装说明书告诉你一套零件怎么拼成功能。Starter模块乐高套装盒子包含说明书全部零件。你只要引入一个Starter依赖开箱就能拼出功能模块如数据源、Redis连接。 一句话总结Starter 自动配置类 依赖打包实现即插即用。四、数据库进阶第53-60题 第53题MySQL 三日志体系一图看清redo logInnoDB引擎层物理日志记录页修改崩溃恢复循环写 undo logInnoDB引擎层逻辑日志记录修改前版本事务回滚MVCC binlogServer层逻辑日志记录SQL语句变更主从复制数据恢复 两阶段提交 1. redo log prepare → 2. 写binlog → 3. redo log commit 保证redo和binlog一致性比喻记忆财务三重备份redo log便签纸改账本前先记“将第3页第5行改成100”。停电后按便签重做。undo log改前复印旧页老板说撤销就拿复印件还原。别人读旧版也看复印件MVCC。binlog审计邮件每次改完发一封标准格式邮件给审计部从库永久存档。两阶段提交财务写完便签不擦prepare发完审计邮件写binlog才在便签打勾commit。 一句话总结redo保崩溃恢复undo保回滚binlog保复制两阶段提交保一致。 第54题PostgreSQL WAL vs MySQL 日志体系一图看清PG WAL类似 redo log binlog 综合体 崩溃恢复 ✅ 流复制 ✅ 无独立undo log旧版本留数据页 MySQLredoInnoDB binlogServer分开管理 有独立undo log在回滚段比喻记忆两种档案管理PG WAL一本总账既记录修改也用于传阅副本流复制老版本直接留在账面定期VACUUM清理。MySQL便签redo做恢复 审计邮件binlog做复制老版本留底单undopurge线程清理。 一句话总结PG用WAL一统恢复和复制MySQL用redobinlog分工协作。 第55题MySQL 索引失效八大场景一图看清失效场景 LIKE %xxx左模糊 WHERE YEAR(time)2025函数包裹列 WHERE phone1380000 但phone是varchar隐式类型转换 WHERE b2 联合索引(a,b)跳过最左列 WHERE a!1 或 NOT IN负向查询 WHERE a1 OR b2OR部分无索引 数据量小全表扫描更快 统计信息不准优化器误判比喻记忆字典查字左模糊找所有含“明”字的词拼音排序是按开头字母排的不知道开头只能一页页翻。函数包裹找“笔画数是12的字”字典按拼音排不是按笔画得先数完所有字再找。隐式类型转换你给数字10查“笔画等于10”但索引是按文字类别分的倒过来全错。违背最左前缀联合索引像“北京→海淀→中关村”地址跳过北京直接查“海淀”无法快速定位。 一句话总结索引怕左模糊、函数套列、类型转换、跳过最左列、负向和OR没索引。 第56题PostgreSQL 高级索引类型一图看清BTree通用等值/范围查询 GIN倒排索引JSONB包含、数组包含、全文检索 GiST通用可扩展空间几何、范围类型、全文 BRIN块范围索引极小体积适合数十亿行的顺序大表 SP-GiST空间分区如IP地址比喻记忆仓库四种找货方式BTree常规货架按编号找范围查询顺着走。GIN属性倒排本“红色M码A字裙”查三个清单取交集。GiST仓库平面图画圆规量距离测几何形状。BRIN集装箱范围标签每箱只写“这箱是1月1号到3号的货”。找1月5号的跳过前面20个箱。 一句话总结BTree普适GIN善包含查询GiST善空间BRIN极小体积处理超大表。 第57题MySQL 主从复制 vs PG 流复制一图看清MySQL主写binlog → 从I/O线程拉取→写入relay log → SQL线程重放 PG主WAL流持续发送 → 备库实时重放WAL物理同步 PG10逻辑复制发布/订阅模型表级复制类似MySQL binlog比喻记忆两种远程教学MySQL老师讲课录像binlog发给分校分校老师看录像回放重放。PG流复制实时直播WAL流分校同步播放。PG逻辑复制只转发指定科目的课程录像。 一句话总结MySQL基于binlog逻辑复制PG基于WAL物理流复制PG10亦支持逻辑复制。 第58题doublewrite vs full_page_writes一图看清部分写失效16KB页写到一半断电页损坏无法恢复 MySQL doublewrite脏页先顺序写共享表空间的doublewrite buffer再写数据文件 PG full_page_writescheckpoint后首次修改全页镜像写入WAL 目的相同防止页断裂比喻记忆快递防碎包装MySQL doublewrite先给完整打包好的杯子拍照存保险柜doublewrite buffer。运输碎了就拿照片恢复。PG full_page_writes不在别处存备份但在发货清单WAL上画了杯子完整包装图。碎了查清单找回。 一句话总结两者都防页断裂MySQL额外存副本PG把完整页嵌入WAL。 第59题MySQL vs PG 并发控制差异一图看清MySQL InnoDB锁索引记录Record Lock Gap Lock Next-Key Lock防幻读 PG元组标记xmin/xmax更新不阻塞读锁信息存在tuple中无专门锁内存区比喻记忆两种餐厅管理MySQL预约制订位就锁住餐桌别人不能坐主动加锁。PG自助模式坐下后在桌上放“已占”牌标记元组。别人能看到空余座位但不能占你的。你走了得清理牌子VACUUM。 一句话总结MySQL主动加锁防冲突PG被动标记靠清理。 第60题MySQL分库分表 vs PG原生分区一图看清MySQL依赖中间件ShardingSphere, MyCat应用层处理路由 PG原生声明式分区范围/列表/哈希自动路由分区裁剪比喻记忆手动分柜 vs 智能仓储MySQL中间件几个独立小仓库你拿单子自己判断去哪个仓库找。PG原生分区一个智能大仓库系统按标签自动把货分到对应区域。找货时告诉你哪些区域不用看分区裁剪。 一句话总结MySQL靠中间件手工分片PG原生分区透明路由自动裁剪。 下篇预告本篇中篇我们深入了Spring核心IoC、AOP、循环依赖、事务失效等和数据库进阶MySQL与PG日志、索引、复制、分片等共17道面试必考题。下一篇进阶深化下篇将专注于Redis缓存涵盖8道高频题为什么快、数据类型、持久化、过期淘汰、穿透击穿雪崩、分布式锁、哨兵与集群、6.0多线程模型。 点击关注我进阶深化下篇更新后第一时间推送

相关文章:

《Java面试85题图解版(二)》进阶深化中篇:Spring核心 + 数据库进阶

📘 《Java面试85题图解版(二)》进阶深化中篇:Spring核心 数据库进阶 阅读提示:这是“图解比喻一句话总结”面试题库第二篇的进阶深化中篇,覆盖Spring核心与Spring Boot(9题)和数据库…...

物联网标准演进与云平台破局:从M2M到IoT的实战路径

1. 从M2M到IoT:一场迟来的标准革命十多年前,当我第一次接触“机器对机器”这个概念时,感觉它就像个被锁在工厂车间里的幽灵——功能强大,但离普通人的生活无比遥远。那时的M2M,谈论的是专用网络、私有协议和封闭的垂直…...

EDA工程师成长与验证技术演进:从算法到芯片的实践闭环

1. 从算法到芯片:一位EDA工程师的成长路径解析在半导体这个行当里待久了,你会发现,那些真正能把工具做“透”、把流程理“顺”的人,往往自己就亲手“焊”过板子、调过RTL、追过时序违例。Prakash Narain的故事,就是一个…...

ClawMorph:为OpenClaw AI智能体实现安全可逆的“一键换装”

1. 项目概述:一个为AI智能体“一键换装”的开发者工具如果你正在使用OpenClaw这类AI智能体框架,并且厌倦了每次想让智能体扮演不同角色(比如从产品经理切换到设计师)时,都需要手动去修改一堆配置文件、提示词文件&…...

番茄小说下载器:打造个人专属离线小说图书馆的完整指南

番茄小说下载器:打造个人专属离线小说图书馆的完整指南 【免费下载链接】fanqienovel-downloader 下载番茄小说 项目地址: https://gitcode.com/gh_mirrors/fa/fanqienovel-downloader 你是否曾在通勤路上突然想读小说,却因为网络信号不佳而无法加…...

从CEO到营销技术专家:创业者退休后的身份重构与价值延续

1. 从创业者到“退休者”:身份的骤然转变卖掉自己一手创办并经营了近四十年的公司,这种感觉,远非“退休”二字可以概括。它不是一次计划已久的悠闲旅行,更像是一场毫无预兆的急刹车。前一天,你还在会议室里为下一代产品…...

DevSquad:基于Docker Compose的一站式开发环境解决方案

1. 项目概述:一个为开发者量身定制的“特种作战小队”如果你是一名开发者,无论是独立作战还是身处团队,一定都经历过这样的场景:为了搭建一个项目,你需要反复安装和配置各种开发工具、运行环境、依赖包。从代码编辑器、…...

AI心智理论评估:VLM意图理解接近人类,但视角采样能力存在瓶颈

1. 项目概述:当AI“读懂”人心时,它在想什么?在人工智能领域,有一个听起来颇具哲学意味的挑战:如何让机器理解“心智”?这不仅仅是让AI识别图像中的物体或生成流畅的文本,而是让它能够像人类一样…...

5分钟快速上手:Blender 3MF插件让你轻松实现3D打印模型转换

5分钟快速上手:Blender 3MF插件让你轻松实现3D打印模型转换 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 你是否曾经在Blender中精心设计了色彩丰富的3D模型…...

2012年Accellera标准演进:SystemC、UCIS与AMS如何重塑EDA设计流程

1. 回顾2012:Accellera在电子设计自动化标准演进中的关键一年对于从事半导体设计,特别是系统级设计、验证和IP集成的工程师来说,2012年是一个值得标记的年份。那一年,行业正从2008年金融危机后的缓慢复苏中走出,移动计…...

联发科2012年崛起:从功能机到智能机的转型与挑战

1. 从功能机到智能机的惊险一跃:联发科的2012年2012年,对于全球移动芯片行业来说,是几家欢喜几家愁的一年。诺基亚和黑莓的持续衰落,直接拖垮了像ST-Ericsson这样深度绑定的芯片供应商;即便是巨头如高通,也…...

西安石油大学仪光实践协会4月活动机械蝴蝶台灯

项目简介该项目使用stm32芯片设计了一个灯光,300减速,可灯光颜色变化,和电机转向控制。制作了一个简单有趣的动态可控台灯。使用电源控制ic芯片,可与连接电池,对电池进行充电,并且显示电池剩余电量。实现制…...

AMD Ryzen终极性能调优秘籍:5个高效调试技巧让你完全掌控处理器性能

AMD Ryzen终极性能调优秘籍:5个高效调试技巧让你完全掌控处理器性能 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址…...

从零部署私有化AI对话框架:igogpt架构解析与实战指南

1. 项目概述与核心价值最近在折腾AI应用部署的朋友,可能都听说过一个词叫“套壳ChatGPT”。这类项目通常是把OpenAI的API接口包装一下,做个Web界面,让用户能更方便地使用。但今天要聊的这个项目——igolaizola/igogpt,它给我的感觉…...

从AMD Ryzen数据误读看硬件市场分析:如何辨别数据信号与噪声

1. 从一则旧闻谈起:数据解读的陷阱与行业洞察2017年7月,一则关于AMD Ryzen处理器市场份额的新闻在科技圈引发了不小的讨论。当时,多家媒体援引第三方基准测试软件Passmark的数据,宣称AMD凭借新发布的Ryzen架构,正在从英…...

Obsidian Quiz Generator:用AI从笔记生成交互测验,打造学习闭环

1. 项目概述:用AI将笔记变成互动测验 如果你和我一样,是个重度Obsidian用户,同时又经常需要备考、复习或者制作教学材料,那你肯定体会过那种痛苦:面对几十上百页的笔记,想要生成一些高质量的练习题来检验学…...

TTS听觉校对法:技术写作质量提升的工程实践指南

1. 为什么我们需要“听”自己的文字:一个被忽视的校对革命作为一名写了十几年技术文档和博客的老兵,我敢说,最让我头疼的不是构思,也不是码字,而是最后那一步——校对。你肯定也经历过:一封精心撰写的邮件发…...

ATE PCB组装:半导体测试中的精密工艺与挑战解析

1. ATE PCB组装:半导体测试的基石与挑战 在半导体行业,一颗芯片从设计到最终封装出厂,其性能与可靠性的验证是决定产品成败的最后一环。随着芯片工艺节点不断微缩,集成度呈指数级增长,对测试环节的要求也达到了前所未有…...

无线充电技术:从手机标配到多场景应用的挑战与机遇

1. 无线充电市场现状:繁荣表象下的应用困境手机无线充电,现在几乎成了旗舰机的标配。从咖啡馆、机场到汽车中控台,充电垫的身影随处可见。作为一名在电源管理和消费电子领域摸爬滚打了十几年的工程师,我亲眼见证了Qi标准从实验室走…...

Blender 3MF插件:5分钟掌握3D打印文件格式转换的完整方案

Blender 3MF插件:5分钟掌握3D打印文件格式转换的完整方案 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 你是否曾经在Blender中精心设计了完美的3D模型&…...

从1991年Wescon展会看测试测量技术演进:DSP、GPIB与经典仪器解析

1. 从一份老杂志的周五测验说起:重温1991年Wescon展会的测试测量世界最近在整理资料时,翻到一篇2016年《EE Times》上的老文章,标题叫“周五测验:Wescon测试产品”。文章的核心是带读者回顾1991年EDN杂志为Wescon展会出版的一份厚…...

从专利数量到创新质量:解读中国专利申请背后的产业逻辑与价值评估

1. 从“专利数量”到“创新质量”:一个从业者的深度观察最近和几位在半导体和物联网领域做研发的朋友聊天,话题不约而同地转到了知识产权上。大家普遍的感觉是,现在无论是产品立项、技术合作还是出海竞争,专利已经从一个“锦上添花…...

【领域驱动设计 开篇】零 来源及学习路径

DDD是什么 2003 年,Eric Evans 写了《领域驱动设计:软件核心复杂性应对之道》一书,正式提出了这种方法。领域驱动设计的英文是 Domain-Driven Design,简称 DDD。 按照作者自己的说法,“DDD 是一种开发复杂软件的方法”…...

芯片设计中的工程迷信与理性实践:从经验法则到数据驱动

1. 项目概述:从“黑色星期五”迷信到工程设计的理性思考作为一名在电子设计自动化(EDA)和半导体行业摸爬滚打了十几年的工程师,我每天打交道的是精确到纳秒的时序分析、纳米级的物理规则和数以亿计的晶体管布局。在这个世界里&…...

虚拟原型技术:软硬件协同开发与多核处理器调试新范式

1. 虚拟原型平台:从芯片设计到软件集成的范式转变在嵌入式系统开发领域,尤其是涉及复杂多核处理器的项目里,一个长期存在的“鸡生蛋还是蛋生鸡”的困境一直困扰着工程师们:硬件原型板(EVB)尚未就绪&#xf…...

CES 2016行业转向:从酷炫到实用,安全与服务成核心

1. 从“酷炫”到“实用”:CES 2016的行业转向解析每年一月的拉斯维加斯,对于科技行业而言,都像是一场盛大的朝圣。CES(国际消费电子展)不仅是新品发布的舞台,更是行业风向的晴雨表。2016年的CES&#xff0c…...

芯粒技术:从封装协同到UCIe标准,破解芯片设计新范式

1. 芯片设计范式的演进:从单片到芯粒在半导体行业摸爬滚打了十几年,亲眼见证了芯片设计从追求单一巨无霸的“单片系统”(SoC)时代,逐渐转向一个更灵活、也更复杂的“乐高积木”时代。这个转变的核心,就是芯…...

半导体设备再流通:破解成熟制程产能瓶颈与供应链韧性难题

1. 项目概述:为什么晶圆厂需要工具再流通?在芯片行业摸爬滚打了十几年,我见过太多因为一台关键设备宕机,导致整条产线停摆,最终引发下游客户“断粮”数月的惨痛案例。大家可能觉得,疫情时期的“芯片荒”已经…...

XYBot V2:基于Python的插件化微信机器人框架开发与部署指南

1. 项目概述:一个功能丰富的微信机器人框架最近在折腾一个挺有意思的开源项目,叫XYBot V2。简单来说,它是一个基于Python的微信机器人框架,能让你在微信里实现各种自动化交互和趣味功能。项目作者HenryXiaoYang已经声明因个人原因…...

从绕接到焊接:硬件连接技术的演进与工程思维启示

1. 从“绕接”到“焊接”:一个硬件工程师的认知进化史十几年前,我刚踏入硬件设计这行,第一次在实验室的角落里看到前辈们用一把像笔一样的工具,将一根细细的导线在方形的金属柱上绕出紧密的螺旋。那是我与“绕接”技术的初次相遇。…...