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

需积分: 0 0 下载量 152 浏览量 更新于2024-07-22 收藏 1.12MB PDF 举报
"这是一本关于Java面试的资料,包含了丰富的Java基础知识和面试常见问题,旨在帮助求职者准备面试或面试官评估候选人。" 以下是根据给定文件信息整理的Java知识点详解: 1. **Java源文件与类的关系**:一个`.java`源文件可以包含多个类,但只能有一个公共类(public class),其他类可以是非公共类(非顶级类,如内部类)。 2. **goto关键字**:Java中没有`goto`关键字,它遵循结构化编程原则,鼓励使用流程控制结构如`if`、`for`、`while`等。 3. **&和&&的区别**:`&`是位运算符,而`&&`是逻辑运算符。在布尔表达式中,`&&`具有短路特性,只有当左侧表达式为真时才会计算右侧表达式。 4. **跳出多重嵌套循环**:在Java中,可以使用`break`语句跳出最内层循环;如果需要跳出所有嵌套循环,可以使用标签(label)配合`break`。 5. **switch语句的使用**:`switch`语句可以作用于`byte`, `short`, `char`, `int`, `枚举类型`以及`Java 7及以后版本的String`,但不能作用于`long`。 6. **short变量的赋值**:在原始类型中,`short s1 = 1; s1 = s1 + 1;`会涉及到类型提升,可能导致编译错误,因为`1 + 1`的结果是`int`类型。而`s1 += 1;`会自动转换回`short`类型。 7. **char存储中文字符**:`char`类型可以存储单个Unicode字符,包括中文汉字。 8. **效率计算2乘以8**:最有效率的方式是直接赋值`2 << 3`,利用位移运算。 9. **设计大整数计算器**:设计一个能处理大整数的计算器,需要考虑如何存储大整数(如字符串表示)、如何进行加减乘除等操作以及异常处理。 10. **final关键字**:final修饰的变量其引用不可变,对于对象来说,意味着对象的引用不能改变,但对象内部的状态可以变。 11. **"=="与equals的区别**:"=="比较的是对象的引用,而`equals`方法比较的是对象的内容。对于基本类型,"=="就是比较值;对于对象,"=="比较的是两个引用是否指向同一个对象,`equals`默认行为也如此,但可以通过重写来比较内容。 12. **静态变量与实例变量**:静态变量属于类,所有实例共享;实例变量属于对象,每个实例有自己的副本。 13. **static方法与非static方法**:不能从static方法内部直接调用非static方法,因为static方法在类加载时就存在,而实例方法依赖于对象。 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. **接口与继承**:接口可以继承接口;抽象类可以实现接口;抽象类可以继承具体类,但抽象类不能有静态的main方法。 21. **clone方法**:在实现`Cloneable`接口的类中,通常在`clone()`方法中会调用`super.clone()`。 22. **面向对象的特征**:封装、继承、多态。 23. **Java中的多态**:通过方法重写和接口实现实现多态,使得子类对象可以替代父类对象。 24. **abstractclass和interface的区别**:抽象类可以有方法实现,接口只能声明方法;一个类可以继承一个抽象类,但可以实现多个接口。 25. **abstract与static、native、synchronized**:abstract不能与static、native同时使用,但可以与synchronized一起使用。 26. **内部类**:内部类是定义在另一个类内部的类,分为静态嵌套类(StaticNestedClass)和非静态嵌套类(InnerClass)。静态嵌套类不持有对外部类的引用,而内部类可以访问外部类的私有成员。 27. **内部类与外部类成员的访问**:内部类可以直接访问外部类的所有成员,包括私有成员,但外部类不能直接访问内部类的私有成员。 28. **匿名内部类**:匿名内部类没有名字,常用于简洁地实现接口或继承类,它可以有局部变量,但必须是final的。 以上是基于给定文件的部分内容提炼的Java知识点,涵盖了基础语法、面向对象特性、类与接口、方法重写与多态等多个方面。这些知识是Java程序员面试和工作中常见的重点。