## **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升水?**