八股训练营第 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 的话,我们只需要配置好,然后在需要的地方引用就可以了。

相关推荐
huangdong_20 小时前
电商平台图片URL原图转换技术深度解析:从缩略图到高清原图的完整方案
java·后端·spring
記億揺晃着的那天20 小时前
Java 调用外部 Go 程序的实践:ProcessBuilder 在生产环境中的应用
java·golang·processbuilder
JAVA面经实录91720 小时前
Java 数据结构与算法 (终极完整学习文档)
java·数据结构·算法
JAVA面经实录91721 小时前
操作系统面试题
java·服务器·数据库·计算机网络·面试
一杯奶茶¥1 天前
基于springboot的失物招领管理系统带万字文档 校园失物招领管理系统 失物认领管理系统java springboot vue
java·vue.js·spring boot·java项目
不能只会打代码1 天前
边缘视频分析平台的架构设计与性能优化——从750ms到190ms的调优之路
java·spring boot·redis·性能优化·边缘计算·物联网竞赛
小刘|1 天前
Spring AI Alibaba 集成和风天气 API 实战
java·服务器·前端
KANGBboy1 天前
java知识五(继承)
java·开发语言
AI人工智能+电脑小能手1 天前
【大白话说Java面试题 第117题】【并发篇】第17题:线程有几种状态,之间如何转换?
java·开发语言·面试
DIY源码阁1 天前
JavaSwing饮品管理系统 - MySQL版
java·数据库·mysql·eclipse