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

Java IO核心知识提问点

  1. 什么是 IO?

    答案:IO 即输入输出(Input/Output),是指数据在内存与外部设备之间的传输,比如程序从文件中读取数据到内存,或者将内存中的数据写入到文件、网络等外部设备中。在 Java 类库中,IO 部分涉及标准输入输出、文件操作、网络数据传输流等多个领域。
  2. Java 中的 IO 模型有哪些?

    答案:Java 中的 IO 模型主要有 BIO(Blocking IO,阻塞 IO)、NIO(Non - blocking IO,非阻塞 IO)和 AIO(Asynchronous IO,异步 IO)。BIO 是同步阻塞的,服务器实现一个连接一个线程;NIO 是同步非阻塞的,通过多路复用器轮询连接的 IO 请求;AIO 是异步非阻塞的,由操作系统先完成 IO 操作再通知服务器应用。
  3. 字节流与字符流的区别?分别有哪些核心类?

    答案:字节流以字节(8 位)为单位处理数据,适用于所有类型文件,核心类有 InputStream/OutputStream、FileInputStream/FileOutputStream 等;字符流以字符(16 位 Unicode)为单位处理数据,适用于文本文件,核心类有 Reader/Writer、FileReader/FileWriter 等。字节流直接操作字节,字符流通过字符编码转换字节,需注意编码不一致导致的乱码问题。
  4. BIO 和 NIO 的本质区别是什么?

    答案:BIO 是面向流的,读写操作阻塞线程,一个连接对应一个线程,在高并发下容易导致资源耗尽;NIO 是面向缓冲区的,支持非阻塞操作,通过 Selector 实现 “一个线程管理多个连接”,更适合高并发场景。
  5. NIO 的三大核心组件是什么?各自的作用?

    答案:NIO 的三大核心组件是 Buffer(缓冲区)、Channel(通道)和 Selector(选择器)。Buffer 用于存储读写的数据,是数据容器;Channel 是双向数据通道,可读写数据并关联缓冲区;Selector 是多路复用器,一个线程可监控多个 Channel 的事件,实现非阻塞 IO 管理。
  6. 什么是同步 IO 和异步 IO?请简述它们的区别。

    答案:同步 IO 中,一个 IO 操作必须在完成之前,其他所有操作都必须等待,会阻止程序的执行;异步 IO 中,一个 IO 操作的开始和结束是分离的,程序在 IO 操作开始后可以继续执行其他操作,当 IO 操作完成时会收到通知。区别在于同步 IO 操作会阻塞程序执行,而异步 IO 操作允许程序在 IO 操作完成之前继续执行其他任务。
  7. 在 Java 中如何实现异步 IO 操作?

    答案:在 Java 中,异步 IO 主要通过 NIO 库实现,尤其是 NIO.2。可以使用 java.nio.channels 包中的 AsynchronousFileChannel 类进行异步文件 IO 操作,或者对于网络操作使用 AsynchronousSocketChannel 和 AsynchronousServerSocketChannel 类。可以通过 Future 对象检查操作是否完成,也可以通过实现 CompletionHandler 接口以回调的方式在操作完成时异步地得到通知。
  8. Buffer 的 flip ()、rewind ()、clear () 方法的区别?

    答案:flip () 方法用于切换为读模式,会将 limit 设置为当前 position,position 设置为 0;rewind () 方法用于重置读指针,将 position 设置为 0,limit 不变;clear () 方法用于清空缓冲区,将 position 设置为 0,limit 设置为 capacity,但数据并未真正删除,后续写入会覆盖原有数据。
http://www.dtcms.com/a/390219.html

相关文章:

  • 微前端--前端架构的模块化革命
  • SQL分析-基础
  • V821---4M高集成无线视频芯片
  • count down 92 days
  • 学习日记-JS+DOM-day58-9.18
  • 【Python】基于界面库PyQt5+QTLinguist的多语言切换功能实现
  • Flutter 组件介绍:TickerMode
  • SQL 聚合函数总结:COUNT、SUM、AVG、MAX、MIN 详解
  • 资深专业新媒体营销数字营销培训老师商学院教授课程老师培训讲师唐兴通讲授10大经典社群私域案例:Lululemon的热汗式信仰社群运营社群活动
  • 玉米病虫害数据集检测识别数据集:近4k图像,7类,yolo标注
  • Batch Size与预热导致深度学习模型推理时间忽快忽慢
  • 过滤器(Filter)与拦截器(Interceptor)知识点总结
  • 深度学习与机器学习
  • Linux服务器从零开始-mysql安装
  • Emacs 折腾日记(三十)——打造C++ IDE 续
  • 解密DNS:互联网的隐形导航系统
  • Mysql修改用户密码,修改MySQL密码如何安全的步骤是什么
  • PS练习2:将图片贴入实际环境中
  • cocos shader 流光环绕
  • kali nethunter 开启ssh
  • vue3滚动到顶部钩子函数+组件简单示例
  • Linux 开发工具(3)
  • Hive 运行
  • PPT中为图片添加透明渐变的蒙版
  • 数字签名过程中的消息摘要和加密的作用
  • Unity物理系统笔记
  • 区分同步(Synchronous)和异步(Asynchronous)
  • 隐语开源隐私计算SecretFlow,实测性能提升10倍,纵向联邦SecureBoost算法(已开源)
  • 云南食品安全管理员考试都考哪些知识点
  • AAAI2025 | 视觉语言模型 | 西电等提出少样本语言驱动多模态分类模型DiffCLIP