Java面试通关②:IO与反射核心全集

📖 前言导读

IO流与反射是Java框架底层核心支撑技术、中高频面试重难点 ,Spring、MyBatis等主流框架的底层实现均依赖这两大机制,属于进阶开发必备核心能力。多数开发者仅会简单文件读写、反射调用,不了解IO模型差异、类加载原理、底层执行逻辑,无法应对高阶面试与源码解读场景。本篇完整梳理BIO/NIO/AIO三大IO模型、各类流机制、反射核心原理、类加载与双亲委派模型,结合源码解析、场景对比、实战避坑与高频真题,打通框架底层原理认知,补齐进阶开发核心短板,适配面试深挖、源码学习、生产落地场景。


一、Java IO核心体系与三大模型

📌 必考指数:★★★★★

IO即输入输出流,用于实现数据读写、文件传输、网络数据交互,是数据持久化、网络通信的基础。Java IO体系庞大,核心面试重点为BIO、NIO、AIO三大模型差异,是中高级面试高频深挖考点。

1、BIO阻塞IO(传统IO)

BIO是同步阻塞IO模型,一个线程处理一个请求,客户端请求未到达、数据未就绪时,线程持续阻塞等待,无法处理其他任务。优点是代码简单、易懂;缺点是并发能力极差,高并发场景下线程堆积、资源耗尽,仅适用于低并发、简单文件读写场景。

2、NIO非阻塞IO(新IO)

NIO是同步非阻塞IO模型,核心组件:Buffer缓冲区、Channel通道、Selector多路复用器。线程不会阻塞等待数据,可轮询检测多个通道状态,一个线程可管理多个请求,大幅提升并发处理能力,是目前主流网络IO模型,适配高并发服务端开发。

3、AIO异步IO

AIO是异步非阻塞IO模型,基于操作系统异步通知机制,数据读写完成后系统主动回调业务程序,无需线程轮询。并发性能最优,但依赖系统支持、编程复杂,实际项目使用率较低。


二、IO流分类与核心区别

📌 必考指数:★★★★

Java IO流根据传输方向、数据类型、功能分为不同体系,核心区分字节流与字符流、节点流与处理流,开发中需根据文件类型合理选型。

  • 字节流:万能流,读写字节数据,适配图片、视频、音频、压缩包等所有文件,基类InputStream/OutputStream

  • 字符流:仅读写文本数据,适配txt、java、xml等文本文件,可自动处理编码问题,基类Reader/Writer

  • 节点流:直接对接数据源,原生基础流,性能一般

  • 处理流:包装节点流,提供缓冲、转换、序列化等增强功能,开发优先使用


三、Java反射核心原理

📌 必考指数:★★★★★

反射是Java框架底层的灵魂机制,在程序运行期间,动态获取类信息、动态创建对象、调用方法、修改属性,Spring IoC、MyBatis映射、注解解析全部基于反射实现。

1、Class类获取三种方式

  • 对象.getClass$$

  • 类名.class

  • Class.forName"全类名""全类名""全类名"

2、反射核心应用

运行时动态实例化对象、调用私有方法、修改私有属性、获取注解信息、动态加载类,极大提升程序灵活性,但存在性能偏低、破坏封装、安全性降低的短板。


四、类加载与双亲委派模型

📌 必考指数:★★★★★

类加载机制是反射运行的底层基础,JVM通过类加载器将class文件加载到内存,核心遵循双亲委派模型

双亲委派核心逻辑:子类加载器收到加载请求,优先委派父类加载器处理,父类无法加载再由子类加载。核心作用:保证核心类安全、避免类重复加载、统一类加载规则,防止自定义核心类覆盖JDK原生类。


五、序列化与深浅克隆

📌 必考指数:★★★★

序列化是将对象转为字节流用于持久化或网络传输,反序列化是字节流还原对象,需实现Serializable接口。深浅克隆核心区别:浅克隆仅复制对象本身,引用属性共用;深克隆完全复制所有属性,互不干扰。


六、本篇高频面试真题(必背)

1、BIO、NIO、AIO的区别与适用场景?

1、BIO同步阻塞:一线程一请求,并发低,适合简单低并发场景;2、NIO同步非阻塞:多路复用,单线程管理多请求,并发高,适合高并发服务端、文件读写;3、AIO异步非阻塞:系统回调通知,性能最优,适合超高并发场景但使用较少。项目主流选型为NIO,兼顾性能与开发成本。

2、反射的原理、优缺点与应用场景?

反射是运行时动态获取类信息、操作对象的机制。优点:极大提升程序灵活性与扩展性,是框架底层核心;缺点:性能较差、破坏封装、存在安全风险。应用场景:Spring IoC容器创建对象、MyBatis数据库映射、注解解析、动态代理、框架通用工具类封装。

3、双亲委派模型的作用与流程?

流程:子类加载器优先委派父类加载,父类逐层向上委派,顶层加载失败后子类自行加载。核心作用:保护JDK核心类不被篡改,避免重复加载类,保证类加载安全与稳定性,是JVM类加载的核心安全机制。


📝 本篇章节小结

本篇完整梳理了IO三大模型、流体系分类、反射原理与应用、类加载双亲委派、序列化与深浅克隆 核心考点,打通Java底层IO与动态机制认知。重点掌握NIO核心组件、反射底层逻辑、双亲委派作用,彻底理解框架底层运行基础,补齐进阶开发必备能力,从容应对中高级面试深挖与源码学习场景。