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

Java高频面试题(三): IO与NIO核心原理精解

  1. IO
    1. IO体系概述:
      • 字节流:InputStream(读)、OutputStream(写),特点:处理二进制数据
      • 字符流:Reader(读)、Writer(写),特点:处理文本数据
      • 缓冲流:BufferedInputStream/BufferedReader,特点:减少磁盘/网络IO次数,提升性能。
      • 转换流:InputStreamReader(字节->字符),特点:解决字符编码问题(如将InputStream转为Reader)
      • 序列化流:ObjectInputStream/ObjectOutStream,特点:用于对象持久化(需实现Serializable)
      • NIO:非阻塞IO。Channel数据通道(如FileChannel、SocketChannel)、Buffer数据容器(如ByteBuffer、CharBuffer)、Selector监控多个Channel事件(如读写),特点:基于事件驱动,支持多路复用(非阻塞IO)。使用场景:高并发网络编程(如聊天室、Netty的Channel设计、RPC框架(远程方法调用,表示远程方法调用的方式(http,tcp)))
    2. IO面试题:
      • BIO、NIO、AIO的区别
        1. BIO是阻塞式IO,每个连接对应一个线程。缺点:线程资源消耗大,高并发下性能差。
        2. NIO是非阻塞IO,基于Selector多路复用,单线程可处理多个连接。优点:节省线程资源,适合高并发场景(如Web服务器)。
        3. AIO是完全异步,由操作系统通知就绪事件。优点:更高效率,但编程复杂(Java7+支持)
      • NIO中的Selector如何工作
        1. 注册Channel到Selector,并指定监听事件(如OP_READ)
        2. Selector.select()阻塞等待事件
        3. 遍历就绪的SelectionKey,处理对应Channel的读写
      • 序列化时如何防止安全问题
        1. 使用transient关键字保护敏感字段(如密码)
        2. 自定义readObject()和writeObject()方法控制序列化逻辑
        3. 设置serialVersionUID确保兼容性
http://www.jsqmd.com/news/478102/

相关文章:

  • LiuJuan20260223Zimage惊艳案例分享:从单关键词到复杂描述的LiuJuan人像生成进阶实践
  • MySQL 数据类型核心指南:选型、实战与避坑
  • 力扣第73题:柱形图中最大的矩形
  • 7. AI面试题之 区别小结
  • InstructPix2Pix惊艳修图作品分享:保留构图前提下的精准语义编辑
  • JVM常见命令记录
  • 国家非物质文化遗产代表性目录、传承人数据
  • YOLOv10改进策略【卷积层】| ICCV 2025 UniConvNet 感受野聚合器RFA 小核组合扩ERF + AGD保持提表征,兼顾精度与效率
  • ARM处理器运行模式(ARM处理器架构模型——内核工作模式)
  • 腾视科技重磅发布全场景无人叉车及智能调度系统解决方案,开启工业物流智能新时代
  • cv_resnet18_ocr-detection模型部署与使用:完整流程详解
  • 基于华为云码道 + 高德地图MCP Server快速搭建行程规划助手
  • ARM存储系统概述与数据类型(ARM处理器架构模型——存储系统,上篇)
  • Android功耗系列专题理论之十三:MTK平台待机功耗问题分析方法
  • STM32CubeMX 版本演进与兼容性实战指南(持续追踪)
  • 《计算机网络:自顶向下方法》(第 8 版)介绍
  • 本地部署国产openclaw(CoPaw)(保姆级图文讲解)
  • Spring Cloud Nacos实战:如何让本地服务只发现不注册(附完整配置代码)
  • FreeRTOS任务卡死?试试这个精准监控方案(附完整代码)
  • Java 并发编程:volatile (可见性 / 指令重排序 / 与 synchronized 对比)
  • 上市公司借款数据实战:如何用Python快速分析长期借款前五名(附完整代码)
  • 告别蜗牛速度!用frp内网穿透5分钟搞定远程访问NAS(附详细配置截图)
  • MPC论文笔记2-四旋翼轨迹跟踪控制
  • 【Linux】理解进程,从这三件事开始:冯诺依曼、操作系统、PCB
  • 如何用MMDetection3D训练自定义点云数据集?PointPillars实战教程
  • AIGlasses_for_navigation应用:微信小程序开发集成实时导航功能
  • 基于YOLOv5的火灾检测:中文文献综述(2016-2026)摘要本文对过去十年(2016-2026)基于YOLOv5的火灾检测中文文献进行了系统性综述。研究发现,YOLOv5作为单阶段目标检测
  • 鼎捷T100 R报表开发实战:从规格档定制到SQL优化的全流程解析
  • OpenClaw本地部署及飞书接入完整指南总结
  • 从模型损坏到代理冲突:深度解析OllamaEmbeddings两大高频错误的底层原因