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 序列化?** - 序列化是将对象的状态转化为字节流的过程,便于存储或网络传输。实现序列化需要实现`java.io.Serializable`接口。例如: ```java class MyClass implements Serializable { // class body } ``` 7. **一个 ".java" 源文件是否可以包含多个类?** 是的,但只能有一个公共类(`public`类),其余的类可以是非公共的(`non-public`)。 8. **排序方法及快速排序示例** - 常见的排序算法有冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序等。 - 快速排序示例: ```java void quickSort(int[] arr, int low, int high) { if (low < high) { int pivotIndex = partition(arr, low, high); quickSort(arr, low, pivotIndex - 1); quickSort(arr, pivotIndex + 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变量一旦赋值后不能改变。 11. **继承时类的执行顺序** - 构造器调用顺序:先调用父类的构造器,然后调用子类的构造器。 12. **内部类的实现方式** - 成员内部类:属于类的成员,可以访问类的所有成员。 - 局部内部类:定义在方法、作用域或块中,只能在该作用域内使用。 - 静态内部类:可以独立于外部类实例存在,但仍然需要外部类的类名来引用。 13. **实现排序和序列化** - 排序:可以实现`java.util.Comparator`接口对自定义类型进行排序。 - 序列化:实现`Serializable`接口,如`java.io.ObjectOutputStream.writeObject(Object)`用于序列化对象,`java.io.ObjectInputStream.readObject()`用于反序列化。 14. **在 COLLECTION 框架中,实现比较要实现的接口** - 实现`java.util.Comparator`接口,自定义比较逻辑。 15. **插入法排序代码片段** 插入排序通常涉及对数组元素的比较和交换,这里省略具体实现。 16. **截取字符串的函数** - 这个函数需要确保截取过程中汉字不被分割,通常会检查字符编码(如UTF-8)并在边界处处理。 17. **打印昨天的当前时刻** 可以使用`java.util.Calendar`或`java.time`包来获取昨天的日期,并格式化为字符串表示当前时刻。 这些知识点涵盖了Java面向对象的基本概念,包括构造器、访问修饰符、事件处理、内存管理、序列化、多态、内部类、排序算法等,是Java面试中常见的问题。理解和掌握这些知识点对于Java开发者来说至关重要。
剩余63页未读,继续阅读
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Springboot+Vue学生网上选课系统的设计-毕业源码案例设计(高分项目).zip
- 基于Springboot+Vue医疗报销系统的设计与实现-毕业源码案例设计(95分以上).zip
- 风储模型中,功率分配模型
- FPGA Mipi协议采集解码工程,可以接收ov5640摄像头数据,也可以移植到其他的CSI摄像头中
- 基于方程的comsol气泡空化模型,参考文献如图
- linux常用命令大全常用.txt
- linux常用命令大全常用.txt
- linux常用命令大全常用.txt
- Halcon联和C#做的运动控制加视觉定位小案例,板卡用的是正运动的ECI1408,,支持建模和标定的保存和加载,此案例非常适合想学运动控制视觉定位的人学习
- frpc-darwin-arm64
- 异步电机直接转矩控制算法模型正常运行R2016b版本及以上均可运
- comsol空芯反谐振光纤spr
- 网络加速器,加速访问huggingface+GitHub
- 基于matlab的交流电机动态方程,用于交流电机动态分析 输入电机的额定功率(kW)、电机的额定转速(r min)、转子外径(m)、铁心长(m)转子槽数、电机极对数 等参数,输出转速变化、力矩变
- ChatTTS是一种专门为LLM助手等对话场景设计的文本到语音模型
- 01超级染色体小游戏源码.zip