Java面试题-IO
- 1、什么是IO?
- 2、Java 中同步与异步是什么?它们的异同是什么?
- 3、Java 中阻塞与非阻塞是什么?它们的异同是什么?
- 4、什么是BIO?
- 5、什么是NIO?
- 6、什么是AIO?
- 7、BIO和NIO、AIO的区别?
- 8、IO流的分类有哪些?
- 9、什么是比特(Bit),什么是字节(Byte),什么是字符(Char),它们长度是多少,有什么区别?
- 10、什么叫对象序列化?
- 11、什么是反序列化?
- 12、如何在Java中实现对象序列化?
- 13、什么是serialVersionUID?它有什么作用?
- 14、怎么生成SerialversionUID?
- 15、说说你对BufferedReader的了解?
- 16、Java中流类的超类主要有那些?
- 17、为什么图片、视频、音乐、文件等都是要字节流来读取?
- 18、IO中的输出流和输出流有什么区别?
- 19、常用的IO类有哪些?
- 20、Java有哪几种类型类型的流?
- 21、字节流和字符流的区别是什么?
- 22、字节流和字符流之间如何互相转换?
- 23、为什么要有对象序列化机制?
1、什么是IO?
在Java中,IO(输入/输出)是指用于处理数据(如读取或写入)的操作,通常涉及数据在内存与其他媒介(如硬盘、网络等)之间的传输。Java lO提供了丰富的API来支持文件操作、网络操作等,它主要包括字节流(用于处理原始二进制数据)和字符流(用于处理文本数据),以及基于它们的各种高级流(如缓冲流、转换流等)以实现数据的高效读写。
2、Java 中同步与异步是什么?它们的异同是什么?
同步(Synchronous)和异步(Asynchronous)是指程序执行任务的方式:
- 同步:调用者发起一个任务,并且必须等待任务完成后才能继续执行后续代码。在此过程中,调用者被阻塞,直到任务执行完毕。
- 异步:调用者发起一个任务后,可以立即继续执行后续代码,不需要等待该任务完成。任务的完成和结果通常通过回调、Future、 Promise等机制在未来某个时间点被处理。
异同点:
- 相同点:都是用于处理耗时操作,目的是高效地利用资源。
- 不同点:同步操作中,调用者需要等待任务完成才能继续;而异步操作中,调用者无需等待,可以立即继续执行后续操作,提高了程序的响应性和并发性。