Java面试必备:经典笔试面试题解析

需积分: 1 0 下载量 144 浏览量 更新于2024-10-20 收藏 33KB DOC 举报
"Java面试的经典问题" 在Java面试中,面试官通常会考察候选人的基础知识、编程能力以及对面向对象编程的理解。以下是一些常见问题的详细解释: 1. 一个.java源文件可以包含多个类,但只能有一个公开类(public class),其他类可以是非公开的,比如私有类(private class)或包访问类。 2. Java的简单数据类型包括:byte(1字节)、short(2字节)、int(4字节)、long(8字节)、char(2字节)、float(4字节)、double(8字节)和boolean(不占用字节,逻辑值)。对应的封装类分别是:Byte、Short、Integer、Long、Character、Float、Double和Boolean。引用数据类型包括类(class)、接口(interface)和数组。 3. String是不可变的,而StringBuffer是可变的,所以在需要频繁修改字符串内容时,StringBuffer更高效。 4. 在static修饰的方法内,不能直接使用非静态变量,因为静态方法属于类,而非静态变量属于实例。也不能直接调用非静态方法,但可以通过创建对象来调用。 5. 排序方法有冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序等。冒泡排序通过相邻元素比较交换实现升序,快速排序则是通过分治策略实现高效排序。 6. Java没有goto关键字。它是许多编程语言中的跳转语句,但在Java中被弃用。 7. 数组有length属性,不是方法。String有length()方法,用于获取字符串的长度。集合的长度通常用size()方法获取。 8. &是按位与运算符,&&是逻辑与运算符。前者会计算所有位,后者在左操作数为false时就不再计算右操作数。 9. switch不能直接作用于byte,但Java 7以后可以用枚举类型。不能作用于long,但可以作用于String(Java 7以后)。 10. break用于退出当前循环或switch语句;continue跳过当前循环剩余部分,继续下一轮循环;return从方法中返回值或结束方法执行。 11. 单例模式确保一个类只有一个实例,并提供全局访问点。简单的单例模式实现如下: ```java public class Singleton { private static Singleton instance; private Singleton() {} public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } } ``` 12. Java的作用域修饰符有public、protected、default(无修饰符)和private。public对所有类可见,protected在同一包和子类可见,default在同一包可见,private仅在本类可见。 13. final用于声明常量或防止变量、方法和类被修改。finally用于异常处理,确保代码块无论是否发生异常都会被执行。 14. 垃圾回收机制(GC)优点:自动内存管理、避免内存泄漏、提高程序稳定性。*(这部分可能需要展开讲解GC的工作原理和不同GC算法) 15. JVM加载class文件的机制涉及类加载器(ClassLoader)和双亲委派模型,确保类的唯一性。 16. "=="比较的是对象的引用,equals方法比较的是对象的内容。对于基本数据类型,两者等价;对于对象,"=="比较的是两个对象是否指向同一内存地址,equals比较的是对象的内容是否相等。 17. 程序的运行结果是A:true。因为short类型的s1和s2相加不会超过int的范围,所以它们相加的结果会自动提升为int类型,然后赋值给s。由于int类型的2与short类型的2在内存中表示相同,所以s==2为true。 18. 程序的输出结果是B:false。浮点数的比较不精确,即使看起来数值相同,它们在内存中的表示可能存在微小差异,因此f1==f2的结果为false。 二、面向对象程序设计 1. 面向对象的四大特性是封装、继承、多态和抽象。 2. this指代当前对象,super用于访问父类成员。this()用于初始化当前类的构造器,super()用于调用父类的构造器。 3. 重载(Overloading)是方法名相同但参数列表不同的方法,发生在同一个类中。重写(Overriding)是子类对父类方法的重新实现,方法名、返回类型和参数列表都必须与父类一致。 4. final修饰的方法不能被重写,但可以被继承。final类不能被继承。 5. "..."后面的问题可能是关于访问修饰符、构造器、继承和重写等相关概念,这部分需要完整的题目才能给出详细解答。