一、J2EE(總分20分。每題2分)
簡述String和StringBuffer的區別。
String 對一串字元進行操作。不可變。一旦被建立,就不能修改它的值。
StringBuffer 也是對一串字元進行操作,但是可變類。
執行時異常(RuntimeException)與一般異常有何不同?
一般異常是可捕捉到的。執行時異常是不可預知的異常。
Sleep()和wait()有什麼區別?
sleep是執行緒類(Thread)的方法,導致此執行緒暫停執行指定時間,把執行機會給其他執行緒,但是監控狀態依然保持,到時後會自動恢復。呼叫sleep不會釋放物件鎖。
wait().會釋放鎖
實現多執行緒有幾種方法?
三種,
1.繼承Thread類,重寫run函式
2.實現Runnable介面,重寫run函式
3.實現Callable介面,重寫call函式
簡述執行緒的基本狀態及狀態之間的關係。
adState 屬性提供一個位掩碼,用它指示執行緒的當前狀態。一個執行緒至少總是處於 ThreadState 列舉中一個可能狀態,並且可以同時處於多個狀態。
一旦執行緒由於呼叫 t 而離開 Unstarted 狀態,則它將永遠無法返回到 Unstarted 狀態。同樣,執行緒也永遠無法離開 Stopped 狀態。
什麼是執行緒同步,何如實現執行緒的同步?
當兩個或多個執行緒需要訪問同一資源時,它們需要以某種順序來確保該資源某一時刻只能被一個執行緒使用的方式稱為同步。要想實現同步操作,必須要獲得每一個執行緒物件的鎖。獲得它可以保證在同一時刻只有一個執行緒訪問物件中的共享關鍵程式碼,並且在這個鎖被釋放之前,其他執行緒就不能再進入這個共享程式碼。此時,如果還有其他執行緒想要獲得該物件的鎖,只得進入等待佇列等待。只有當擁有該物件鎖的執行緒退出共享程式碼時,鎖被釋放,等待佇列中第一個執行緒才能獲得該鎖,從而進入共享程式碼區。
JSP或Servlet中的forward和redirect有什麼區別?
forward是服務器內部重定向,程式收到請求後重新定向到另一個程式,客戶機並不知道;redirect則是伺服器收到請求後傳送一個狀態頭給客戶,客戶將再請求一次,這裡多了兩次網路通訊的來往。redirect 是送到客戶端後再一次 request , 所以資料不被保留.
簡述JDBC呼叫資料庫的基本步驟。
1,載入驅動
2,建立連線
3,獲取語句物件
4,執行sql語句
5,如果是查詢,還可以使用結果集
6,關閉連線
7,捕捉和處理異常
簡述Servlet的生命週期。
Servlet被伺服器例項化後,容器執行其init方法,請求到達時執行其service方法,service方法自動派遣執行與請求對應的do方法(doGet,doPost)等,當伺服器決定將例項銷燬的時候呼叫其destroy方法。
二、演算法(總共20分)
請列舉幾種排序演算法,並用JAVA實現快速排序演算法。(6分)
氣泡排序,快速排序,shaker排序,堆排序。