Java面试必备知识:基础篇

需积分: 3 3 下载量 113 浏览量 更新于2024-07-31 收藏 529KB DOC 举报
"Java面试宝典2010版,涵盖了Java基础知识,包括类定义、关键字、运算符、数据类型、方法重载与覆盖、内存管理等多个方面,旨在帮助求职者准备Java编程相关的面试问题。" Java面试宝典2010版详细解读: 1. **Java源文件与类的关系**:一个`.java`源文件可以包含多个类,但只能有一个公共类(public class),其他非公共类可以任意数量。 2. **关键字`goto`**:Java中不存在`goto`关键字,它被设计为避免复杂的控制流,提高代码可读性。 3. **`&`和`&&`的区别**:`&`是逻辑与操作符,无论两侧条件如何都会进行计算;`&&`是短路与,如果左侧为假,右侧不会执行。 4. **跳出多重嵌套循环**:使用`break`语句配合标签(label)可以跳出多重嵌套循环,如`break labelName;`。 5. **`switch`语句的使用**:在Java 7及以前,`switch`不能作用于`byte`、`long`和`String`,但从Java 7开始,`switch`可以支持`String`,但仍然不支持`long`。 6. **`short`类型的变量加法**:直接相加可能导致溢出,需要强制类型转换。例如,`short s1 = 1; s1 = s1 + 1;`是错误的,因为结果会自动提升为`int`类型,需要手动转换回`short`。而`s1 += 1;`会自动处理类型转换。 7. **`char`型存储中文**:`char`类型在Java中占用两个字节,因此可以存储中文字符。 8. **高效计算2乘以8**:直接使用`2 << 3`,利用位移运算来快速计算。 9. **设计大数计算器**:需要考虑大数运算的实现,如使用字符串表示数字,然后进行逐位计算。 10. **`final`关键字**:`final`修饰的变量,其引用一旦赋值后不可变,对于引用类型,这意味着引用的对象不可变,而不是引用本身。 11. **`==`与`equals`的区别**:`==`比较的是对象的引用,`equals`(默认情况下)比较的是对象的内容。对于基本类型,两者相同;对于对象,需重写`equals`以比较对象属性。 12. **静态变量与实例变量**:静态变量属于类,所有实例共享;实例变量属于对象,每个对象有自己的副本。 13. **静态方法与非静态方法**:不能从静态方法内部直接调用非静态方法,因为非静态方法依赖于对象实例。 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`,但可以通过`super()`或`this()`调用父类构造器。 20. **接口与继承**:接口可以继承接口;抽象类可以实现接口;抽象类可以继承具体类,但具体类不能继承抽象类;抽象类中可以有静态的`main`方法,但不能作为程序入口。 21. **`clone()`方法**:通常需要在类中重写`clone()`并调用`super.clone()`,以创建对象的浅复制。 22. **面向对象特征**:封装、继承、多态。 23. **Java实现多态的机制**:通过方法重写(`Override`)和接口实现(`Implements`),以及对象的引用类型来实现多态。 24. **`abstract class`与`interface`**:抽象类可以有方法实现,可以有非抽象方法和字段,可以有构造器;接口只定义方法签名,没有实现,字段默认为`public static final`。 25. **`abstract`关键字的限制**:`abstract`方法不能是`static`、`native`或`synchronized`。 26. **内部类**:内部类是定义在另一个类内部的类,分为成员内部类、局部内部类、匿名内部类等,`StaticNestedClass`是静态嵌套类,与外部类之间没有隐含引用;`InnerClass`是非静态内部类,可以直接访问外部类的成员。 27. **内部类与外部类的交互**:内部类可以直接访问外部类的所有成员,包括私有成员,但外部类只能通过内部类的实例访问内部类的成员。 28. **匿名内部类**:没有类名的内部类,常用于简化代码,创建一次性使用的类,通常用于接口实现或抽象类的子类化。