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

需积分: 0 0 下载量 173 浏览量 更新于2024-07-28 收藏 832KB DOC 举报
"java最新面试宝典" 在Java编程语言中,面试经常涉及到一系列核心概念和技术。以下是一些关键知识点的详细解释: 1. **Java源文件与类的关系**:一个.java源文件可以包含多个类,但只能有一个公开的类(public class),且该类名需与文件名相同。 2. **goto关键字**:Java中没有goto关键字,它鼓励使用结构化编程和控制流语句,如if、while、for和break。 3. **&和&&的区别**:&是逻辑与运算符,无论两边条件如何都会执行,而&&是短路与,如果左边为假,则不会执行右边表达式。 4. **跳出多重嵌套循环**:在Java中,可以使用`break`语句跳出最内层循环,`return`则能退出整个方法。 5. **switch语句的限制**:switch可以作用于byte、char、short和int,以及枚举类型(enum),但不能直接作用于long或String。Java 7以后,对于String的支持可以通过使用`switch (Objects.requireNonNull(str))`来实现。 6. **short变量加法**:直接使用`s1=s1+1`会导致编译错误,因为这会产生int类型的中间结果。而`s1+=1`会自动装箱和拆箱,使得操作正确。 7. **char型变量与中文字符**:char变量可以存储一个Unicode字符,因此理论上可以存储中文汉字,但要注意编码问题,确保使用正确的字符集。 8. **计算2乘以8**:最有效率的方式是使用`2 << 3`,利用位移运算。 9. **设计大整数计算器**:可以使用BigInteger类来处理大整数运算,它提供了所有基本的算术操作。 10. **final关键字**:final修饰的变量,其引用一旦赋值后不可改变,对于引用类型意味着引用的对象不能变,但对于基本类型,变量的值不能改变。 11. **"=="与equals的区别**:"=="比较的是对象的引用,而equals()比较的是对象的内容。对于非重写equals的类,两者基本一致;对于重写了equals的类(如String),则比较内容。 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方法**:在重写Object的clone方法时,通常会包含`super.clone()`以创建对象的浅复制。 22. **面向对象特征**:封装、继承、多态。 23. **Java多态机制**:通过方法的重写(Override)和接口的实现(Implements)实现多态性。 24. **abstractclass与interface的区别**:抽象类可以有非抽象方法,可以有构造器,可以有成员变量,而接口只有抽象方法,不能有成员变量,但可以有默认方法。 25. **abstract、static、native、synchronized的组合**:abstract不能与static和final一起使用,因为它们的性质相冲突。abstract不能与native一起使用,因为抽象方法没有实现。static和synchronized可以一起使用。 26. **内部类**:内部类是定义在另一个类内部的类,分为静态嵌套类(StaticNestedClass)和非静态嵌套类(InnerClass)。静态嵌套类与外部类之间没有实例关系,而内部类可以直接访问外部类的私有成员。 27. **内部类的限制**:内部类可以访问外部类的所有成员,包括私有成员,但外部类不能直接访问内部类的非静态成员,需要通过内部类的实例访问。 28. **匿名内部类**:在不需要创建类的实例,只用一次的情况下,可以使用匿名内部类,它可以实现接口或继承类,并在定义时直接创建对象。