Java基础面试题(4)——每天掌握10道题

目录

1、值传递和引用传递有什么区别?

2、JDK 中常用的包有哪些?

3、import java和javax有什么区别

4、java 中 IO 流分为几种?

5、BIO,NIO,AIO 有什么区别?

6、Files的常用方法都有哪些?

7、什么是反射机制?

8、反射机制优缺点及其应用场景?

9、字符型常量和字符串常量的区别?

10、什么是字符串常量池?


1、值传递和引用传递有什么区别?

值 传 递:指的是在方法调用时,传递的参数是按值的拷贝传递,传递的是值的拷贝,也就是说传递后就互不相关了。

引用传递:指的是在方法调用时,传递的参数是按引用进行传递,其实传递的引用的地址,也就是变量所对应的内存空间的地址。传递的是值的引用,也就是说传递前和传递后都指向同一个引用(也就是同一个内存空间)。

2、JDK 中常用的包有哪些?

  • java.lang:这个是系统的基础类;

  • java.io:这里面是所有输入输出有关的类,比如文件操作等;

  • java.nio:为了完善 io 包中的功能,提高 io 包中性能而写的一个新包;

  • java.net:这里面是与网络有关的类;

  • java.util:这个是系统辅助类,特别是集合类;

  • java.sql:这个是数据库操作的类。

3、import java和javax有什么区别

刚开始的时候 JavaAPI 所必需的包是 java 开头的包,javax 当时只是扩展 API 包来说使用。然而随着时间的推移,javax 逐渐的扩展成为 Java API 的组成部分。但是,将扩展从 javax 包移动到 java 包将是太麻烦了,最终会破坏一堆现有的代码。因此,最终决定 javax 包将成为标准API的一部分。

所以,实际上java和javax没有区别。这都是一个名字。

4、java 中 IO 流分为几种?

  • 按照流的流向分,可以分为输入流和输出流;

  • 按照操作单元划分,可以划分为字节流和字符流;

  • 按照流的角色划分为节点流和处理流。

Java Io流共涉及40多个类,这些类看上去很杂乱,但实际上很有规则,而且彼此之间存在非常紧密的联系, Java I0流的40多个类都是从如下4个抽象类基类中派生出来的。

  • InputStream/Reader: 所有的输入流的基类,前者是字节输入流,后者是字符输入流。

  • OutputStream/Writer: 所有输出流的基类,前者是字节输出流,后者是字符输出流。

5、BIO,NIO,AIO 有什么区别?

  • BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。

  • NIO:Non IO 同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。

  • AIO:Asynchronous IO 是 NIO 的升级,也叫 NIO2,实现了异步非堵塞 IO ,异步 IO 的操作基于事件和回调机制。

6、Files的常用方法都有哪些?

  • Files. exists():检测文件路径是否存在。

  • Files. createFile():创建文件。

  • Files. createDirectory():创建文件夹。

  • Files. delete():删除一个文件或目录。

  • Files. copy():复制文件。

  • Files. move():移动文件。

  • Files. size():查看文件个数。

  • Files. read():读取文件。

  • Files. write():写入文件。

7、什么是反射机制?

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

静态编译和动态编译

  • 静态编译:在编译时确定类型,绑定对象

  • 动态编译:运行时确定类型,绑定对象

8、反射机制优缺点及其应用场景?

  • 优点: 运行期类型的判断,动态加载类,提高代码灵活度。

  • 缺点: 性能瓶颈:反射相当于一系列解释操作,通知 JVM 要做的事情,性能比直接的java代码要慢很多。

  • 应用场景:

  • ①我们在使用JDBC连接数据库时使用Class.forName()通过反射加载数据库的驱动程序;

  • ②Spring框架也用到很多反射机制,最经典的就是xml的配置模式。Spring 通过 XML 配置模式装载 Bean 的过程:

  • (1) 将程序内所有 XML 或 Properties 配置文件加载入内存中;

  • (2)Java类里面解析xml或properties里面的内容,得到对应实体类的字节码字符串以及相关的属性信息;

  • (3)使用反射机制,根据这个字符串获得某个类的Class实例;

  • ( 4)动态配置实例的属性

9、字符型常量和字符串常量的区别?

  • 形式上: 字符常量是单引号引起的一个字符 字符串常量是双引号引起的若干个字符

  • 含义上: 字符常量相当于一个整形值(ASCII值),可以参加表达式运算 字符串常量代表一个地址值(该字符串在内存中存放位置)

  • 占内存大小:字符常量只占一个字节 字符串常量占若干个字节(至少一个字符结束标志)

10、什么是字符串常量池?

字符串常量池位于堆内存中,专门用来存储字符串常量,可以提高内存的使用率,避免开辟多块空间存储相同的字符串,在创建字符串时 JVM 会首先检查字符串常量池,如果该字符串已经存在池中,则返回它的引用,如果不存在,则实例化一个字符串放到池中,并返回其引用。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页