八股训练营第 38 天 | 类加载机制介绍一下?介绍一下双亲委派机制?说一说你对 Spring AOP 的了解?说一说你对 Spring 中 IoC 的理解?

类加载机制介绍一下?

类加载机制是指 Java 虚拟机运行 Java 程序时,将类加载到内存中的过程,包含 3 个阶段:

  1. 加载:类加载器负责去查找\的字节码,将其加载到内存中。
  2. 连接:分为 3 个子阶段。
    • 验证:验证加载的类的格式是否正确,并且不包含不安全的构造。
    • 准备:在内存中为类的静态变量分配空间,并且初始化。数值类型初始化为 0,引用类型初始化为 null
    • 解析:将类、方法、接口、字段的符号引用解析为直接引用,即内存地址。
  3. 初始化:执行类的静态初始化代码。包括静态变量的赋值和静态代码块的执行。静态初始化在类的首次使用时进行,包括创建实例、访问静态字段或调用静态方法。

介绍一下双亲委派机制?

双亲委派机制是 Java 类加载器的一种设计模式。它保证了 Java 核心库的安全性和一致性。双亲委派机制就是当一个类加载器收到加载类的请求后,默认会委托其父级加载器去处理。只有当其父级加载器无法加载该类时,才会尝试自行加载。

双亲委派机制提高了安全性,防止 Java 核心库被篡改。因为所有的类最终都由顶层的类加载器去加载。并且由于类加载器直接从父级加载器那里加载类,也可以避免类的重复加载。

说一说你对 Spring AOP 的了解?

面向切面编程是对面向对象编程的补充和完善。OOP 通过封装、继承和多态等概念建立一种对象层次结构。但它只允许开发者定义纵向的关系,并不适合定义横向的关系。例如日志功能、事务管理、权限管理等。而 AOP 恰好相反,它通过一种"横切"的技术,剖解开封装的对象内部,将那些影响了多个类的公共行为封装到一个可重用模块,成为"切面"。所谓"切面",简单来说就是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,从而减少系统的重复代码,降低模块之间的耦合度,提高未来的可操作性和可扩展性。

说一说你对 Spring 中 IoC 的理解?

Spring IoC 即控制反转。它的核心思想是将对象的创建和依赖关系由容器来控制。而不需要我们自己去 new 出来。这有利于组件之间保持一种松散的耦合。

Spring 中的容器实际上就是一个 Map。Map 保存了各种对象。通过 DI 依赖注入,Spring 容器可以在运行时动态地将依赖注入到需要它的对象中去。而不是让对象自己去寻找或创建依赖。这可以在很大程度简化应用的开发,将应用从复杂的依赖关系中解放出来。举个例子,在实际项目中,一个 Service 类可能有成百上千个类作为它的底层。如果要实例化一个 Service,那么可能需要搞清它的所有底层类的构造函数。但是通过 IoC 的话,我们只需要配置好,然后在需要的地方引用就可以了。

相关推荐
lekami_兰17 小时前
Java 并发工具类详解:4 大核心工具 + 实战场景,告别 synchronized
java·并发工具
有位神秘人17 小时前
Android中Notification的使用详解
android·java·javascript
tb_first18 小时前
LangChain4j简单入门
java·spring boot·langchain4j
独自破碎E18 小时前
【BISHI9】田忌赛马
android·java·开发语言
范纹杉想快点毕业19 小时前
实战级ZYNQ中断状态机FIFO设计
java·开发语言·驱动开发·设计模式·架构·mfc
smileNicky19 小时前
布隆过滤器怎么提高误差率
java
それども19 小时前
分库分表的事务问题 - 怎么实现事务
java·数据库·mysql
Java面试题总结19 小时前
基于 Java 的 PDF 文本水印实现方案(iText7 示例)
java·python·pdf
马猴烧酒.19 小时前
【面试八股|Java集合】Java集合常考面试题详解
java·开发语言·python·面试·八股
测试工程师成长之路20 小时前
Serenity BDD 框架:Java + Selenium 全面指南(2026 最新)
java·开发语言·selenium