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

5星 · 超过95%的资源 需积分: 10 33 下载量 152 浏览量 更新于2024-07-19 收藏 2.18MB PDF 举报
"Java面试宝典2017版" Java面试是评估开发者技能的重要环节,这份2017年的Java面试宝典包含了诸多基础及进阶问题,旨在帮助面试者准备Java相关的技术面试。以下是对其中一些关键知识点的详细解释: 1. 一个`.java`源文件可以包含多个类,但只能有一个公共类(public class),并且公共类的名称必须与文件名相同。 2. Java中没有`goto`关键字,它在Java中是不被支持的,编程时需要使用其他控制流结构如`break`或`continue`来替代。 3. `&`是位运算符,`&&`是逻辑与运算符。`&`在任何时候都会执行两边的操作,而`&&`则会根据左边的操作结果决定是否执行右边的表达式,这是一种短路行为。 4. 要跳出多重嵌套循环,可以使用`break`语句配合标签(label)来实现。 5. `switch`语句不能作用于`byte`,因为`switch`只支持`byte`, `short`, `char`, `int`,以及枚举类型和`String`(Java 7以后)。 6. 对于`short s1 = 1;`,`s1 = s1 + 1;`会丢失精度,因为结果会自动提升为`int`类型。而`s1 += 1;`会自动进行类型转换,保持`short`类型。 7. `char`型变量可以存储一个中文汉字,因为UTF-16编码每个字符占用两个字节。 8. 计算2乘以8的最有效率方式是`2 << 3`,利用位移操作。 9. 设计一个能处理一百亿的计算器要考虑数据类型的选择,通常使用`BigInteger`类来处理大整数计算。 10. `final`关键字修饰变量时,引用不能变,但引用的对象如果可变,其内容可以改变。如果对象不可变(如`String`),则整个对象都不能改变。 11. `==`比较的是对象的引用,而`equals()`方法比较的是对象的内容。对于基本类型,两者意义相同;对于对象,`equals()`通常用于比较内容。 12. 静态变量属于类,实例变量属于对象。静态变量在类加载时初始化,实例变量在对象创建时初始化。 13. 不能从`static`方法内部直接调用非`static`方法,因为`static`方法不依赖于任何对象,而非`static`方法需要对象实例。 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`是重写,子类继承父类时可以覆盖父类的同名方法。重载不改变返回类型,而重写可以改变方法体,但不能改变返回类型、访问权限和参数列表。 19. 构造器(Constructor)不能被`override`,但可以被重载。 20. 接口可以继承接口,抽象类可以实现接口,但不能继承具体类。抽象类中可以有静态的`main`方法,但不能作为程序的入口点。 21. 写`clone()`方法时,通常会包含`super.clone()`,以实现对象的浅复制。 22. 面向对象的特征包括封装、继承、多态。 23. Java中实现多态主要依靠方法的重写(Override)和向上转型(Upcasting)。 24. `abstract class`可以有方法实现,可以有实例变量,可以有构造方法。`interface`不能有方法实现,只能有常量和抽象方法。 25. `abstract`方法不能同时是`static`,不能是`native`,也不能是`synchronized`,因为这些特性与抽象方法的定义相冲突。 26. 内部类(Inner Class)是定义在另一个类内部的类,分为成员内部类(Static Nested Class)和局部内部类。成员内部类可以访问外部类的所有成员,而静态内部类不能直接访问外部类的非静态成员。 27. 内部类的特点在于它可以访问外部类的私有属性和方法,提供了一种紧密耦合的机制,但也会增加内存开销。 以上只是面试宝典中的一部分内容,完整的资料会涵盖更多关于异常处理、集合框架、IO流、多线程、网络编程、JVM内存管理等Java核心知识点。通过深入理解和掌握这些内容,可以帮助开发者在面试中表现出色。