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

需积分: 10 2 下载量 40 浏览量 更新于2024-10-06 收藏 771KB DOC 举报
"Java面试宝典_2010" Java面试宝典是针对Java开发者在面试准备过程中的一份重要参考资料。2010年的版本可能涵盖了当时主流的Java技术点,旨在帮助求职者巩固基础知识,提升面试表现。以下是这份宝典中提及的一些关键知识点的详细解释: 1. **Java源文件与类的关系**:一个.java源文件可以包含多个类,但只能有一个公共类(public class),其他非公共类没有限制。 2. **goto关键字**:Java中不存在goto关键字,这与C/C++等语言不同,它鼓励使用结构化的控制流程。 3. **&和&&的区别**:&是逻辑与运算符,无论两边条件如何都会进行计算;而&&是短路与运算符,如果左侧为假,右侧将不再执行。 4. **跳出多重循环**:使用`break`语句可以跳出最内层的循环,`break label;`可以跳出指定的循环。`return`语句除了结束当前方法,也可以达到类似效果。 5. **switch语句的适用类型**:在Java 7及之前,switch仅支持byte, char, short, int,枚举类型(enum);Java 7之后,增加了对字符串(String)的支持。 6. **short变量增加**:直接赋值如`s1=s1+1`可能会导致数据溢出,因为编译器会将结果转换为int类型,需要强制类型转换回short。而`s1+=1`则会自动处理这个问题。 7. **char存储中文**:char类型可以存储单个Unicode字符,包括中文,因为UTF-16编码每个中文字符占用两个字节。 8. **效率计算2乘以8**:最简单的方法是`2 << 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. **构造器不能被覆盖**:构造器不是方法,不能被重写,但可以通过子类构造器调用父类构造器实现继承初始化。 20. **接口与抽象类**:接口可继承接口,抽象类可以实现接口,但不能继承具体类;抽象类可以有静态main方法,但不能实例化。 21. **clone()方法**:通常在重写`clone()`时,需要调用`super.clone()`并声明`@Override`注解。 22. **面向对象特征**:包括封装、继承、多态。 23. **Java多态机制**:通过方法的重写(Override)和向上转型(Upcasting)实现,使得不同类的对象可以共享相同的接口。 24. **abstractclass与interface区别**:抽象类可以有方法实现,可以有非抽象方法和成员变量;接口只有方法声明,不能有任何实现。 25. **抽象方法的限制**:abstract不能与static、native、synchronized同时使用,因为它们的性质与抽象方法相冲突。 26. **内部类**:内部类是定义在另一个类内部的类,分为静态嵌套类(Static Nested Class)和非静态嵌套类(Inner Class)。静态嵌套类不持有外部类的引用,非静态嵌套类可以直接访问外部类的私有成员。 27. **内部类与外部类的交互**:内部类可以直接访问外部类的所有成员,包括私有成员,但外部类不能直接访问内部类的私有成员。 28. **匿名内部类**:没有名字的内部类,常用于简洁地实现接口或抽象类,通常用于一次性使用的场景。 这些知识点涵盖了Java的基础语法、面向对象特性、异常处理、集合框架、多线程、IO流、网络编程等多个方面,是Java开发者必备的知识体系。掌握这些内容不仅有助于面试,也对日常开发工作有着深远的影响。