Java面试必备知识点:基础篇

需积分: 3 2 下载量 16 浏览量 更新于2024-07-30 收藏 657KB DOC 举报
"Java面试宝典是一份针对Java开发者面试准备的资料,包含了基础到高级的Java编程问题,旨在帮助求职者提升面试技巧并检验自身技能。这份资料由丁超勇整理,涵盖Java语言的基础知识、语法特性、编程实践等多个方面,通过一系列问题和解析,帮助读者深入理解Java的核心概念和最佳实践。" Java面试宝典中涉及的知识点详解: 1. **Java源文件与类的关系**:一个`.java`源文件可以包含多个类,但只能有一个公共类(public class),其他类可以是非公共类(非顶级类,如内部类)。 2. **Java中的goto语句**:Java语言中没有`goto`语句,它遵循结构化编程原则,鼓励使用流程控制结构如`if`、`for`、`while`等。 3. **& 和 && 的区别**:`&`是位运算符,用于按位与操作;`&&`是逻辑运算符,用于逻辑与操作,只有当左侧表达式为真时,才会计算右侧表达式。 4. **跳出多重嵌套循环**:可以使用`break`语句跳出最内层循环,而`break label;`可以跳出标记的循环。 5. **switch语句的使用限制**:在Java 7及更早版本,`switch`不能作用于`byte`、`long`或`String`,但自Java 7开始,`switch`可以处理`String`类型。对于`byte`和`long`,需使用旧式的条件判断结构。 6. **short变量的赋值**:直接赋值`s1=s1+1`可能会导致数据溢出,因为编译器会自动提升类型至`int`,然后赋值回`short`可能导致数据丢失。而`s1+=1`则会被编译器优化,避免溢出。 7. **char变量与中文字符**:`char`变量可以存储单个Unicode字符,因此可以存储中文字符。 8. **效率计算2乘以8**:最简单的方法是`2 << 3`,利用位移运算快速计算。 9. **设计大整数计算器**:需要考虑如何高效地处理大整数,可能涉及到大数运算库或自定义算法。 10. **final关键字**:final修饰的变量其引用不能改变,即一旦赋值,不能指向其他对象,但引用的对象内容可以变。 11. **"=="与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),但可以重载(overload)。 20. **接口与抽象类**:接口只能包含抽象方法和常量,不允许有实现;抽象类可以有抽象方法和非抽象方法,一个类可以实现多个接口,但只能继承一个类。 21. **clone方法**:通常在`clone()`方法中需要调用`super.clone()`以确保正确克隆。 22. **面向对象特征**:封装、继承、多态。 23. **Java多态机制**:通过接口或继承,以及方法的重写和动态绑定实现。 24. **abstract class与interface区别**:抽象类可以有非抽象方法和属性,可以有构造器,一个类只能继承一个抽象类;接口只能有抽象方法和常量,不能有实现,一个类可以实现多个接口。 25. **abstract与static、native、synchronized**:抽象方法不能是`static`,不能是`native`,也不能是`synchronized`。 26. **内部类**:内部类是嵌套在另一个类中的类,分为静态嵌套类(Static Nested Class)和非静态嵌套类(Inner Class)。静态嵌套类不直接访问外部类的非静态成员,非静态嵌套类可以访问外部类的所有成员。 27. **内部类与外部类的引用**:内部类可以直接引用外部类的成员,包括私有成员,但外部类不能直接引用内部类的私有成员,需要通过实例化内部类对象来访问。