
Java核心基础网络IO面试题完整版目录1. 重载与重写2. 接口与抽象类3. 权限修饰符4. 深拷贝与浅拷贝5. 强软弱虚引用6. super和this7. sleep和wait8. 自动拆装箱与int/Integer9. 和equals区别10. String相关11. final、finally、finalize12. Object类常用方法13. 线程状态/生命周期14. Java IO流15. BIO、NIO、AIO16. Java反射17. GET和POST18. Cookie和Session19. HTTP和HTTPS20. HTTP1.0和HTTP1.121. TCP和UDP22. 浏览器输入URL到页面展示全过程1. 重载与重写对比项重载Overload重写Override发生位置本类内部父类与子类之间方法名必须相同必须相同返回值无要求必须相同参数列表必须不同个数/类型/顺序必须完全相同访问权限无限制不能低于父类被重写方法的权限特殊说明构造方法可以重载构造方法不能被重写2. 接口与抽象类对比维度抽象类abstract class接口interface使用方式被子类继承extends被类实现implements继承特性类只能单继承抽象类接口可以多继承接口构造器可以有构造方法不能有构造方法修饰符抽象方法public/protected/default方法默认public成员变量可以定义普通成员变量只能声明常量public static final3. 权限修饰符修饰符访问范围public全局可用任意位置protected同一个包内 不同包的子类default同一个包内可用private仅当前类内部可用4. 深拷贝与浅拷贝浅拷贝仅拷贝对象的基本数据类型值仅拷贝引用类型的地址不复制引用指向的对象拷贝后的对象与原对象共享引用类型属性深拷贝拷贝基本数据类型值完整复制引用类型指向的对象创建新实例拷贝后的对象与原对象完全独立互不影响5. 强软弱虚引用强引用定义最常用引用Object obj new Object();回收规则只要强引用存在永不回收内存不足直接OOM软引用SoftReference回收规则内存充足不回收内存不足时回收应用场景内存敏感型缓存避免OOM弱引用WeakReference回收规则GC一旦运行就回收无视内存大小应用场景解决内存泄漏ThreadLocal核心实现虚引用PhantomReference必须配合**引用队列ReferenceQueue**使用回收规则随时可能被回收应用场景对象回收前资源清理直接内存释放6. super和this对比项thissuper指代对象当前类本身父类对象调用内容本类构造方法、成员变量、成员方法父类构造方法、成员变量、成员方法构造调用调用本类构造必须放在第一行调用父类构造必须放在第一行核心作用区分同名成员变量调用重载构造访问父类隐藏成员初始化父类7. sleep和wait对比项sleep()wait()所属类Thread类Object类CPU资源释放CPU释放CPU锁资源不释放锁释放锁唤醒方式时间到自动唤醒wait()需notify/notifyAll唤醒使用环境任意位置必须在synchronized同步代码中异常运行时无强制异常未加锁会抛IllegalMonitorStateException8. 自动拆装箱与int/Integer定义装箱基本类型 → 包装类对象int → Integer拆箱包装类对象 → 基本类型Integer → int作用Java集合List/Map只能存储对象自动装箱方便基本类型存入集合Integer缓存机制缓存范围-128 ~ 127范围内直接复用缓存对象比较为true范围外创建新对象比较为false必须用equals()9. 和equals区别基本数据类型比较值是否相等引用数据类型比较内存地址是否相同equals()未重写等价于比较地址重写后比较对象内容/属性String、Integer均已重写来源Object类方法默认实现为10. String相关String能否被继承不能String类被final修饰final类不可被继承原因保证安全性、防止被重写植入恶意代码、保证字符串不可变性String a abc和new String(abc)区别String a abc先检查字符串常量池存在则直接复用不存在则创建并存入常量池new String(abc)直接在堆内存创建新对象常量池作用缓存字符串避免重复创建节省内存空间创建字符串时JVM先检查常量池存在则复用可通过intern()方法将堆字符串放入常量池StringBuffer 和 StringBuilder对比项StringBufferStringBuilder线程安全安全synchronized修饰不安全效率较低较高适用场景多线程环境单线程环境为什么需要StringBuilderString是不可变对象每次修改都会创建新对象消耗内存StringBuilder是可变对象直接在原对象修改性能更高11. final、finally、finalizefinal修饰符修饰类类不能被继承修饰变量变量为常量不可修改修饰方法方法不能被子类重写finally异常处理搭配try...catch使用代码块无论是否发生异常一定执行用于释放资源IO、连接关闭finalize对象回收Object类中的方法垃圾回收器销毁对象前调用用于对象回收前的资源清理12. Object类常用方法clone()创建并返回对象副本equals(Object)判断对象是否相等finalize()对象回收前调用getClass()返回对象运行时类hashCode()返回对象哈希码toString()返回对象字符串表示notify()/notifyAll()唤醒等待线程13. 线程状态/生命周期新建状态New创建线程对象未启动就绪状态Runnable调用start()等待CPU调度运行状态Running获取CPU执行run()方法阻塞状态Blocked等待阻塞wait()同步阻塞等待synchronized锁其他阻塞sleep()、join()、IO等待死亡状态Dead执行完毕或异常退出14. Java IO流两大分类字节流操作二进制数据万能流输入InputStream输出OutputStream字符流操作文本数据输入Reader输出Writer15. BIO、NIO、AIOBIO阻塞式IO同步阻塞一个连接对应一个线程并发能力低资源消耗大NIO非阻塞IO同步非阻塞Selector多路复用一个线程管理多个连接核心组件Buffer缓冲区、Channel通道、SelectorAIO异步IO异步非阻塞事件回调机制IO完成后自动触发回调无需等待适用于高并发、高吞吐场景16. Java反射反射定义程序运行时获取类的属性、方法、构造器并调用任意对象的方法Class.forName()vsClassLoader.loadClass()方法区别Class.forName()加载类 执行静态代码块ClassLoader.loadClass()仅加载类不执行静态代码块适用场景JDBC驱动加载17. GET和POST对比项GETPOST作用获取数据提交数据参数位置URL地址栏可见请求体中传输安全性低参数暴露相对安全数据长度有限制URL长度限制理论无限制缓存会被浏览器缓存默认不缓存幂等性幂等非幂等18. Cookie和SessionCookie存储在客户端浏览器保存少量用户标识信息每次请求自动携带对应CookieSession存储在服务器端保存用户会话完整信息依赖Cookie传递SessionID用户跳转页面数据全程保留19. HTTP和HTTPS对比项HTTPHTTPS端口80443安全性明文传输不安全加密传输安全证书无需要CA权威证书协议应用层协议HTTP SSL/TLS加密层20. HTTP1.0和HTTP1.1对比项HTTP1.0HTTP1.1连接方式短连接请求完断开长连接TCP连接复用请求方式GET/POST/HEAD支持PUT/DELETE/OPTIONS等性能连接开销大减少握手开销性能更高21. TCP和UDP区别对比项TCPUDP连接面向连接无连接可靠性可靠传输确认/重传不可靠传输方式字节流数据报文适用场景文件、邮件、网页视频、语音、直播TCP三次握手建立连接客户端发送SYN → 服务端请求连接服务端返回SYNACK → 客户端同意连接客户端发送ACK → 服务端连接建立TCP四次挥手断开连接客户端发送FIN → 服务端请求断开服务端返回ACK → 客户端收到请求服务端发送FIN → 客户端准备就绪客户端返回ACK → 服务端断开完成22. 浏览器输入URL到页面展示全过程浏览器输入URLDNS解析域名 → IP地址客户端随机端口发起TCP三次握手浏览器发送HTTP GET请求服务器处理请求返回HTTP响应浏览器接收响应渲染HTML页面页面加载完成展示内容