"Java面试宝典2013版,一本专为Java求职者准备的面试指南,涵盖了Java基础知识和面试常见问题。"
在Java面试中,了解并掌握以下知识点至关重要:
1. Java源文件规范:一个.java源文件中可以包含多个类,但只能有一个公共类(public class),其他类可以是非公共类。这些类之间没有特定的限制。
2. 关键字:Java中没有goto关键字,这是为了避免复杂的控制流程和提高代码的可读性。
3. &和&&的区别:&是逻辑与运算符,无论两边表达式是否为真都会执行;&&也是逻辑与,但只有当左边表达式为真时才会评估右边的表达式,称为短路运算。
4. 跳出多重嵌套循环:使用`break`语句可以跳出当前的多重嵌套循环,但是无法直接跳出外层循环,需要配合标签使用。
5. switch语句:switch不支持byte类型的常量表达式,但Java 7以后支持char和枚举类型,Java 14及以后版本支持字符串(String)。
6. short变量与运算:直接赋值可能会导致数据溢出,如`s1=s1+1`。而`s1+=1`会自动提升类型,避免溢出。
7. char存储中文:char可以存储单个Unicode字符,包括中文汉字,但需要注意编码问题,确保编码环境支持中文。
8. 计算效率:使用位运算符可以快速计算2的幂,如2乘以8可以表示为`1 << 3`。
9. 大规模计算器设计:设计一个计算器要考虑数值范围、精度、错误处理等因素,可能需要使用BigInteger类处理大整数。
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,但可以重载。
20. 接口与抽象类:接口可以继承接口,抽象类可以实现接口,抽象类可以继承具体类,但抽象类中的main方法不能声明为静态。
21. clone方法:通常在实现Cloneable接口的类中,clone()方法的第一行会调用`super.clone()`。
22. 面向对象特征:封装、继承、多态。
23. Java实现多态:通过接口或继承,以及方法的重写和重载来实现。
24. abstractclass和interface:抽象类可以有方法实现,可以有非抽象方法和成员变量;接口只有抽象方法和常量,强制实现。
25. abstract、static、native、synchronized结合:abstract不能与static和final结合,但可以与native结合,表示该方法的实现由JVM提供;static和synchronized可以结合,但不能与abstract和native结合。
26. 内部类:内部类是定义在另一个类中的类,分为匿名内部类、成员内部类、局部内部类和静态嵌套类。StaticNestedClass是静态嵌套类,不持有对外部类的隐式引用;InnerClass是非静态内部类,可以直接访问外部类的私有成员。
27. 内部类引用外部类:内部类可以引用外部类的成员,包括私有成员,但不能引用静态成员(除非静态内部类)。
28. A类继承B类,B类继承C类,如果A的子类对象去调用C类的非静态方法,将通过B类的引用来调用C类的方法。
以上知识点是Java面试中常见的问题,理解并熟练掌握它们能帮助求职者在面试中表现出色。