Java作为一种广泛使用的编程语言,其面试题涵盖了众多核心概念和细节。本文档集中了关于Java面试中常见的基础知识问题,包括变量的作用域、匿名内部类、静态嵌套类、运算符和类型转换、集合与数组操作、断言功能、字符串处理、浮点数精确性、基本数据类型限制、控制结构以及方法重载与覆盖等。
1. **作用域**:
- Java中的四种访问修饰符(public, protected, default/friend, private)决定了类成员的可见性和访问范围:
- `public`:在整个程序包和所有子类中可见。
- `protected`:在同一包和子类中可见,但在其他包内不可见。
- `default`(不写时默认):在当前类和同一包内可见,子类和外部包不可见。
- `private`:仅限于当前类内部访问。
2. **匿名内部类与继承、实现接口**:
- 匿名内部类可以不指定类名,但可以实现接口或继承父类,尽管不能同时进行。
- 如果没有明确指定,匿名内部类不能继承`extends`,但必须实现一个或多个接口(`implements`)。
3. **静态嵌套类和与C++的区别**:
- Java的静态嵌套类(Static Nested Class)类似于C++的内联类,但Java更强调封装,它们是类的一部分,有自己的生命周期。
4. **集合操作与`Collections`**:
- `Collections`提供了一组实用工具方法来操作集合,如排序、填充和查找。使用时,确保理解`Set`和`List`等集合接口的区别。
5. **`assert`语句**:
- Java中的`assert`用于验证程序假设,当条件为真时执行正常代码,否则抛出异常。这对于调试和单元测试非常有用。
6. **字符串处理与类型转换**:
- 示例代码展示了字符串赋值和类型转换,如`new String()`创建新字符串对象,以及`Math.round()`函数对浮点数四舍五入。
7. **基本数据类型与溢出**:
- 对于`short`类型,注意整数加法可能会导致溢出问题,因为它们使用`int`进行计算。
8. **控制结构与关键字限制**:
- Java中禁止使用`goto`和`break`语句,以及`length()`方法的正确用法。
9. **方法重载(Overload)与覆盖(Override)**:
- 这两个概念区分了在同名方法上的多态性:重载是指方法签名不同,而覆盖是子类对父类方法的扩展,方法签名和行为都需匹配。
通过掌握这些知识点,面试者可以展示其对Java编程基础的扎实理解和实践经验。在实际面试中,面试官会关注候选人的理解深度、解决问题的能力以及对最新最佳实践的了解。