当前位置: 首页 > article >正文

每日速记10道java面试题03

其他资料

每日速记10道java面试题01-CSDN博客

每日速记10道java面试题02-CSDN博客

目录

一、你使用过java的反射机制吗?如何应用反射?

二、什么是泛型?泛型的作用是什么?

三、java的泛型擦除是什么?

四、Java 中的深拷贝和浅拷贝有什么区别?

五、什么是 Java 的 Integer 缓存池?

六、java的类加载过程是怎样的?

 七、String s = new String("abc")会创建几个对象?

八、如果一个线程在 Java 中被两次调用 start0) 方法,会发生什么?

九、java的IO流是什么?

十、java的基本数据类型有哪些?


‘‘’

一、你使用过java的反射机制吗?如何应用反射?

Java 的反射机制是指在运行时获取类的结构信息(如方法、字段、构造函数)并操作对象的一种机制。

对于任意一个类,都能够知道这个类的所有属性和方法;

对于任意一个对象,都能够调用它的任意方法和属性,并且能改变它的属性。

Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法。其本质是JVM得到Class对象之后,再通过Class对象进行反编译,从而获取对象的各种信息。

java反射的优点:

可以动态地获取类的信息,不需要在编译时就知道类的信息。
可以动态地创建对象,不需要在编译时就知道对象的类型。
可以动态地调用对象的属性和方法,在运行时动态地改变对象的行为。

应用场景有:

spring就是使用反射机制来读取配置文件,实现依赖注入和aop。

二、什么是泛型?泛型的作用是什么?

泛型允许类、接口和方法在定义时使用一个或多个类型参数,这些类型参数在使用时可以被指定为具体的类型。

类型安全:运行时异常转为编译时异常,提早发现异常,确保类型安全
代码重用:方法或者类,可以使用泛型,使方法和类能够处理多种不同的数据类型。而不用每个数据类型都写一个方法或者类。

三、java的泛型擦除是什么?

java的泛型擦除是指java编译器在编译过程中将所有的泛型信息删除的过程,这样做的目的是为了保证java版本的兼容性,因为在java5之前一些集合比如ArrayList和LinkedList都是非泛型化的,java5之后这两个集合都是泛型化的,为了保证这两个java版本的兼容性,就有这个泛型擦除。

会在编译的时候将<E>替换成Object,并通过插入类型转换指令保持类型安全和多态性。

四、Java 中的深拷贝和浅拷贝有什么区别?

深拷贝:不仅拷贝对象本身和基本类型成员变量,堆内的引用对象也会复制一份(相互独立不干扰)
浅拷贝:仅拷贝对象本身和基本类型成员变量,共享堆内的引用对象(仅复制引用地址)

五、什么是 Java 的 Integer 缓存池?

java的Interger缓存池为了提高性能和减少内存,在-128到127以内的对象会被缓存并复用,例如:interger a =127,这时候就会将a放进interger缓存池,在interger b =127的时候,并不是重新创建创建一个对象,而是去interger缓存池查找有没有这个值的缓存对象,有的话直接拿过来用,没有才去重新创建并存入缓存池。

六、java的类加载过程是怎样的?

Java的类加载过程包括加载链接初始化三个主要步骤。
1.在加载阶段,通过类加载器将类文件加载到内存中,生成一个Class对象。
2.在链接阶段,包括 验证 、 推备 和 解析 三个子阶段,确保类的字节码安全并为静态变量分配内存和进行符号引用解析。
3.最后在初始化阶段,执行类的初始化逻辑,将静态变量和静态代码块的初始化操作整合并执行。

 七、String s = new String("abc")会创建几个对象?

1.首先,new会先在堆内存中创建一个String对象(第一个对象,称它为new String对象吧),并让s引|用指向该对象。

2.JVM用字面量”abc“去字符串常量池中尝试获取“abc”对应的String对象的引用。
2.1 如果获取成功,则让new String对象引用常量池中的"abc”
2.2 如果获取失败,则在堆内存中创建一个"abc"的String对象(第二个对象),并把它的引用保存在字符串常量池。然后让newString对象引用常量池中的"abc"。


所以,使用new String方法时,会创建1个或者2个对象。

八、如果一个线程在 Java 中被两次调用 start0) 方法,会发生什么?

会报错!因为在 Java 中,一个线程只能被启动一次!所以尝试第二次调用 start0) 方法时,会抛出 legalThreadStateException 异常。这是因为一旦线程已经开始执行,它的状态不能再回到初始状态。线程的生命周期不允许它从终止状态回到可运行状态。

九、java的IO流是什么?

Java的I/O流是用于处理数据输入输出的类库,可以从各种位置读取数据,也可以将数据写入特定位置I/O流分为两大类:
字节流:处理8字节数据,适合处理二进制文件,比如图片、视频。承担任务的类有Inputstream和Outputstream类及其子类。
字符流:处理16字节数据,适合处理文本文件。承担任务的类有Reader和Writer及其子类。

十、java的基本数据类型有哪些?

四种八类
1.整型
o byte 1字节
oshort 2字节
o int 4字节
o long 8字节
2.浮点型
o float 4字节
odoble 8字节
3. 字符型
ochar 2字节
4.布尔型
oboolean 不定


http://www.kler.cn/a/419401.html

相关文章:

  • 基于STM32的传感器数据采集系统设计:Qt、RS485、Modbus Rtu协议(代码示例)
  • 【论文笔记】A Token-level Contrastive Framework for Sign Language Translation
  • 大模型时代的人工智能基础与实践——基于OmniForce的应用开发教程
  • 第144场双周赛:移除石头游戏、两个字符串得切换距离、零数组变换 Ⅲ、最多可收集的水果数目
  • Android 系统之Init进程分析
  • atoi函数的模拟实现
  • 写一份客服网络安全意识培训PPT
  • 如何分段存储Redis键值对
  • 智慧银行反欺诈大数据管控平台方案(二)
  • windows C#-为类或结构定义值相等性(上)
  • 网络原理-初识
  • 解密开源大模型如何实现本地化部署并基于本地的知识库进行应用
  • Java基础面试题11:简述System.gc()和Runtime.gc()的作用?
  • 一些面试问题的深入与思考
  • 国际网络安全趋势
  • git push使用
  • 探索Linux的目录结构:深入理解文件系统的组织
  • mongodb配置ssl连接
  • 详解Qt PDF 之 QPdfDocument与 QPdfView 打开与显示pdf
  • 如何在 Debian 7 上设置 Apache 虚拟主机
  • 时频转换 | Matlab基于S变换S-transform一维数据转二维图像方法
  • node == RabbitMQ入门教程
  • 手机控制载货汽车一键启动无钥匙进入广泛应用
  • 综合实验——用户远程登陆并更改文件
  • 网络七层杀伤链
  • 网络安全-夜神模拟器如何通过虚拟机的Burp Suite代理应用程序接口