Java面试必备知识:基础与进阶

需积分: 10 1 下载量 96 浏览量 更新于2024-07-28 收藏 2.03MB PDF 举报
"Java面试宝典2012是一本针对Java面试的指南,涵盖了Java基础知识,适合应届毕业生准备面试。书中包含了一系列关于Java语法、编程逻辑和面向对象概念的问题和解答,旨在帮助读者深入理解Java语言的关键点,并在面试中表现出色。" Java面试中的知识点详解: 1. **一个.java源文件中的类限制**:一个.java源文件可以包含多个类,但只能有一个公共类(public class),且文件名必须与这个公共类的名字完全匹配。 2. **Java中的goto**:Java中没有goto关键字,它鼓励使用更安全和结构化的控制流程。 3. **&和&&的区别**:&是按位与运算符,而&&是逻辑与运算符。在布尔表达式中,&&具有短路特性,即如果第一个操作数为false,它不会评估第二个操作数。 4. **跳出多重嵌套循环**:使用`break`语句可以跳出当前最内层循环,`break label;`可以跳出特定标记的循环。 5. **switch语句的使用**:switch语句可以作用于byte、char、short、int以及枚举类型,自Java 7起,也可以作用于字符串(String)。 6. **short变量的加法**:在原始类型中,如short s1 = 1; s1 = s1 + 1; 这会涉及类型提升,可能导致编译错误,因为结果可能是int类型。而s1 += 1; 是合法的,因为编译器会自动处理类型转换。 7. **char存储中文**:char类型可以存储单个Unicode字符,因此可以存储中文汉字。 8. **效率计算2乘以8**:最有效率的方式是直接赋值`int result = 2 << 3;`,利用位移运算。 9. **设计大数计算器**:设计一个能处理大数的计算器,需要考虑如何存储大数(可能使用字符串或自定义数据结构),以及实现基本的加减乘除算法。 10. **final关键字**:final修饰的变量,其引用一旦初始化后不能改变,但引用的对象内容可以改变。如果对象本身也是final的,则对象的内容也不能改变。 11. **"=="与equals的区别**:"=="比较的是对象的引用,而equals比较的是对象的内容。 12. **静态变量与实例变量**:静态变量属于类,而实例变量属于类的每个实例。静态变量在内存中只有一份,实例变量每个对象都有独立的一份。 13. **从static方法内部调用非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. **Constructor是否可被override**:构造器不能被重写,但可以重载。 20. **接口与继承**:接口可以继承其他接口,抽象类可以实现接口,但抽象类不能继承具体类。抽象类中可以有静态的main方法,但不能运行。 21. **clone()方法**:通常在实现clone()时,会包含`super.clone()`来创建对象的浅拷贝。 22. **面向对象的特征**:封装、继承、多态。 23. **Java实现多态的机制**:通过方法的重写(Override)和接口的实现,以及对象的向上转型实现多态。 24. **abstractclass和interface的区别**:抽象类可以有非抽象方法和字段,而接口只有抽象方法和常量;一个类可以继承一个抽象类,同时实现多个接口。 25. **abstract与static、native、synchronized**:抽象方法不能是static,不能是native,也不能是synchronized。 26. **内部类**:内部类是定义在另一个类内部的类,分为静态嵌套类(Static Nested Class)和非静态嵌套类(Inner Class)。静态嵌套类与外部类之间没有实例关联,而内嵌类则有。 以上知识点涵盖了Java基础、面向对象、语法特性等多个方面,对于准备Java面试的人来说是非常重要的学习资料。