Java面试必备知识:基础篇

需积分: 3 7 下载量 57 浏览量 更新于2024-07-28 收藏 774KB DOC 举报
"Java面试宝典2012版,一本专注于Java面试的书籍,包含了丰富的Java基础知识和面试常见问题,旨在帮助读者准备Java程序员的面试。" 在Java编程领域,面试常常涉及到对语言特性的深入理解以及实际编程技巧。以下是一些从描述和部分内容中提炼的关键知识点: 1. **Java源文件与类的关系**:一个`.java`源文件可以包含多个类,但只能有一个公共类(public class),其他类可以是非公共的(非public)。 2. **goto关键字**:Java中没有`goto`关键字,它遵循结构化编程原则,不支持这种无条件跳转。 3. **逻辑运算符**:`&`和`&&`的区别在于,`&`始终会计算两边的操作数,而`&&`(逻辑与)在左侧操作数为假时,不会计算右侧。 4. **跳出多重循环**:使用`break`语句可以跳出当前的多重嵌套循环,但无法指定跳出哪一层,而`return`语句则可以立即结束函数执行并返回。 5. **switch语句**:switch不能直接作用于`byte`类型之外的其他基本数据类型,如`long`。但在Java 7及以上版本,可以用`String`进行switch匹配。 6. **short变量的赋值**:直接相加可能导致数据溢出,因此`short s1 = 1; s1 = s1 + 1;`可能出错,而`s1 += 1;`会自动提升类型,避免溢出。 7. **char存储中文**:`char`类型可以存储单个Unicode字符,因此理论上可以存储中文汉字。 8. **效率计算2乘以8**:最有效率的方法是直接赋值`2 * 8`,因为这是编译器优化过的常量表达式。 9. **设计大数计算器**:设计一个能处理一百亿级别数字的计算器,需要考虑数值溢出和效率优化,可能需要使用大数库如BigInteger。 10. **final关键字**:final修饰变量表示其值不可改变,如果是对象引用,则引用本身不可变,但引用的对象内容可以变。 11. **"=="与equals方法**:"=="比较的是对象的引用,而`equals`方法(默认比较引用,但在重写后通常用于内容比较)。 12. **静态与实例变量**:静态变量属于类,实例变量属于对象;静态变量在类加载时初始化,实例变量在对象创建时初始化。 13. **static方法与非static方法**:不能在static方法内部直接调用非static方法,因为非static方法依赖于对象实例。 14. **Integer与int**:Integer是int的包装类,两者之间有自动装箱拆箱转换。Integer对象的操作比int慢,但提供了更多功能。 15. **Math.round**:`Math.round(11.5)`等于12,`Math.round(-11.5)`等于-11。 16. **不妥的代码**:通常涉及类型转换错误、未初始化的变量或不符合Java语法的问题。 17. **访问修饰符的区别**:public,private,protected以及默认(包级私有)决定了类成员的可见性。 18. **重载与覆盖**:重载是方法名相同但参数列表不同的方法,覆盖是子类对父类方法的重新实现。重载不改变返回类型,而覆盖方法的返回类型、访问权限和签名必须保持一致。 19. **构造器不能被覆盖**:构造器不能像普通方法那样被重写(override),但可以被重载。 20. **接口与抽象类**:接口可以继承接口,抽象类可以实现接口,但抽象类不能继承具体类(concrete class)。抽象类中可以有静态的main方法,但无法直接运行。 21. **clone方法**:在实现`clone()`方法时,通常会有一行`super.clone();`调用以复制当前对象。 22. **面向对象特征**:封装、继承、多态。 23. **Java多态机制**:通过方法重写(overriding)和接口实现(implementation)来实现多态。 24. **abstractclass与interface**:抽象类可以有方法实现,接口中所有方法默认都是抽象的。一个类只能继承一个抽象类,但可以实现多个接口。 25. **abstract、static、native、synchronized的组合**:抽象方法不能是static或native,也不能是synchronized。 26. **内部类**:内部类是定义在另一个类中的类,分为静态嵌套类(Static Nested Class)和非静态嵌套类(Inner Class)。静态嵌套类与外部类没有实例关系,而内嵌类需要外部类实例。 27. **内部类与外部类的成员访问**:内部类可以直接访问外部类的所有成员,包括私有成员。 28. **匿名内部类**:没有名字的内部类,通常用作快速实现接口或抽象类的简单方式,常在事件监听、回调等场景中使用。 以上这些知识点涵盖了Java语言的基础特性、面向对象编程、类和对象、内存管理、多线程、异常处理等多个方面,是Java面试中常见的问题。深入理解和掌握这些知识将对Java开发者在面试中取得成功至关重要。