Java大厂经典面试题
什么是 Java 的跨平台性?原理是什么?
解析:核心在于 JVM(Java 虚拟机)。Java 源代码编译为字节码(.class 文件),不同平台的 JVM 负责解释执行字节码,实现 "一次编写,到处运行"。需强调 JVM 与操作系统的对应关系。HashMap 与 HashTable 的区别?
解析:从线程安全、性能、允许的键值、继承关系四方面对比。例如:HashMap 非线程安全,效率高,允许 null 键值;HashTable 线程安全(方法加 synchronized),效率低,不允许 null。Java 中的多态如何实现?
解析:基于继承、重写、向上转型三大要素。编译时多态(方法重载)和运行时多态(方法重写)的区别,可结合具体代码示例说明。ArrayList 与 LinkedList 的底层实现及适用场景?
解析:ArrayList 基于动态数组,查询快(下标访问)、增删慢(需移动元素);LinkedList 基于双向链表,增删快(修改指针)、查询慢(需遍历)。根据操作类型选择使用。什么是线程安全?如何实现线程安全?
解析:线程安全指多线程环境下代码执行结果与单线程一致。实现方式包括:synchronized 关键字、Lock 接口、原子类(如 AtomicInteger)、线程封闭等,需说明各方式的优缺点。Java 的垃圾回收机制原理?常见的垃圾收集器有哪些?
解析:先解释 GC 的作用(自动回收无用对象内存),再说明判断对象存活的算法(引用计数、可达性分析),最后列举收集器(如 SerialGC、ParallelGC、CMS、G1,JDK17 后 ZGC、Shenandoah 等)。final、finally、finalize 的区别?
解析:final 修饰类(不可继承)、方法(不可重写)、变量(不可修改);finally 是 try-catch-finally 中的代码块,无论是否异常都会执行(除非 JVM 退出);finalize 是 Object 类的方法,垃圾回收前调用,不推荐使用。Spring 中的 IOC 和 AOP 分别是什么?原理是什么?
解析:IOC(控制反转)指将对象创建权交给容器,减少耦合;AOP(面向切面)通过动态代理实现,将日志、事务等横切逻辑与业务逻辑分离。可简述 Spring 如何实现这两个核心特性。Java 8 的 Stream API 有什么特点?
解析:基于函数式编程,支持链式操作、惰性求值,简化集合处理。对比传统 for 循环的优势,举例说明 stream 的过滤、映射、聚合等操作。