1. 抽象类和接口的区别
抽象类是用来捕捉子类的通用特性的 。它不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板
接口是抽象方法的集合。如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法。这就像契约模式,如果实现了这个接口,那么就必须确保使用这些方法。接口只是一种形式,接口自身不能做任何事情。
抽象类是重构的结果,接口是设计的结果
1.成员变量:
抽象类的成员变量是普通变量
接口的成员变量是公共静态常量
2.构造方法:
抽象类有构造方法,但是不能实例化
接口没有构造方法,也不能是实例化
3.成员方法:
抽象类的方法可以有抽象方法,也可以没有抽象方法
接口的方法默认是public abstract 修饰
接口JDK8后有静态方法和default 方法,子实现类默认实现default方法
JDK9后添加私有方法,用于方法的抽取
4.继承关系:
抽象类只能单继承类,不能多继承
接口可以多继承
链接: 抽象类和接口到底是什么垃圾——秒懂.
2. Java的基本数据类型
Java是一种强语言类型,意味着必须为每个变量声明一个类型,在Java中一共有8种基本类型(primitive type),4种整型,2种浮点类型,字符类型,布尔类型。
类型 | 大小 |
---|---|
byte | 1 |
short | 2 |
int | 4 |
long | 8 |
float | 4 |
double | 8 |
char | ‘A’ |
boolean | true/false |
基本数据类型是基于数值的,因此它并没有类的概念,这一思想与Java是纯面向对象语言这一特点相违背,但是依旧没有将基本数据类型舍弃。
对于基本数据类型明显的优点就是:
<1>存储的是具体数值,没有操作数据的方法,占用的内存空间小;
<2>存储位置是在栈的局部变量表中,并且存储的是具体数值,有更高的性能。
当然,缺点也是显而易见的,就是没有操作数据的方法。
3. 反射
4. Java实现多线程的两种方法
-
继承Thread类,重写run方法
-
实现Runnable接口,重写run方法
资源共享/不共享
继承的方式相当于一个线程只能干一件事情,接口实现可以多个多个线程干同一件事情
链接: 实现多线程的方式.
5. 解释程序开发中的同步和异步的概念
6. 如何实现单例模式,单例模式的几种写法
7. 类的序列化和反序列化
8. 内存泄漏的原因
9. Bean创建对象的2种方法
10. springMVC
11. Socket编程
12. 数据库是如何和model用ORM连接的
13. hashTable和hashMap的区别
14. 集合类型
15. 快速排序算法
16. 回文算法
17. 素数
18. 有序单链表的反转