2016年J2EE筆試題目及答案

  1、heap和stack有什麼區別?

2016年J2EE筆試題目及答案

答:棧是一種線形集合,其添加和刪除元素的操作應在同一段完成。棧按照後進先出的方式進行處理。堆是棧的一個組成元素

  2、Java中的異常處理機制的簡單原理和應用

答:當JAVA程序違反了JAVA的語義規則時,JAVA虛擬機就會將發生的錯誤表示爲一個異常。違反語義規則包括2種情況。一種是JAVA類庫 內置的語義檢查。例如數組下標越界,會引發IndexOutOfBoundsException;訪問null的對象時會引發 NullPointerException。另一種情況就是JAVA允許程序員擴展這種語義檢查,程序員可以創建自己的異常,並自由選擇在何時用 throw關鍵字引發異常。所有的異常都是able的子類。

  3、垃圾回收的優點和原理。並考慮2種回收機制

答:Java語言中一個顯著的特點就是引入了垃圾回收機制,使c++程序員最頭疼的內存管理的問題迎刃而解,它使得Java程序員在編寫程序的時 候不再需要考慮內存管理。由於有個垃圾回收機制,Java中的對象不再有"作用域"的概念,只有對象的引用纔有"作用域"。垃圾回收可以有效的.防止內存泄 露,有效的使用可以使用的內存。垃圾回收器通常是作爲一個單獨的低級別的線程運行,不可預知的情況下對內存堆中已經死亡的或者長時間沒有使用的對象進行清 楚和回收,程序員不能實時的調用垃圾回收器對某個對象或所有對象進行垃圾回收。回收機制有分代複製垃圾回收和標記垃圾回收,增量垃圾回收。

  4、你所知道的集合類都有哪些?主要方法?

答:最常用的集合類是 List 和 Map。 List 的具體實現包括 ArrayList 和 Vector,它們是可變大小的列表,比較適合構建、存儲和操作任何類型對象的元素列表。 List 適用於按數值索引訪問元素的情形。

Map 提供了一個更通用的元素存儲方法。 Map 集合類用於存儲元素對(稱作"鍵"和"值"),其中每個鍵映射到一個值。

  5、描述一下JVM加載class文件的原理機制?

答:JVM中類的裝載是由ClassLoader和它的子類來實現的,Java ClassLoader 是一個重要的Java運行時系統組件。它負責在運行時查找和裝入類文件的類。

  6、排序都有哪幾種方法?請列舉

答: 排序的方法有:插入排序(直接插入排序、希爾排序),交換排序(冒泡排序、快速排序),選擇排序(直接選擇排序、堆排序),歸併排序,分配排序(箱排序、基數排序)

快速排序的僞代碼。

/ /使用快速排序方法對a[ 0 :n- 1 ]排序

從a[ 0 :n- 1 ]中選擇一個元素作爲m i d d l e,該元素爲支點

把餘下的元素分割爲兩段left 和r i g h t,使得l e f t中的元素都小於等於支點,而right 中的元素都大於等於支點

遞歸地使用快速排序方法對left 進行排序

遞歸地使用快速排序方法對right 進行排序

所得結果爲l e f t + m i d d l e + r i g h t

  7、JAVA語言如何進行異常處理,關鍵字:throws,throw,try,catch,finally分別代表什麼意義?在try塊中可以拋出異常嗎?

答:Java通過面向對象的方法進行異常處理,把各種不同的異常進行分類,並提供了良好的接口。在Java中,每個異常都是一個對象,它是 Throwable類或其它子類的實例。當一個方法出現異常後便拋出一個異常對象,該對象中包含有異常信息,調用這個對象的方法可以捕獲到這個異常並進行 處理。Java的異常處理是通過5個關鍵詞來實現的:try、catch、throw、throws和finally。一般情況下是用try來執行一段程 序,如果出現異常,系統會拋出(throws)一個異常,這時候你可以通過它的類型來捕捉(catch)它,或最後(finally)由缺省處理器來處 理。

