Java常见面试题技术总结:类的加载过程

深圳新闻 浏览(1764)

前锋广州我想昨天分享

面对程序员看似光鲜亮丽的就业前景,这是一个采访层。想要进入边境的大公司没有五七七六个面孔。放下是不可能的!找工作的第一个层次是书面测试。要获得高薪工作,首先要刷一下面试问题!

今天,钱倩广州Java培训老师分享了关于课程加载过程的面试问题。

类加载过程主要包括加载,验证,准备,解析,初始化,使用和卸载的七个方面,下面将对其进行说明。

首先,加载

在加载阶段,虚拟机主要完成三件事:

1.获取通过类的完全限定名称定义此类的二进制字节流。

2.将此字节流表示的静态存储结构转换为方法区域的运行时数据结构。

3.在Java堆中生成表示此类的java.lang.Class对象,作为对方法区域数据的访问

第二,验证

验证阶段是确保Class文件的字节流中包含的信息符合JVM规范,并且不会对JVM造成损害。如果验证失败,则抛出java.lang.VerifyError异常或其子类异常。验证过程分为四个阶段

1.文件格式验证:验证字节流文件是否符合Class文件格式的规范,并且可以由当前虚拟机正确处理。

2.元数据验证:字节码描述的信息的语义分析,以确保其描述的信息符合Java语言的规范。

3.字节码验证:主要是分析数据流和控制流,以确保验证类的方法在运行期间不会损害虚拟机。

4.符号引用验证:当虚拟机将符号引用转换为直接引用(在解析阶段发生)时,会发生符号引用验证。

三,准备

准备阶段为变量分配内存并设置类变量的初始化。在此阶段仅分配类的变量(静态修改的变量),并且不包括该类的实例变量。对于非final的变量,JVM将其设置为“零值”而不是其赋值语句的值:

Pirvate static int size=12;

然后在此阶段,size的值为0而不是12.最终修改的类变量将分配给实际值。

四,分析

解析过程使用直接引用替换常量池中的符号引用。它主要包括解析四种类型的引用。类或接口解析,字段解析,方法解析和接口方法解析。

V.初始化

在准备阶段,类变量已初始化一次。在此阶段,根据程序员通过程序制定的计划初始化类的变量和其他资源。这些资源具有static {}块,构造函数,父类的初始化等。

至于使用和卸载阶段,这里没有更多解释。根据程序定义的行为执行使用过程,并且GC完成卸载。

如果您对Java开发感兴趣,可以来广州前锋申请免费试用,开始您的编程之旅。

收集报告投诉

面对程序员看似光鲜亮丽的就业前景,这是一个采访层。想要进入边境的大公司没有五七七六个面孔。放下是不可能的!找工作的第一个层次是书面测试。要获得高薪工作,首先要刷一下面试问题!

今天,钱倩广州Java培训老师分享了关于课程加载过程的面试问题。

类加载过程主要包括加载,验证,准备,解析,初始化,使用和卸载的七个方面,下面将对其进行说明。

首先,加载

在加载阶段,虚拟机主要完成三件事:

1.获取通过类的完全限定名称定义此类的二进制字节流。

2.将此字节流表示的静态存储结构转换为方法区域的运行时数据结构。

3.在Java堆中生成表示此类的java.lang.Class对象,作为对方法区域数据的访问

第二,验证

验证阶段是确保Class文件的字节流中包含的信息符合JVM规范,并且不会对JVM造成损害。如果验证失败,则抛出java.lang.VerifyError异常或其子类异常。验证过程分为四个阶段

1.文件格式验证:验证字节流文件是否符合Class文件格式的规范,并且可以由当前虚拟机正确处理。

2.元数据验证:字节码描述的信息的语义分析,以确保其描述的信息符合Java语言的规范。

3.字节码验证:主要是分析数据流和控制流,以确保验证类的方法在运行期间不会损害虚拟机。

4。符号引用验证:当虚拟机将符号引用转换为直接引用(在解析阶段发生)时,将进行符号引用验证。

三、准备工作

准备阶段为变量分配内存,并设置类变量的初始化。这个阶段只分配类的变量(静态修改的变量),不包括类的实例变量。对于非最终变量,JVM会将其设置为“零值”,而不是其赋值语句的值:

pirvate static int大小=12;

在这个阶段,大小的值是0而不是12。最后修改的类变量将分配给实际值。

第四,分析

解析过程用直接引用替换常量池中的符号引用。主要包括四种引用类型的解析。类或接口分析、字段分析、方法分析和接口方法分析。

五、初始化

在准备阶段,类变量已初始化一次。在这个阶段,类的变量和其他资源根据程序员通过程序制定的计划进行初始化。这些资源具有静态块、构造函数、父类初始化等。

至于使用和卸载阶段,这里没有更多的解释。使用过程根据程序定义的行为执行,卸载由GC完成。

如果您对Java开发感兴趣,您可以到广州千丰申请免费试用,并开始您的编程旅程。

——