##说说抽象类和接口的异同
相同点:不能实例化,接口的实现类或抽象类的子类实现了接口或抽象类中的方法后才能实例化。
不同点:
1,从单继承和多继承的角度
2,从变量的角度
3,从方法修饰符,方法的角度
4,从构造方法的角度

##运行时异常及异常处理方法(try throws)
函数内抛异常,函数上不用声明,编译照样通过。
try catch finally,组合种类,说说return在三个地方的返回情况。
异常子父类覆盖情况。子类抛异常必须是父类的子类或子集。父类不抛异常,子类只能try catch.
##Object类有哪些方法?
十一个方法
##如何判断两个对象相等 Object.equals(obj1)
和==的区别(equals主要是从内容上来说是否相等,<mark>分基本类型和对象类型来进行判断)
**int 跟包装类做</mark>比较时,只比较数值大小,数值大小相等即为true;Integer m=数值的效果等同于Integer m=Integer.valueOf(数值),数值在-128-127之间时,装箱后的Integer对象会重用;超过此范围,装箱后的Integer对象不会重用;new Integer(数值),总会new一个对象,而且不是new缓存中的对象,==比较时,数值大小相等也会false。**

int 跟Integer、Integer.valueOf()、new Integer()做==比较时,只比较两者的数值,数值相等即为true.

在-128-127之间时,包括边界值,Integer m=127,Integer n=Integer.valueOf(127),都会将127装箱成Integer类型,并且m和n共用同一个127的Integer类型。

当值不在-128-127之内时,Integer m=128,Integer n= 128或者Integer n=Integer.valueOf(128),也会将128装箱成Integer类型,但这时不再重用同一个Integer对象,而是各自一个了。此时的Integer m=128或Integer m=Integer.valueOf(128),都相当于new了一个Integer对象。

当一个int数值用new创建时,无论在不在-128-127之间,都会创建一个Integer对象,而且不会重用

Integer m=数值和Integer m=Integer.valueOf(数值)的效果一样的,两者可以互换。他们在-128-127之内时,会重用Integer,在之外,不会重用。

##说说wait和sleep的区别
等待阻塞,是否释放锁…
wait notify notifyAll
线程的状态

##既然谈到线程,说说线程创建方式
继承thread类,实现runnable方法,这两种方法的区别

什么是进程?什么是线程?什么是多进程?什么是多线程?为什么要有多进程和多线程?
进程:操作系统进行资源分配的单位;正在运行的程序。
线程:进程中独立操作的执行单元。
多进程:多进程是指同时运行多种程序。或者一个程序多个进程。
多线程: 多线程是为了使得多个线程并行的工作以完成多项任务,以提高系统的效率。线程是在同一时间需要完成多项任务的时候被实现的。

##谈谈什么是死锁,如何避免死锁
死锁,多线程竞争共享资源导致的无限期等待。
四个必要条件:互斥条件,不可抢占条件,占有且申请条件,循环等待条件。

##线程池介绍,几个线程池的区别
线程池7个参数的解释,
Executors.newCachedThreadPool(); //创建一个缓冲池,缓冲池容量大小为Integer.MAX_VALUE
Executors.newSingleThreadExecutor(); //创建容量为1的缓冲池
Executors.newFixedThreadPool(int); //创建固定容量大小的缓冲池

##Java如何保证原子性的
锁和循环CAS(共享变量)。
说说知道的锁机制

##说说反射机制
反射机制可以操作哪些?
类,对象,方法,字段,

##对设计模式有了解么
单例设计模式,必须掌握的。
单例设计模式怎么实现的,为什么要声明静态单例对象

##static关键字
作用,修饰成员(成员变量和成员函数)
特点;(随着类的加载而加载,优先于对象存在,被所有对象共享,可以直接被类名调用)
和实例变量的区别(存放位置,生命周期)
利弊;
访问特点;

##知道final关键字么?
修饰类。变量。函数。 变量为成员变量,静态变量,局部变量
类不可被继承,方法不可被重写,变量不可改变

##final finally finalize的作用
关键字,异常处理,垃圾回收时调用来判断对象是否需要被回收