用try來指定一塊預防所有"異常"的程序。緊跟在try程序後面,應包含一個catch子句來指定你想要捕捉的"異常"的類型。

throw語句用來明確地拋出一個"異常"。

throws用來標明一個成員函數可能拋出的各種"異常"。

Finally爲確保一段代碼不管發生什麼"異常"都被執行一段代碼。

可以在一個成員函數調用的外面寫一個try語句,在這個成員函數內部寫另一個try語句保護其他代碼。每當遇到一個try語句,"異常"的框架就 放到堆棧上面,直到所有的try語句都完成。如果下一級的try語句沒有對某種"異常"進行處理,堆棧就會展開,直到遇到有處理這種"異常"的try語 句。

  8、一個""源文件中是否可以包括多個類(不是內部類)?有什麼限制?

答:可以。必須只有一個類名與文件名相同。

  9、java中有幾種類型的流?JDK爲每種類型的流提供了一些抽象類以供繼承,請說出他們分別是哪些類?

答:字節流,字符流。字節流繼承於InputStream OutputStream,字符流繼承於InputStreamReader OutputStreamWriter。在包中還有許多其他的流,主要是爲了提高性能和使用方便。

  10、java中會存在內存泄漏嗎,請簡單描述。

答:會。自己實現堆載的數據結構時有可能會出現內存泄露

  11、垃圾回收器的基本原理是什麼?垃圾回收器可以馬上回收內存嗎?有什麼辦法主動通知虛擬機進行垃圾回收

答:對於GC來說,當程序員創建對象時,GC就開始監控這個對象的地址、大小以及使用情況。通常,GC採用有向圖的方式記錄和管理堆(heap) 中的所有對象。通過這種方式確定哪些對象是"可達的",哪些對象是"不可達的"。當GC確定一些對象爲"不可達"時,GC就有責任回收這些內存空間。可 以。程序員可以手動執行(),通知GC運行,但是Java語言規範並不保證GC一定會執行。

  12、靜態變量和實例變量的區別?

答:static i = 10; //常量 class A a; a.i =10;//可變

  13、什麼是java序列化,如何實現java序列化?

答:序列化就是一種用來處理對象流的機制,所謂對象流也就是將對象的內容進行流化。可以對流化後的對象進行讀寫操作,也可將流化後的對象傳輸於網絡之間。序列化是爲了解決在對對象流進行讀寫操作時所引發的問題。

序列化的實現:將需要被序列化的類實現Serializable接口,該接口沒有需要實現的方法,implements Serializable只是爲了標註該對象是可被序列化的,然後使用一個輸出流(如:FileOutputStream)來構造一個 ObjectOutputStream(對象流)對象,接着,使用ObjectOutputStream對象的writeObject(Object obj)方法就可以將參數爲obj的對象寫出(即保存其狀態),要恢復的話則用輸入流。

  14、是否可以從一個static方法內部發出對非static方法的調用?

答:不可以,如果其中包含對象的method();不能保證對象初始化.

  15、寫clone()方法時,通常都有一行代碼,是什麼?

答:Clone 有缺省行爲,e();他負責產生正確大小的空間,並逐位複製。

  16、在JAVA中,如何跳出當前的多重嵌套循環?

答:用break; return 方法。

  17、List、Map、Set三個接口,存取元素時,各有什麼特點?

答:List 以特定次序來持有元素,可有重複元素。Set 無法擁有重複元素,內部排序。Map 保存key-value值,value可多值。

  18、說出一些常用的類,包,接口,請各舉5個

答:常用的類:BufferedReader BufferedWriter FileReader FileWirter String Integer

常用的包:

常用的接口:Remote List Map Document NodeList

  19、描述使用JDBC連接數據庫的過程

ame("OdbcDriver");

String url = "jdbc:obdc:mydb";

Connection con = onnection(url);

Statement stmt = teStatement();

ResultSet rs = te("select * from mytable");

  20、什麼是JNDI?

java命名目錄接口