【黑马程序员】Java试题、50道Java面试题集(2019最新版)21-30.docxVIP

  • 12
  • 0
  • 约1.04万字
  • 约 31页
  • 2021-07-05 发布于天津
  • 举报

【黑马程序员】Java试题、50道Java面试题集(2019最新版)21-30.docx

视频库网址: 视频库网址: 资料领取: 3285264708 视频库网址: 视频库网址: 资料领取: 3285264708 视频库网址: 视频库网址: 资料领取: 3285264708 【黑马程序员】 Java 试题、 50 道 Java 面试题集 ( 2019 最新版) 21-30 以下的内容是对原有的和最近 Java 面试题集及答案进行了全面修订之后给出的 负责任的题目和答案,相对来说比较经典,相信对准备入职的 Java 程序员一定 有所裨益。 21 、描述一下 JVM 加载 class 文件的原理机制 ? 答: JVM 中类的装载是由类加载器 ( ClassLoader ) 和它的子类来实现的, Java 中的类加载器是一个重要的 Java 运行时系统组件, 它负责在运行时查找和装入 类文件中的类。 补充: .由于 Java 的跨平台性, 经过编译的 Java 源程序并不是一个可执行程序, 而是 一个或多个类文件。当 Java 程序需要使用某个类时, JVM 会确保这个类已经被 加载、连接 (验证、准备和解析 )和初始化。类的加载是指把类的 .class 文件中的 数据读入到内存中,通常是创建一个字节数组读入 .class 文件,然后产生与所加 载类对应的 Class 对象。加载完成后, Class 对象还不完整,所以此时的类还不 可用。当类被加载后就进入连接阶段,这一阶段包括验证、准备 (为静态变量分 配内存并设置默认的初始值 )和解析 (将符号引用替换为直接引用 )三个步骤。 最后 JVM 对类进行初始化,包括: 1 如果类存在直接的父类并且这个类还没有被初 始化,那么就先初始化父类; 2 如果类中存在初始化语句,就依次执行这些初始 化语句。 2.类的加载是由类加载器完成的,类加载器包括:根加载器( BootStrap )、扩 展加载器( Extension )、系统加载器( System )和用户自定义类加载器 ( java.lang.ClassLoader 的子类)。从 JDK 1.2 开始,类加载过程采取了父亲 委托机制 (PDM) 。 PDM 更好的保证了 Java 平台的安全性,在该机制中, JVM 自带的 Bootstrap 是根加载器,其他的加载器都有且仅有一个父类加载器。类 的加载首先请求父类加载器加载, 父类加载器无能为力时才由其子类加载器自行 加载。 JVM 不会向 Java 程序提供对 Bootstrap 的引用。 下面是关于几个类加载 器的说明: a)Bootstrap :一般用本地代码实现,负责加载 JVM 基础核心类库( rt.jar ); b)Extension :从 java.ext.dirs 系统属性所指定的目录中加载类库,它的父加载 器是 Bootstrap ; c)System :又叫应用类加载器,其父类是 Extension 。它是应用最广泛的类加 载器。它从环境变量 classpath 或者系统属性 java.class.path 所指定的目录中 记载类,是用户自定义加载器的默认父加载器。 黑马程序员视频库网址: (海量热门编程视频、资料免费学习) 学习路线图、学习大纲、各阶段知识点、资料网盘免费领取 +QQ 3285264708 / 3549664195 22 、 char 型变量中能不能存贮一个中文汉字 ?为什么 ? 答: char 类型可以存储一个中文汉字, 因为 Java 中使用的编码是 Unicode (不 选择任何特定的编码, 直接使用字符在字符集中的编号, 这是统一的唯一方法) , 一个 char 类型占 2 个字节( 16bit ),所以放一个中文是没问题的。 补充: 使用 Unicode 意味着字符在 JVM 内部和外部有不同的表现形式, 在 JVM 内部都是 Unicode ,当这个字符被从 JVM 内部转移到外部时(例如存入文件系 统中),需要进行编码转换。所以 Java 中有字节流和字符流,以及在字符流和 字节流之间进行转换的转换流,如 InputStreamReader 和 OutputStreamReader ,这两个类是字节流和字符流之间的适配器类,承担了 编码转换的任务;对于 C 程序员来说,要完成这样的编码转换恐怕要依赖于 union (联合体 /共用体)共享内存的特征来实现了。 23 、抽象类( abstract class )和接口( interface )有什么异同 ? 答: 抽象类和接口都不能够实例化, 但可以定义抽象类和接口类型的引用。 一个 类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进 行实现, 否则该类仍然需要被声明为抽象类。 接口比抽象类更加抽象, 因为抽象 类中

文档评论(0)

1亿VIP精品文档

相关文档