Java面试题讲解总结——第四回(据说是华为大佬讲的)

本文详细介绍了Java中的IOC容器实现步骤,包括配置扫描、反射和依赖注入等。同时,阐述了字节码的概念及其带来的执行效率和移植性的优势。还探讨了Java类加载器的类型,如根类加载器、扩展类加载器和应用程序类加载器,并解释了双亲委托模型的工作原理。最后,提供了相关资源链接以深入理解这些概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

十三、如何实现一个IOC容器

1. 配置文件配置包扫描路径;

2. 递归包扫描获取.class文件;

3. 反射、确定要交给IOC管理的类;

4. 对需要注入的类进行依赖注入。

十四、 什么是字节码?采用字节码的好处是什么?

字节码:

Java源代码经过虚拟机编译器编译后产生的文件(即扩展为.class的文件),它不面向任何特定的处理器,只面向虚拟机。

采用字节码的好处:

Java语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以Java程序运行时比较高效,而且,由于字节码并不专对一种特定的机器,因此,Java程序无须重新编译便可在多种不同的计算机上运行。

先看下java中的编译器和解释器:

Java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟机器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。在Java中,这种供虚拟机理解的代码叫做字节码(即扩展为.class的文件),它不面向任何特定的处理器,只面向虚拟机。每一种平台的解释器是不同的,但是实现的虚拟机是相同的。Java源程序经过编译器编译后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后在特定的机器上运行,这就是上面提到的Java的特点的编译与解释并存的解释。

Java源代码-->编译器-->JVM可执行的字节码-->JVM-->JVM中解释器-->机器可执行的二进制编码-->程序运行。

十五、Java类加载器有哪些?

1、java类加载器的概述

类加载器(ClassLoader)是负责加载类的对象的,也就是将.class字节码文件加载到JVM内存中的。那它什么时候才会去加载.class字节码文件呢? 答案是: 当Java程序第一次使用某个类中的内容,而该类的字节码文件在内存中不存在时,类加载器就会去加载该类的字节码文件。

2、java类加载器的分类

Java中的类加载器主要分为以下四类:

(1)根类加载器(BootStrapClassLoader), 主要负责加载jre/lib/rt.jar相关的字节码文件的。

(2)扩展类加载器(ExtensionClassLoader), 主要负载加载 jre/lib/ext/*.jar 这些jar包。该类加载器在JDK1.9的时候更名为: Platform Class Loader, 其父类加载器为: null。

(3)应用程序类加载器(ApplicationClassLoader), 主要负责加载用户自定义的类以及classpath环境变量所配置的jar包的。 该类加载器在JDK1.9的时候更名为: System ClassLoader, 其父类加载器为: ExtensionClassLoader。

(4)自定义类加载器(UserClassLoader), 负责加载程序员指定的特殊目录下的字节码文件的。大多数情况下,自定义类加载器只需要继承ClassLoader这个抽象类,重写findClass()和loadClass()两个方法即可。

十六、双亲委托模型

这个大佬讲的明明白白还有demo,指个路:

https://blog.youkuaiyun.com/VIP099/article/details/108525117     

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值