Java面试必备知识点:面向对象、构造器、继承与多态

需积分: 15 2 下载量 105 浏览量 更新于2024-07-19 收藏 312KB DOC 举报
"JAVA 综合面试题.doc" Java面试题涵盖了多个核心概念,这些知识点对于理解和熟练掌握Java编程至关重要。以下是对这些知识点的详细解释: 1. **super()与this()的区别** - `super()` 用于在子类构造器中调用父类的构造器,确保父类的初始化工作得以完成。 - `this()` 用于在一个类的构造器中调用本类的其他构造器,使得代码复用更加便捷。 2. **作用域public, protected, private, 以及默认的区别** - `public` 访问修饰符允许任何包内的类访问。 - `protected` 只允许同包内的类和不同包下的子类访问。 - `private` 只允许在同一类内部访问。 - 默认(无修饰符):只允许同包内的类访问。 3. **编程输出图形** - 这通常涉及使用循环和控制结构来打印特定的字符或空格组合,例如星号组成的金字塔或矩形。 4. **JAVA的事件委托机制和垃圾回收机制** - **事件委托**:在Java GUI编程中,事件委托指的是将事件处理器注册到某个组件上,当事件发生时,由事件源触发处理。 - **垃圾回收机制**:Java自动管理内存,通过垃圾收集器回收不再使用的对象,释放内存空间。 5. **跳出多重嵌套循环** - 使用 `break` 语句可以直接退出最内层循环。 - 使用 `return` 语句不仅可以结束循环,还可以结束整个方法并返回结果(如果有的话)。 6. **Java序列化** - Java序列化是将对象转换为字节流的过程,便于存储或网络传输。 - 实现序列化,需要实现 `Serializable` 接口。例如: ```java class MyClass implements Serializable { private static final long serialVersionUID = 1L; // 类的属性... } ``` 7. **单个.java文件中的类限制** - 一个.java文件可以包含多个类,但只能有一个公开的(public)类,且该类的名称需与文件名相同。 8. **排序算法** - 插入排序、冒泡排序、选择排序是基础排序算法。Java中实现快速排序示例: ```java void quickSort(int[] arr, int low, int high) { if (low < high) { int pi = partition(arr, low, high); quickSort(arr, low, pi - 1); quickSort(arr, pi + 1, high); } } int partition(int[] arr, int low, int high) { int pivot = arr[high]; int i = (low - 1); for (int j = low; j < high; j++) { if (arr[j] < pivot) { i++; swap(arr, i, j); } } swap(arr, i + 1, high); return i + 1; } void swap(int[] arr, int i, int j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } ``` 9. **Overload与Override的区别** - **Overload(重载)**:发生在同一类中,方法名相同但参数列表不同(参数数量、类型或顺序)。 - **Override(重写)**:发生在子类中,子类的方法必须与父类中被重写的方法有相同的名称、参数列表和返回类型,且访问权限不能更低,不能抛出更宽泛的异常。 10. **Final类的特点** - **属性常量**:final关键字可以声明常量字段,一旦赋值后不可更改。 - **方法不可覆盖**:final方法不允许子类重写。 - **类不可继承**:final类不能被其他类继承。 以上就是Java面试中常见的一些知识点,涵盖面向对象、内存管理、程序结构等多个方面。理解并掌握这些知识点对于提升Java编程技能和通过面试至关重要。
2009-09-17 上传
1. 用代码示例一个多态的例子 2. java的基本数据类型包括哪些,String是基本的数据类型吗 ? 3. int 和 Integer 有什么区别 4. String 和StringBuffer的区别 5. Collection 和 Collections的区别。 6. &和&&的区别。 7. Overload和Override的区别,试用java代码举例。 8. error和exception有什么区别? 9. abstract class和interface有什么区别? 10. final, finally, finalize的区别,试用java代码示例。 11. 什么时候用assert。 试给出例子 12. forward 和redirect的区别 13. GC是什么? 为什么要有GC? 14. short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 15. Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 16. String s = new String("xyz");创建了几个String Object? 17. 设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 18. Java有没有goto? 19. 启动一个线程是用run()还是start()? 20. 应用服务器有那些,列出你所知道的例子? 21. 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类 22. Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 23. 它们有何区别? 24. 构造器Constructor是否可被override? 25. 是否可以继承String类? 26. swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上? 27. try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会 28. 编程题: 用最有效率的方法算出2乘以8等於几? 29. 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 30. 当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 31. 编程题: 写一个Singleton的示例。 32. 数组有没有length()这个方法? String有没有length()这个方法? 33、排除错误 interface Playable { void play(); } interface Bounceable { void play(); } interface Rollable extends Playable, Bounceable { Ball ball = new Ball("PingPang"); } class Ball implements Rollable { //… }