Java面试那点事——基础 200107

1. 说一下类加载的执行过程?

(1).加载:把class文件加载到内存中

(2).链接(又分为:验证、准备、解析)

  • 验证:验证加载到内存的文件是否符合格式要求
  • 准备:给类变量(static修饰的变量)赋初值(系统默认值)。
  • 解析:把符合引用转变成直接引用

(3).初始化:按照继承关系的顺序给 类变量、构造器 赋初值(代码中设定的值)


2. Java中都有哪些类加载器?

  • 启动类加载器、扩展类加载器、系统类加载器、用户自定义类加载器

  • 启动类加载器将<JAVA_HOME>/lib下的核心类库加载到内存中,扩展类加载器将<JAVA_HOME>/lib/ext下的类库加载到内存中,系统类加载器将当前类和第三方类库加载到内存中

  • 扩展类加载器和系统类加载器都是继承自Java的ClassLoader抽象类,用户可以直接使用的类加载器。

  • 启动类加载器,Java程序不可用直接使用,虚拟机默认使用null代表启动类加载器

  • 三者存在继承关系,系统类加载器调用classloader的构造器把父类设置为扩展类加载器,扩展类加载器调用classloader把父类设置为null(启类动加载器)


3. 什么是双亲委派模型?

扫描二维码关注公众号,回复: 8615072 查看本文章
  • 简单概括:自底向上检查类是否被加载,自顶向下尝试加载类
  • 好处:保证类加载的全局唯一性,加载的类随着加载器一起具备了优先级关系
  • 实现:先判断该类是否被加载过,如果未被加载就调用父类的loadClass()方法,如果父类为null,则使用启动类加载器作为加载器。如果父类加载失败,抛出notfound异常,则调用自己的findClass进行加载。

【Java 面试那点事】

这里致力于分享 Java 面试路上的各种知识,无论是技术还是经验,你需要的这里都有!

这里可以让你【快速了解 Java 相关知识】,并且【短时间在面试方面有跨越式提升】

面试路上,你不孤单!
在这里插入图片描述

发布了147 篇原创文章 · 获赞 835 · 访问量 27万+

猜你喜欢

转载自blog.csdn.net/qq_33945246/article/details/103882665