Java面试汇总是一份全面且实用的资源,针对Java程序员求职面试,特别是对于准备应对各类面试挑战的候选人具有重要意义。这份文档集合了大量的经典Java面试题及其答案,覆盖了Java语言基础知识、高级概念以及一些大厂面试的精华内容。
在面试中,关于被引用对象的存活问题,值得注意的是,不是所有的引用都会保证对象一直存在。例如,弱引用和软引用在垃圾回收(GC)过程中会有特定的行为。弱引用在GC时会被自动回收,不会阻止对象被清理;而软引用在内存不足(OOM,Out Of Memory)时会被回收。这意味着,如果引用链中没有其他强引用,即使有软引用指向的对象也可能被回收。
此外,面试者可能会被问及常见的运行时异常。这些异常包括但不限于:ArithmeticException(算术异常),当进行不合法的数值运算时抛出;ClassCastException(类转换异常),在试图将一个对象强制转换为错误的类型时出现;IllegalArgumentException(非法参数异常),传递给方法的参数不符合预期;IndexOutOfBoundsException(下标越界异常),访问数组或列表超出有效索引范围时;NullPointerException(空指针异常),当试图使用null对象的属性或方法时;以及SecurityException,涉及安全相关的权限检查。
基础篇部分,Java语言的特点强调了其简洁性、丰富的类库、面向对象编程(OOP)、跨平台兼容性和安全性。面向对象编程通过封装、继承和多态提高代码的复用性和可维护性,尽管可能牺牲一部分性能。八种基本数据类型如byte、short、int、long、float、double、boolean和char的讨论中,指出了它们的存储大小、默认值和对应的封装类(如Integer、Long等)。
关于基本数据类型和引用类型的区别,int作为基本数据类型,它的默认值为0,而Integer是其封装类,其默认值为null,用于区分空引用和0。基本数据类型在声明时自动分配内存,而引用类型(如对象和数组)仅分配引用空间,需要实例化后才分配实际数据空间,同时数组本质上也是引用对象,赋值行为只复制引用,而非数据本身。
最后,虽然Java支持boolean类型,但在内部其实使用的是int类型,boolean数组在内存中则以byte数组的形式存储,每个元素占用8位。理解这些细节有助于面试者深入理解Java的数据模型和内存管理机制。