Java面试必备知识精粹

需积分: 7 2 下载量 39 浏览量 更新于2024-07-24 收藏 4.83MB PDF 举报
"java2013年版面试宝典" 这篇文档是针对Java程序员的面试准备资料,包含了2013年版的一些常见面试问题和解答。以下是对这些问题的详细解释: 1. Java源文件可以包含多个类,但只能有一个公开类(public class),其他类可以是非公开的(如private或默认包访问权限)。 2. Java中没有`goto`语句,它在Java中是被排除在外的,以鼓励更清晰和易于理解的代码结构。 3. `&`是位运算符,而`&&`是逻辑运算符。`&`在布尔上下文中会计算两边的操作数,而`&&`会短路,如果左侧操作数为假,右侧就不会被执行。 4. 要跳出多重嵌套循环,可以使用`break`语句配合标签(label)来实现。 5. `switch`语句不能作用于`byte`,但在Java 7之后可以用于`char`和`enum`类型。不能作用于`long`,但可以作用于`String`(自Java 7开始)。 6. 对于`short`类型的变量,直接加1可能会导致数据溢出,所以`s1=s1+1`是错误的。而`s1+=1`会被编译器自动转换为避免溢出的正确方式。 7. `char`型变量可以存储一个中文汉字,因为UTF-16编码下,一个中文字符占两个字节。 8. 计算2乘以8最有效率的方式是直接写`2 * 8`。 9. 设计一个能处理一百亿规模的计算器,需要考虑高精度计算,可能涉及到大整数类(BigInteger)或高效算法。 10. `final`关键字修饰变量时,意味着引用一旦赋值后不可改变,但如果是对象,对象的属性可以改变,除非对象本身也是`final`的。 11. `==`比较的是两个对象的引用,而`equals`方法通常比较的是对象的内容。对于基本类型,`==`就是内容比较。 12. 静态变量属于类,而实例变量属于类的每个实例。静态变量在内存中只有一份,实例变量每个实例都有自己的副本。 13. 不能从静态方法内部直接调用非静态方法,因为静态方法与类关联,而非静态方法与对象关联。 14. `Integer`是int的包装类,它们之间可以自动装箱和拆箱。`Integer`包含额外的方法和特性,而`int`是原始类型。 15. `Math.round(11.5)`等于12,`Math.round(-11.5)`等于-11,因为`round`方法四舍五入到最接近的整数。 16. 提供的代码未给出,无法分析其不妥之处。 17. `public`、`private`、`protected`和默认访问权限(包级别)分别代表了不同的访问级别。`public`可在任何地方访问,`private`仅在类内部,`protected`在同一包或子类中,无修饰符则在同一包内。 18. Overload是重载,指同一类中方法名相同但参数列表不同;Override是重写,子类方法覆盖父类方法。Overloaded方法可以改变返回值类型,但必须保持方法名和参数列表一致。 19. 构造器不能被override,但可以被重载。 20. 接口可以继承接口。抽象类可以实现接口,但不能继承具体类。抽象类可以有静态的`main`方法,但不会作为程序入口。 21. 在实现`clone()`方法时,通常会包含`super.clone()`调用来创建对象的副本。 22. 面向对象的特征包括封装、继承、多态。 23. Java通过方法重写(Override)和类型转换实现多态。 24. `abstract class`可以包含抽象方法和非抽象方法,可以有实例变量,而`interface`只能有抽象方法和常量,不能有实例变量。 25. `abstract`方法不能同时是`static`,不能同时是`native`,也不能同时是`synchronized`,因为这些特性与抽象方法的定义不兼容。 26. 内部类是定义在另一个类内部的类,分为静态内部类(Static Nested Class)和非静态内部类(Inner Class)。静态内部类像普通静态成员一样,可以直接通过类名访问,而非静态内部类需要外部类实例来创建。 27. 问题未完,但通常会讨论内部类的生命周期、访问限制、匿名内部类以及它们在实现回调和事件处理中的应用。 这份面试宝典覆盖了Java的基础语法、面向对象特性、异常处理、类与对象、接口与抽象类、多线程、内存管理等多个方面,是Java开发者准备面试的重要参考资料。