## **1.ArrayList和Vector的区别,HashMap和Hashtable的区别。**
1) Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。
2) 当Vector或ArrayList中的元素超过它的初始大小时,Vector会将它的容量翻倍,而ArrayList只增加50%的大小,这样,ArrayList就有利于节约内存空间。
Hashtable和HashMap它们的性能方面的比较类似 Vector和ArrayList,比如Hashtable的方法是同步的,而HashMap的不是。
## **2. java 创建对象的几种方式**
1. 采用new
2. 通过反射
3. 采用clone
4. 通过序列化机制
前2者都需要显式地调用构造方法. 造成耦合性最高的恰好是第一种,因此你发现无论什么框架,只要涉及到解耦必先减少new的使用.
## **3. 在java中一个类被声明为final类型,表示了什么意思?**
在java中一个类被声明为final类型,表示这个类是不能有子类的,就是你不能用其他的类来继承这个类。
## **4. Object中有哪些公共方法?**
1. `equals()`
2. `clone()`
3. `getClass()`
4. `notify(),notifyAll(),wait()`
5. `toString`
## **5. final 在 java 中有什么作用?**
* final 修饰的类叫最终类,该类不能被继承。
* final 修饰的方法不能被重写。
* final 修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改。
## **6. 说说进程,线程,协程之间的区别**
简而言之,进程是程序运行和资源分配的基本单位,一个程序至少有一个进程,一个进程至少有一个线程.进程在执行过程中拥有独立的内存单元,而多个线程共享内存资源,减少切换次数,从而效率更高.线程是进程的一个实体,是cpu调度和分派的基本单位,是比程序更小的能独立运行的基本单位.同一进程中的多个线程之间可以并发执行.
## **7. JDK 和 JRE 有什么区别?**
* JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。
* JRE:Java Runtime Environment 的简称,java 运行环境,为 java 的运行提供了所需环境。
具体来说 JDK 其实包含了 JRE,同时还包含了编译 java 源码的编译器 javac,还包含了很多 java 程序调试和分析的工具。简单来说:如果你需要运行 java 程序,只需安装 JRE 就可以了,如果你需要编写 java 程序,需要安装 JDK。
## **8. 简述一下Java中的异常处理**
在Java中,所有的异常都有一个共同的祖先java.lang包中的Throwable类。
Throwable包含两个子类:
**Exception(异常):**
是程序本身可以处理的异常。Exception 类有一个重要的子类 RuntimeException。RuntimeException 异常由Java虚拟机抛出。NullPointerException(要访问的变量没有引用任何对象时,抛出该异常)、ArithmeticException(算术运算异常,一个整数除以0时,抛出该异常)和 ArrayIndexOutOfBoundsException (下标越界异常)。
**Error(错误):**
是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。例如,Java虚拟机运行错误(Virtual MachineError),当 JVM 不再有继续执行操作所需的内存资源时,将出现 OutOfMemoryError。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止。
这些错误表示故障发生于虚拟机自身、或者发生在虚拟机试图执行应用时,如Java虚拟机运行错误(Virtual MachineError)、类定义错误(NoClassDefFoundError)等。这些错误是不可查的,因为它们在应用程序的控制和处理能力之 外,而且绝大多数是程序运行时不允许出现的状况。对于设计合理的应用程序来说,即使确实发生了错误,本质上也不应该试图去处理它所引起的异常状况。在 Java中,错误通过Error的子类描述。
**注意:异常和错误的区别:异常能被程序本身处理,错误是无法处理。**
## **9. 数据库事务是什么?**
是用户定义的一个数据库操作序列,这些操作要么都做,要么都不做,是一个不可分割的工作单位。
## **10.产生死锁的条件**
1.互斥条件:一个资源每次只能被一个进程使用。
2.请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
3.不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
4.循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
## **11.MVC各个部分是由什么实现?怎样实现?**
## **12.请简单写一个ajax事件。**
## **13.怎样用一个7升的瓶子和一个5升的瓶子准确的量出6升水?**