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

Java全栈经典面试题剖析6】JavaSE高级 -- 文件、IO流、序列化

目录

面试题3.29  怎么获取指定路径下的全部文件

面试题3.30  什么是IO流

面试题3.31  字节流与字符流的区别

面试题3.32  什么是缓冲区

面试题3.33  java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?

面试题3.34  字节流有哪些? 缓冲流的加速方式

面试题3.35  什么是java序列化,如何实现java序列化?

面试题3.36  Java序列化中如果有些字段不想进行序列化,怎么办?


面试题3.29  怎么获取指定路径下的全部文件

【技术难度:1     出现频率:1  】

1.使用File对象的list()方法可以获取目录中文件的文件名;

2.使用File对象的listFiles()方法可以获取目录中文件的文件对象。

扩展(无需背诵):

File f = new File(path);  //根据路径创建File对象

String[] fileName = f.list();  //获取目录下的文件名

File[] files = f.listFiles();  //获取目录下的文件对象

面试题3.30  什么是IO流

【技术难度:   1  出现频率: 1 】

1.IO流分为输入流InputStream和输出流OutputStream;

2.输入流和输出流又分为字节流和字符流;

3.字符流的底层也为字节流;

4.操作文件的时候使用字节流,操作字符的时候使用字符流。

面试题3.31  字节流与字符流的区别

【技术难度:  1   出现频率:1  】

1.字节流以字节为单位进行操作,是万能的流,可以读写各种格式文件,比如图片视频等;

2.字符流底层是字节流,以字符为单位进行操作,用于操作文本文件。

面试题3.32  什么是缓冲区

【技术难度:2     出现频率:1  】

缓冲区分为输入缓冲区和输出缓冲区:

1.输入缓冲区,一次性从磁盘中读取足够大的数据到缓冲区内存中,程序后续每次从缓冲区内存中读取一定量的数据,用于减少读取磁盘次数;

2.输出缓冲区,每次把数据写到缓冲区内存中,当缓冲区内存数据达到一定量的时候,一次性写入磁盘,用于减少写入磁盘的的次数。

面试题3.33  java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?

【技术难度:  2   出现频率:1  】

Java中有字节流和字符流。字节流继承于InputStream、OutputStream,字符流继承于Reader、Writer。在java.io包中还有许多其他的流,主要是为了提高性能和使用方便。

面试题3.34  字节流有哪些? 缓冲流的加速方式

【技术难度: 2    出现频率:1  】

1.

InputStream

FileInputStream

BufferedInputStream

ObjectInputStream

OutputStream

FileOutputStream

BufferedOutputStream

ObjectOutputStream

2.

缓冲流内置了默认8KB大小的数组作为缓冲区

面试题3.35  什么是java序列化,如何实现java序列化?

【技术难度: 2    出现频率: 1 】

第一层:

通俗的说,序列化就是将内存中java对象写到硬盘上的过程,反序列化是将硬盘中的数据,反向读取到程序内存中重新构建对象。序列化需要实现Serializable接口,此接口中没有方法,只是个标示接口。

第二层:

反序列化会比较数据和.class文件的版本号(serialVersionUID),如果修改过代码导致版本号与数据中的不一致,将无法反序列化,会抛出InvalidClassException异常。

第三层:

transient和static修饰的属性无法被序列化
反序列化不会调用构造方法。克隆和序列化的底层走的不是构造

面试题3.36  Java序列化中如果有些字段不想进行序列化,怎么办?

【技术难度:  2   出现频率:1  】

第一层:

1.使用 transient 关键字修饰变量,它只能修饰变量,它修饰的的变量不参与序列化,当对象被反序列化时,被它修饰的变量值会是堆中的默认值(0,0.0,null等);

2.使用static修饰,序列化保存的是对象的状态,而static修饰的字段属于类,与对象无关;

第二层:

3.Externalizable,他是Serializable接口的子类,可以使用这个接口的writeExternal()和readExternal()方法可以指定序列化哪些属性。


------------------------END-------------------------

才疏学浅,谬误难免,欢迎各位批评指正。


http://www.mrgr.cn/news/56043.html

相关文章:

  • 单片机常见的存储器
  • 酒店民宿预约系统,市场发展的必然方向
  • MySQL8.0.28解压版安装windows
  • EasyExcel填充模板导出excel.xlsx
  • 提升小学语文教学效果的思维导图方法
  • 基于微博评论的自然语言处理情感分析
  • 【Fargo】11: pacing 参数不生效:同步调整采集码率
  • 【代码随想录Day48】图论Part01
  • 永恒之蓝漏洞
  • 华为od面试手撕代码真题题型6——传统双指针
  • 贝叶斯决策论
  • 【vue2.7.16系列】手把手教你搭建后台系统__provider绑定类标识(11)
  • 【C#】调用本机AI大模型流式返回
  • typescript 中的类型推断
  • 「C/C++」C++ STL容器库 之 std::string 字符串类
  • 银行软件测试有哪些测试点?一般银行的软件测试工作流程有哪些?
  • 2226733-37-3,Mal-amido-PEG24-NHS是一种结合了马来酰亚胺和聚乙二醇的活性酯化合物
  • 医疗健康行业获客难?来看这位区域总经理的业绩增长破局之道
  • sql获取时间差
  • WebGl 使用平行矩阵实现图像平移
  • 浪潮云启操作系统(InLinux)bcache缓存实践:理解OpenStack环境下虚拟机卷、Ceph OSD、bcache设备之间的映射关系
  • 太极0.5
  • 如何开发电商平台?直播带货系统源码的核心技术解析
  • 基于SSM网络在线考试系统的设计
  • CentOS7上下载安装 Docker Compose
  • R语言机器学习算法实战系列(六)K-邻近算法 (K-Nearest Neighbors)