Java面试必备知识点:基础到高级挑战

需积分: 10 1 下载量 26 浏览量 更新于2024-07-30 收藏 1.97MB PDF 举报
"Java面试题宝典" 这是一本专门针对Java程序员面试的指南,涵盖了从基础知识到高级概念的各种问题。以下是对其中部分知识点的详细解释: 1. **一个.java源文件中的类限制**:一个.java文件可以包含多个类,但只能有一个公开的类(public class),其他类可以是非公开的(非public)。非内部类(non-inner classes)如果非公开,可以在同一文件中定义。 2. **Java中没有goto语句**:Java遵循结构化编程原则,不支持goto语句,以鼓励更清晰的代码结构。 3. **& 和 && 的区别**:& 是位运算符,用于按位与操作;而 && 是逻辑与运算符,只有当左侧表达式为真时才会评估右侧。在条件判断中,&& 用于短路逻辑,提高效率。 4. **跳出多重嵌套循环**:在Java中,使用`break`语句可以跳出当前循环,而`return`不仅可以结束方法执行,还能跳出所有嵌套循环。 5. **switch 语句的适用类型**:switch 适用于byte, char, short, int,枚举类型(自Java 5起)以及String(自Java 7起)。不能直接用于long或浮点类型。 6. **short 类型变量赋值问题**:直接赋值可能导致数据溢出,因为short + int 的结果默认是int类型。因此,使用`s1 += 1`可以避免类型转换错误,因为编译器会自动处理。 7. **char 类型与中文字符**:char变量可以存储一个Unicode字符,所以它可以存储中文字符,因为每个中文字符在Unicode中占两个字节。 8. **效率计算2乘以8**:最有效率的方法是直接赋值`int result = 2 << 3;`,利用位移运算。 9. **设计亿级计算器**:设计一个计算器要考虑精度问题,可以使用BigDecimal类处理大整数和高精度计算。 10. **final 关键字**:final修饰的变量,其引用一旦初始化后不可改变,但如果是对象引用,对象的内容可以改变,除非对象本身也是final的。 11. **"=="与equals方法**:"=="比较的是对象的引用,而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是重写,子类重新实现父类方法。Overloaded方法不能改变返回值类型。 19. **构造器不可override**:构造器不是方法,不能被覆盖,但可以被重载。 20. **接口与抽象类关系**:接口可以继承接口;抽象类可以实现接口;抽象类可以继承具体类,但Java不支持多重继承(一个类只能继承一个父类);抽象类中可以有静态的main方法。 21. **clone()方法**:通常在重写clone()方法时,会包含`super.clone()`来创建对象的浅复制。 22. **面向对象特征**:封装、继承、多态。 23. **Java多态机制**:通过方法的重写和向上转型实现,允许多种不同的对象对同一消息作出响应。 24. **abstract class与interface**:抽象类可以有非抽象方法和字段,可以有构造器,可以继承另一个类;接口只有抽象方法和常量,不能有构造器,可以继承多个接口。 25. **abstract、static、native、synchronized的组合**:这些修饰符不能同时用于一个方法。抽象方法不能是静态的或native的,也不能是synchronized的。 26. **内部类**:内部类是定义在一个类内部的类,分为静态内部类(StaticNestedClass)和非静态内部类(InnerClass)。静态内部类如同普通静态成员,可以直接通过外部类引用;非静态内部类则依赖于外部类实例,可以访问外部类的所有成员。 以上内容只是Java面试题宝典的一部分,实际面试中还会涵盖更多主题,如集合框架、并发编程、异常处理、IO流、网络编程、设计模式等。准备面试时,全面理解和熟练掌握这些知识点至关重要。