一.基础
- Java面向对象的三大特性,并说出你的理解.
-
Collection和Collections有什么区别.
Collection是一个集合接口,它提供了对集合对象进行基本糙所的通用接口方法.Collection接口在Java类库中有很多具体的实现,例如�LinkedList Set等;
Collections是一个包装类它包含有各种有关集合操作的静态多态方法。此类不能实例化,是一个工具类,有类似排序等功能,服务于Java的Collection框架。
-
抽象类与接口的区别.
抽象类可以有构造方法
接口不行
抽象类可以有普通成员变量
接口没有
抽象类可以有非抽象的方法
接口必须全部抽象
抽象类的访问类型都可以
接口只能是 public abstract
一个类可以实现多个接口
但只能继承一个抽象类
-
类能不能多继承类,能不能多实现接口.接口能不能多继承接口,接口能不能实现接口.
一个类只能继承一个类,但是可以实现多个接口;
一个接口可以继承多个接口,但是不能实现接口
-
重写(覆写)与重载的区别.
- 重写是子类对父类的函数进行重新定义,即子类中定义的方法与其父类具有相同的方法名和参数,重写的时候子类不能函数的访问权限不能少于父类的
- 重载(Overloading)是
是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。
- 重写是子类对父类的函数进行重新定义,即子类中定义的方法与其父类具有相同的方法名和参数,重写的时候子类不能函数的访问权限不能少于父类的
- 构造方法能不能被覆写.
- 覆写父类的方法,方法的哪个组成部分可以不同.
-
能不能继承String类.
不能,String是final类型的,不能被继承
- String/StringBuffer/StringBuilder的区别.
- final/finally/finalize的区别.
- final 用于声明属性,方法和类, 分别表示属性不可变, 方法不可覆盖, 类不可继承.
-
finally 是异常处理语句结构的一部分,表示总是执行该代码块
- finalize 是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等. JVM不保证此方法总被调用.
- finalize 是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等. JVM不保证此方法总被调用.
- throw与throws的作用.
- try…catch…finally语句块的用法,哪部分可以省略.
- 数据流的分类,常用的数据流.
-
基本概念,JDK/JRE/JVM
- JDK Java Development Kit Java开发包.包含JRE和Java的常用类库.
- JRE Java Runtime Environment Java运行时环境.可以单独在Oracle官网下载,运行Java程序必须安装.
- JVM Java Virtual Machine Java虚拟机.Oracle官网不提供单独下载,集成在JRE中.Java程序最终运行在JVM中. 在搭建环境时,只需要安装JDK即可.
- JDK Java Development Kit Java开发包.包含JRE和Java的常用类库.
- 内部类与静态内部类有什么区别.
- switch能否作用在byte/char/long/String上.
- toString/equals/hashCode分别是谁的方法,一般用来干嘛.
- Java中如何退出多重循环.
- 如下所示:
// 标记双重循环开始的位置
ABC:
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
// 在某个时刻结束双重循环
break ABC;
}
}
- 实例方法可不可以访问静态属性,静态方法可不可以访问实例属性.
二.进阶
- Java中Class类是用来干嘛的.
- 说一下反射可以干什么.
- 开启线程有几种方式,线程池的执行原理.
-
Java中存在几种引用的方式.
- 强引用:如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。
- 软引用:如果一个对象具有软引用,内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。SoftReference的特点是它的一个实例保存对一个Java对象的软引用,
该软引用的存在不妨碍垃圾收集线程对该Java对象的回收。
- 弱引用:只具有弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它
所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。
- 虚引用:如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收。虚引用主要用来跟踪对象被垃圾回收的活动。虚引用与软引用和弱引用的一个区别在于:虚引用必须和引用队列(ReferenceQueue)联合使用。
- 强引用:如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。
引用类型 |
被GC回收时间 |
用途 |
生存时间 |
强引用 |
从来不会 |
对象的一般形态 |
JVM停止运行时 |
软引用 |
内存不足时 |
对象缓存 |
内存不足时终止 |
弱引用 |
在GC运行时 |
对象缓存 |
GC运行后停止 |
- Java的垃圾回收机制.
- 存在继承关系时,子类与父类构造方法的调用顺序.
- Error与Exception有什么区别.
- List/Set/Map三者的区别.
- 如何比较两个对象的大小.或者换句话说,如何让对象之间有可比性.
- 面向对象的六大原则.
- 简述一下你了解的设计模式.
- 单例模式什么情况下会失效.
- 内存泄露与内存溢出.