一、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排序,堆排序。