Java面试必备知识:基础篇

需积分: 0 4 下载量 179 浏览量 更新于2024-07-25 收藏 605KB PDF 举报
"Java程序员面试宝典包含了众多Java编程的基础及进阶知识,适用于准备面试的Java软件工程师。本文档提供了各种面试常见的问题和解答,旨在帮助求职者巩固和提升Java技术能力。" 以下是该资源中涉及的部分Java知识点的详细说明: 1. **Java源文件与类的关系**:一个.java源文件可以包含多个类,但只能有一个公共类(public class),且公共类的名称必须与文件名相同。 2. **goto关键字**:Java中没有goto关键字,它与其他一些编程语言不同,如C或C++。 3. **&和&&的区别**:&是位运算符,用于按位进行逻辑与操作;&&是逻辑与运算符,只有当两边的表达式都为真时,结果才为真。在条件判断中,&&具有短路效果,如果左边表达式为假,右边的表达式将不会执行。 4. **跳出多重嵌套循环**:在Java中,可以使用`break`语句配合标签(label)来跳出多重循环,或者在循环内部使用`return`语句结束整个方法。 5. **switch语句**:switch不能直接作用于byte、long或String类型,但在Java 7及以上版本,可以使用`switch`处理枚举类型和String。 6. **short变量的赋值**:直接赋值`s1=s1+1`可能会超出short的范围,需要强制类型转换;而`s1+=1`会自动提升类型再进行加法运算,然后适当地降低类型,避免溢出。 7. **char存储中文**:char类型可以存储单个Unicode字符,因此可以存储中文汉字。 8. **计算2乘以8**:最有效率的方式是使用`2 * 8`,因为Java中的乘法运算符是直接支持的。 9. **设计大整数计算器**:设计一个能处理大整数的计算器,需要考虑使用String存储大整数,自定义加减乘除方法,并处理进位和借位的情况。 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,round方法四舍五入到最接近的整数。 16. **代码不妥之处**:未提供具体代码,无法分析。 17. **作用域**:public表示全局可访问,private仅在本类内访问,protected允许同包及子类访问,不写(默认)则为包级私有,仅在同包内可见。 18. **Overload和Override**:Overload是重载,方法名相同但参数列表不同;Override是重写,子类方法覆盖父类方法,方法名、返回类型和参数列表必须完全相同。 19. **构造器是否可被override**:构造器不能被重写(Override),但可以重载(Overload)。 20. **接口与继承**:接口可以继承接口,抽象类可以实现接口,但抽象类不能继承具体类(concrete class)。静态的main方法在抽象类中是可以存在的。 21. **clone方法**:在实现clone()时,通常会包含`super.clone()`调用,以创建并返回对象的一个副本。 22. **面向对象特征**:封装、继承、多态。 23. **Java多态**:通过接口、抽象类和方法的重写实现多态,使得不同的子类对象能够对同一消息做出不同的响应。 24. **abstractclass和interface的区别**:抽象类可以有方法实现,可以有非抽象方法和字段,可以有构造器;接口只有方法声明,不能有实现,不能有非静态字段。 25. **abstract与static、native、synchronized的组合**:abstract不能与static和final一起使用,因为它们的含义相冲突;abstract方法不能是native或synchronized,因为它们涉及到具体的实现细节。 26. **内部类**:内部类是定义在一个类内部的类,分为静态内部类(StaticNestedClass)和非静态内部类(InnerClass)。静态内部类不需要外部类的实例就可以创建,非静态内部类需要外部类实例。 27. **内部类与外部类的交互**:内部类可以直接访问外部类的所有成员,包括私有成员,但外部类不能直接访问内部类的私有成员,除非通过内部类的实例。 以上只是部分Java面试常见问题的解析,实际面试中可能还会涉及更多Java语言特性和设计模式等内容。