2025-02-10

自測一下你的Java掌握得怎麼樣?


====================================================================


註:


以下是我為北京理工大學計算機學院2008級學生設計的Java試題,感興趣的朋友不妨自我測試一下,看看你能得多少分。


目前我正在批改學生的試卷,此工作完成後,過幾天我會發佈試題點評以及對考試結果的分析,其中會有一些比較值得關註的東西。


                                                                                                                    金旭亮


====================================================================



 



北京理工大學計算機科學技術學院 2010 -2011 學年第一學期


Java 技術與應用考試試題 ( A )


班級           學號            姓名            成績    _      


 


說明:


       ( 1 )本次考試為開卷 考試,允許學生攜帶相關的書籍及其他紙面資料,但不


         得使用計算機、智能手機等電子設備。


       ( 2 )考試時間為 2 小時。


       ( 3 )簡答題和編程題寫在試卷後所附的答題紙上,標明題號。


       ( 4 )特設卷面整潔分,凡卷面不整潔導致代碼及文字難於識別者,扣除 5 分 。


       ( 5 )部分題目沒有標準答案,隻要言之成理,均可給分。


 


*******************************************************************************


 


一、判斷題(正確的描述打鉤,錯誤的打叉,每題 1 分,共 10 分)


 


1.        一個 Java 源文件中隻能定義一個公有類,並且類名必須與文件名一致。(     )


 


2.        通過在程序中引入 “import javax.swing.*;” 語句,就可以使用 javax.swing 包中的所有類(包括其嵌套的子包中的類)。 (     )


 


3.        J2SE 的功能是 J2ME 的一個子集。(     )


 


4.        Java 字節碼隻有被裝入到內存中之後,才能被執行。(     )


 


5.        Swing 是一套 GUI 組件,采用瞭新的思路設計 Java 應用程序的界面,它完全地替換掉瞭原有的 AWT 。(     )


 


6.        在編程時編寫過多的註釋,會使編譯之後生成的程序文件變大。(     )


 


7.        Java Applet 可運行於瀏覽器中,這意味著瀏覽器本身就可以直接執行 Applet 程序。(     )


 


8.        JDK 5.0 增加的枚舉類型( enum )是一個原始數據類型。(      )


 


9.        Java 規定所有的方法都必須放到某個類中,不存在獨立於類的方法。(     )


 


10.    面向對象軟件系統設計師們經常用到的 UML 是一種編程語言。(     )


 



 


二、簡答題(請將答案寫到答題紙上,註明題號。每題 4 分,共 40 分)


 


1.        現代編程語言有很多種分類方法,以下是我們常見的一種劃分方法:


       ( 1 ) “ 編譯型 ” 編程語言: 比如 C ,程序源碼必須經過編譯才能運行;


       ( 2 ) “ 解釋型 ” 編程語言: 這種類型的語言(比如早期的 Basic )通常都擁有一個交互環境,用戶輸入一句代碼計算機就執行一句代碼。


       Java 屬於上述哪種類型?如果你認為 Java 不屬於上述任何一種類型,那麼它是不是屬於另外一種編程語言類型?


 


2.        Java 中有兩個關鍵字: void 和 null ,它們有什麼區別?


 


3.        簡述 “ 類( class ) ” 、 “ 類庫 (class library)” 、 “ 包( package ) ” 、 “jar 文件 ” 這四個概念間的聯系。


 


4.        面向對象的程序在運行時會創建多個對象,這些對象之間通常可以相互 “ 發送消息 ” ,談談你對 “ 對象之間發送消息 ” 這句話的理解,並編寫幾句 Java 示例代碼展示對象之間發送消息的具體編程實現方法。


 


5.        加法運算符 “+” 可以施加於原始數值類型(比如 int )的變量,但我們發現一些對象類型(比如 Integer )的變量,也支持 “+” 運算:


 


    Integer v1 = 100;


    Integer v2 = 200;


    System.out.println(v1 + v2 );  // 輸出: 300


 


       這看上去好象 Integer 類型重載瞭 “+” 運算符,一些編程語言比如 C++ 可以重載運算符,但 Java 本身並不支持這一特性。依你的理解或猜測, Java 采用什麼方法處理兩個 Integer 對象直接 “ + ” 的語句?


 


6.        在一個很大的循環(比如循環 100000 次)中,如果需要進行大量字符串的連接操作,通常人們會使用 StringBuffer (或 StringBuilder )而不是 String 類型,請解釋這麼做的理由。


 


7.        現有兩個長度不同的數組:


 


    int[] arr1 = new int[10];


    int[] arr2 = new int[100];


   


    那麼以下語句能通過編譯嗎?


 


    arr1 = arr2;


 


    如果你認為可以通過編譯,得到這個結論的依據是什麼?如果不能通過編譯,你認為其原因是什麼?


8.   請看以下代碼 :


 


    double d1 = 100.1;


    double d2 = 1001/10;


    System.out.println(d1 == d2);  // 輸出 : false


 


       明明 d1 與 d2 是相等的 , 為什麼程序運行時會輸出一個讓人意外的結果 : false ?


 


9.        當使用多個 catch 語句捕獲多個異常時, Java 規定捕獲 Exception 的 catch 語句必須排在最後,如下所示:


 


    try { …… }


    catch(ClassCastException ex){ …… }


    catch(NumberFormatException ex){ …… }


    catch(Exception ex){ …… }  // 此句必須放在最後!


 


    為什麼會有這個限制?談談你的理解。


 


10. 請看以下示例代碼:


 


    String s1 = “Hello”;


    String s2 = “Hello”;


    System.out.println(s1 == s2);  // 輸出: true


 


    String s3 = new String(“Hello”);


    String s4 = new String(“Hello”);


    System.out.println(s3 == s4);  // 輸出: false


&n

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *