1.Java中,什么是构造方法?什么构造方法重载?什么是复制构造方法?
答:当新对象被创建的时候,构造方法会被调用。每一个类都有构造方法。在程序员没有给类提供构造方
法的情况下,Java编译器会为这个类创建一个默认的构造方法。
Java中构造方法重载和方法重载很相似。可以为一个类创建多个构造方法。每一个构造方法必须有它自己
唯一的参数列表。
Java不支持像C++中那样的复制构造方法,这个不同点是因为如果你不自己写构造方法的情况下,Java不会
创建默认的复制构造方法。

2.JAVA支持多继承?
答:Java中类不支持多继承,只支持单继承(即一个类只有一个父类)。但是Java中的接口支持多继承,
即一个子接口可以有多个父接口。(接口的作用是用来扩展对象的功能,一个子接口继承多个父接口,说
明子接口扩展了多个功能,当类实现接口时,类就扩展了相应的功能)。

3.接口和抽象类的区别?
答:Java提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于:
接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。
类可以实现很多接口,但是只能继承一个抽象类。
类可以不实现抽象类和接口声明的所有方法,当然,在这种情况下,类也必须得声明成抽象的。
抽象类可以在不提供接口方法实现的情况下实现接口。
Java接口中声明的变量默认都是final的。抽象类可以包含非final的变量。
Java接口中的成员函数默认是public的。抽象类的成员函数可以是private,protected和public。
接口时绝对抽象的,不可以被实例化。抽象类也不可以被实例化。但是,如果它包含main方法的话是可以
被调用的。也可以参考jdk8中抽象类和接口的区别。

4.什么是值传递和引用传递?
答:值传递是对基本型变量而言的,传递的是该变量的一个副本,改变副本不影响原变量。
引用传递一般是对于对象型变量而言的,传递的是该对象地址的一个副本,并不是原对象本身。
一般认为java内的传递都是值传递,java中实例对象的传递是引用传递。

5.进程和线程的区别?
答:线程是调度的基本单位 进程是资源分配的基本单位
进程是执行着的应用程序,而线程是进程内部的一个执行序列。一个进程可以有多个线程。线程又叫做轻
量级进程。
线程的划分小于进程,线程隶属于某个进程。进程是程序的一种动态形式,是cpu,内存等资源占用的基本
单位,而线程是不能占有这些资源的。进程之间相互独立,通信比较困难,而线程之间共享一块内存区域
,通信比较方便。进程在执行的过程中,包含比较固定的入口,执行顺序,出口,而线程的这些过程会被
应用程序所控制。

6.创建线程有几种不同的方式?你喜欢哪一种?
答:有4种方式可以用来创建线程
继承Thread类
实现Runnable接口
应用程序可以使用Executor框架来创建线程池

实现Runnable接口这种方式更受欢迎,因为这不需要继承Thread类。在应用设计中已经继承了别的对象的
情况下,这需要多继承(而Java不支持多继承),只能实现接口。同时,线程池也是非常高效的,很容易
实现和使用的。

还有一种方式是实现Callable接口