Java面试必备知识精要

需积分: 20 1 下载量 80 浏览量 更新于2024-07-24 收藏 605KB PDF 举报
"这是一本Java程序员面试准备的资料,涵盖了从基础到高级的众多Java知识点,包括语法特性、编程原则、面向对象概念、异常处理、内存管理等方面。这份资料通过一系列的问题和解答形式呈现,旨在帮助Java开发者在面试中表现出色。" 1. Java源文件中的类限制:一个`.java`源文件可以包含多个类,但只能有一个公开类(public class),其他类可以是非公开的(如默认或private)。如果包含公开类,则文件名必须与该公开类的类名完全匹配。 2. Java没有`goto`关键字:Java语言设计中摒弃了`goto`,以鼓励更清晰的控制流。 3. `&`和`&&`的区别:`&`是逻辑按位与,无论条件如何都会执行两边的表达式;`&&`是短路逻辑与,如果第一个条件为假,就不会执行第二个条件。 4. 跳出多重嵌套循环:可以使用`break`语句跳出最内层的循环,而`break label;`可以跳出指定标签的循环。 5. `switch`语句的使用:`switch`可以作用于`byte`, `char`, `short`, `int`, `枚举类型`以及`String`(Java 7及以上版本)。 6. `short`变量加法:直接相加可能导致数据溢出,因此`short s1 = 1; s1 = s1 + 1;`会隐式转换为`int`类型,需要强制类型转换回`short`。而`s1 += 1`则是复合赋值操作符,会自动处理类型转换。 7. `char`型变量存储中文:可以,因为一个`char`占16位,足以表示一个中文字符的Unicode编码。 8. 计算2乘以8:最简单的方法是直接使用`2 * 8`。 9. 一百亿的计算器设计:涉及大数运算,可以利用Java的大整数类`BigInteger`。 10. `final`关键字:修饰变量时,意味着其引用一旦赋值后不能改变,如果是引用类型的`final`变量,其指向的对象内容是可以改变的。 11. `==`与`equals`区别:`==`比较基本类型值或对象引用,`equals`通常用于对象的内容比较,需重写以满足特定需求。 12. 静态变量与实例变量:静态变量属于类,所有实例共享;实例变量属于对象,每个对象有自己的副本。 13. 从`static`方法内部不能直接调用非`static`方法,因为非`static`方法依赖于实例对象。 14. `Integer`与`int`差异:`Integer`是`int`的包装类,提供了一些额外功能,如缓存、比较操作等,而`int`是原始数据类型。 15. `Math.round()`方法:`Math.round(11.5)`等于12,`Math.round(-11.5)`等于-11。 16. 代码不妥之处可能是指使用了未初始化的变量,或者存在语法错误等。 17. 作用域的区别:`public`可从任何地方访问,`private`仅限于本类,`protected`允许子类和同包访问,无修饰符则限于同包访问。 18. `Overload`和`Override`:`Overload`是重载,方法名相同但参数列表不同;`Override`是重写,方法名、参数列表和返回类型都必须相同,子类方法覆盖父类方法。 19. 构造器不可被`override`,但可以被重载。 20. 接口可以继承接口,抽象类可以实现接口,但不能继承具体类。静态的`main`方法不能在抽象类中定义,因为`main`是程序的入口点,而抽象类不能被实例化。 21. `clone()`方法通常会包含`super.clone()`调用,以复制对象的属性。 22. 面向对象特征:封装、继承、多态。 23. Java中多态通过接口、抽象类和方法重写实现。 24. `abstract class`与`interface`区别:抽象类可以有方法实现,可以包含非抽象方法和成员变量,而接口只有方法声明,不能包含成员变量(除静态常量)。 25. `abstract`方法不能是`static`、`native`或`synchronized`,因为它们都有特定的含义和使用场景。 26. 内部类:定义在类内部的类,包括静态嵌套类(StaticNestedClass)和非静态内部类(InnerClass)。前者不依赖外部类实例,后者需要。 27. 内部类可以引用外部类的所有成员,包括私有成员,但外部类不能直接访问内部类的私有成员,除非使用`this`或`OuterClass.this`。 这些面试问题覆盖了Java的基础到进阶知识,对于准备Java程序员面试的人来说,是很好的复习材料。