Java面试必备:基础篇

需积分: 13 1 下载量 38 浏览量 更新于2024-09-11 收藏 739KB DOC 举报
"这是一份全面的Java面试资料,涵盖了Java基础知识,如语言特性、类与对象、数据类型、运算符、控制结构、异常处理、内存管理等多个方面。资料中包括了面试常问问题及答案,旨在帮助求职者准备Java相关的技术面试。" 1. Java源文件可以包含多个类,但只能有一个公开的类(public class),其余的类可以是非公开的(非public)。 2. Java语言中没有goto语句,它遵循结构化编程原则,鼓励使用流程控制结构如if、while、for等来控制程序流程。 3. &是位操作符,&&是逻辑操作符。位操作符会执行实际的位运算,而逻辑操作符在布尔表达式中使用,只有当左侧为真时才会评估右侧。 4. 要跳出多重嵌套循环,可以使用label + break语句。例如:`outer: for {... inner: for {... if (条件) break outer; ... } }` 5. switch语句可以作用于byte、char、short和int类型,但在Java 7以后,也可以作用于枚举类型。但是不能直接作用于long或String类型,除非使用Java 14及以上版本的switch表达式。 6. 对于short变量,直接赋值`s1=s1+1`会导致数据溢出,因为结果会自动提升为int类型。正确做法是`s1+=1`,编译器会自动处理类型转换。 7. char类型可以存储一个中文汉字,因为UTF-16编码中一个汉字通常占用两个字节。 8. 计算2乘以8最有效率的方法是直接赋值:`int result = 2 * 8;` 9. 设计一个百亿计算器要考虑大数运算、精度问题和性能优化,可能需要使用BigInteger类来处理大整数。 10. 使用final修饰变量,意味着该变量一旦赋值后就不能再改变,对于引用类型,是指引用不可变,但引用的对象内容仍可变。 11. "=="比较的是对象的引用,而equals()比较的是对象的内容。基本类型比较用"==",对象比较推荐用equals()。 12. 静态变量属于类,实例变量属于对象。静态变量被所有类的实例共享,实例变量只属于特定对象。 13. 不可以从static方法内部直接调用非static方法,因为static方法在类加载时就存在,而非static方法依赖于对象。 14. Integer是int的包装类,它们之间可以自动装箱拆箱。Integer对象的创建需要额外的内存开销,而int是原始类型,效率更高。 15. Math.round(11.5)等于12,Math.round(-11.5)等于-11。 16. 未提供代码,无法分析其不妥之处。通常需要注意变量初始化、异常处理、边界条件等问题。 17. public表示全局访问,private表示私有访问,protected表示包内和子类访问,无修饰符表示包内访问。访问修饰符决定了类、方法和变量的可见性。 18. Overload是重载,可以改变参数列表,但不能改变返回值类型。Override是重写,子类方法必须与父类方法签名完全一致,并且不能降低访问权限。 19. 构造器不能被override,但可以重载。 20. 接口可以继承接口。抽象类可以实现接口,但不能继承具体类。抽象类中可以有静态的main方法,但不能实例化。 21. 实现clone()方法时,通常会调用super.clone()以创建对象的浅复制。 22. 面向对象的特征包括封装、继承、多态和抽象。 23. Java通过方法重写(Override)和方法重载(Overload)实现多态。 24. abstract class是抽象类,可以包含抽象方法和非抽象方法,可以有构造器。interface是接口,只能包含抽象方法和默认方法,不能有构造器。 25. abstract method不能同时是static、native或synchronized,因为它们的语义与抽象方法相冲突。 26. 内部类是定义在另一个类内部的类,分为静态嵌套类(StaticNestedClass)和非静态嵌套类(Inner Class)。静态嵌套类不持有对外部类的引用,可以直接创建实例;非静态嵌套类需要外部类实例才能创建。 27. 内部类可以引用包含类的成员,包括私有成员,但不能引用静态成员(除非通过外部类引用)。如果内部类是静态的,那么它可以引用静态成员。 这份面试资料详细列举了Java开发中的关键知识点,对求职者进行面试准备非常有帮助。掌握这些内容将有助于理解Java语言的核心概念和最佳实践。