Java初級軟件工程師認證考試試卷及答案詳解2_第1頁
Java初級軟件工程師認證考試試卷及答案詳解2_第2頁
Java初級軟件工程師認證考試試卷及答案詳解2_第3頁
Java初級軟件工程師認證考試試卷及答案詳解2_第4頁
Java初級軟件工程師認證考試試卷及答案詳解2_第5頁
已閱讀5頁,還剩30頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Java 初級軟件工程師認證考試試卷筆試(A卷)考試時間150分鐘總分 100分姓 名_身份證號_考試結(jié)束后考卷必須收回,否則考試成績無效Java 初級軟件工程師認證考試試卷一、 填空題(共20個題目,總計20分)1. 安裝JDK后,為了告訴計算機javac.exe和java.exe等執(zhí)行文件的位置,需要配置的環(huán)境變量是_。2. Java提供了三種注釋類型,分別是單行注釋,多行注釋和_。3. char 類型用來表示在Unicode編碼表中的字符,長度是_個字節(jié)。4. _是短路與運算符,如果左側(cè)表達式的計算結(jié)果是false,右側(cè)表達式將不再進行計算。5. _語句用在循環(huán)語句體中,用于終止某次循環(huán)

2、過程,即跳過循環(huán)體中尚未執(zhí)行的語句,接著進行下一次是否執(zhí)行循環(huán)的判定。6. 基本數(shù)據(jù)類型的類型轉(zhuǎn)換中,要將double類型的常量3.14159賦給為整數(shù)類型變量n的語句是_。7. 執(zhí)行Person p = new Person();語句后,將在_中給Person對象分配空間,并在棧內(nèi)存中給引用變量p分配空間,存放Person對象的引用。8. 使用static修飾的變量稱為靜態(tài)變量,靜態(tài)變量可以有兩種訪問方式,分別是類名.靜態(tài)變量名和_。9. 在一個類文件中的關(guān)鍵字package,import,class出現(xiàn)的可能順序是_。10. 異常是由Java應(yīng)用程序拋出和處理的非嚴重錯誤,比如所需文件沒有

3、找到、零作除數(shù),數(shù)組下標越界等,可分為兩類:Checked異常和_。11. 數(shù)組在內(nèi)存中分配連續(xù)的空間,數(shù)組的長度固定,一經(jīng)分配無法改變,可以使用_屬性獲取數(shù)組的長度。12. DateFormat類可以實現(xiàn)字符串和日期類型之間的格式轉(zhuǎn)換,其中將日期類型轉(zhuǎn)換為指定的字符串格式的方法名是_。13. JDK1.5后提供了_關(guān)鍵字,用以定義枚舉類。枚舉類是一種特殊的類,可以有自己的屬性、方法和構(gòu)造方法。14. 如果希望將自定義類Student的多個對象放入集合TreeSet,實現(xiàn)所有元素按照某個屬性的自然順序排列,則需要Student類實現(xiàn)_接口。15. 迭代器Iterator為集合而生,專門實現(xiàn)集合

4、遍歷,該接口有三個方法,分別是hasNext() 、_、remove()。16. Java IO體系中,_是字節(jié)輸入流,提供了可以存取所有Java基礎(chǔ)類型數(shù)據(jù)(如:int,double 等)和String的方法,但沒有提供存取對象的方法。17. _是指將Java對象轉(zhuǎn)換成字節(jié)序列,從而可以保存到磁盤上,也可以在網(wǎng)絡(luò)上傳輸,使得不同的計算機可以共享對象。18. Java反射技術(shù)中,每個Method對象對應(yīng)一個方法,獲得Method對象后,可以調(diào)用其_來調(diào)用對應(yīng)方法。19. 處于運行狀態(tài)的線程在某些情況下,如執(zhí)行了sleep(睡眠)方法,或等待I/O設(shè)備等資源,將讓出CPU并暫時停止自己的運行,進

5、入_狀態(tài)。 20. 統(tǒng)一資源定位符URL是指向互聯(lián)網(wǎng)“資源”的指針,由4部分組成:協(xié)議、存放資源的主機域名、_和資源路徑和文件名。二、 選擇題(共25個題目,總計25分)1)以下選項中是對一個Java源文件進行正確編譯的語句是( )(選擇一項)A.javac Test.javaB.javac TestC.java TestD.java Test.class2)以下選項中屬于合法的Java標識符的是( )。(選擇兩項)A.publicB.3numC.nameD._age3)以下代碼的執(zhí)行結(jié)果是( )。(選擇一項)boolean m = true;if(m = false)System.out.p

6、rintln(false);elseSystem.out.println(true);A.falseB.trueC.編譯錯誤D.無結(jié)果4)以下do-while循環(huán)代碼的執(zhí)行結(jié)果是( )。(選擇一項)int a=0;int c=0;do-c;a=a-1;while(a0);System.out.println(a+ +c);A.-1 -1B.死循環(huán)C.-1 -2D.-1 05)while循環(huán)和do-while循環(huán)的區(qū)別是( )。(選擇一項)A.沒有區(qū)別,這兩個結(jié)構(gòu)在任何情況下效果一樣 B.while循環(huán)比do-while循環(huán)執(zhí)行效率高C.while循環(huán)是先循環(huán)后判斷,所以循環(huán)體至少被執(zhí)行一次D.

7、do-while循環(huán)是先循環(huán)后判斷,所以循環(huán)體至少被執(zhí)行一次6)分析下面的Java多重循環(huán)代碼片段,編譯運行后的輸出結(jié)果是( )。(選擇一項)for (int i = 0; i 6; i+) int k = +i;while (k 5) System.out.print(i);break;A.024B.02C.123D.137)以下關(guān)于方法調(diào)用的代碼的執(zhí)行結(jié)果是( )。(選擇一項)public class Test public static void main(String args) int i = 99;mb_operate(i);System.out.print(i + 100);st

8、atic void mb_operate(int i) i += 100;A.99 B.199C.299D.991008)以下關(guān)于繼承條件下構(gòu)造方法執(zhí)行過程的代碼的執(zhí)行結(jié)果是( )。(選擇一項)class Person public Person() System.out.println(execute Person();class Student extends Person public Student() System.out.println(execute Student() );class PostGraduate extends Student public PostGraduat

9、e() System.out.println(execute PostGraduate();public class TestInherit public static void main(String args) new PostGraduate();A.execute Person()execute Student() execute PostGraduate()B.execute PostGraduate()C.execute PostGraduate()execute Student() execute Person()D.沒有結(jié)果輸出9)以下語句中關(guān)于Java構(gòu)造方法的說法錯誤的是(

10、 )。(選擇一項)A.構(gòu)造方法的作用是為創(chuàng)建對象進行初始化工作,比如給成員變量賦值 B.一個Java類可以沒有構(gòu)造方法,也可以提供1個或多個構(gòu)造方法C.構(gòu)造方法與類同名,不能書寫返回值類型D.構(gòu)造方法的第一條語句如果是super(),則可以省略,該語句作用是調(diào)用父類無參數(shù)的構(gòu)造方法10)以下關(guān)于this和super關(guān)鍵字的說法錯誤的是( )。(選擇二項)A.this關(guān)鍵字指向當前對象自身,super關(guān)鍵字指向當前對象的直接父類B.在main方法中可以存在this或super關(guān)鍵字,但不能同時存在。C.this和super關(guān)鍵字都可以訪問成員屬性,成員方法和構(gòu)造方法D.在一個類的構(gòu)造方法中可以同

11、時使用this和super來調(diào)用其他構(gòu)造方法11)以下選項中可以使成員變量m 被函數(shù)fun()直接訪問的是( )。(選擇一項)class Test private int m;public static void fun() System.out.println(m);A.將private int m 改為protected int m B.將private int m 改為 public int mC.將private int m 改為 static int mD.將private int m 改為 int m12)Person類和Test類的代碼如下所示,則代碼中的錯誤語句是( )。(選擇

12、一項)public class Person public String name;public Person(String name) = name;public class Test public static void main(String args) final Person person = new Person(歐歐); = 美美; person = new Person(亞亞); A.final Person person = new Person(歐歐);B. = 美美;C.person = new Perso

13、n(亞亞);D.沒有錯誤13)以下關(guān)于異常的代碼的執(zhí)行結(jié)果是( )。(選擇一項)public class Test public static void main(String args) try System.out.println(try);return; catch(Exception e)System.out.println(catch);finally System.out.println(finally);A.trycatchfinallyB.catchfinallyC.tryfinallyD.try14)以下關(guān)于String類的代碼的執(zhí)行結(jié)果是( )。(選擇一項)public c

14、lass Test2 public static void main(String args) String s1 = new String(bjsxt); String s2 = new String(bjsxt); if (s1 = s2) System.out.println(s1 = s2); if (s1.equals(s2) System.out.println(s1.equals(s2); A.s1 = s2B.s1.equals(s2)C.s1 = s2s1.equals(s2)D.以上都不對15)以下關(guān)于StringBuffer類的代碼的執(zhí)行結(jié)果是( )。(選擇一項)publ

15、ic class TestStringBuffer public static void main(String args) StringBuffer a = new StringBuffer(A);StringBuffer b = new StringBuffer(B);mb_operate(a, b);System.out.println(a + . + b); static void mb_operate(StringBuffer x, StringBuffer y) x.append(y);y = x; A.A.B B.A.A C.AB.ABD.AB.B 16)以下選項中能夠正確創(chuàng)建一

16、個數(shù)組的是( )。(選擇二項)A.float f = new float66;B.float f = new float;C.float 6f = new float66;D.float f = new float6;17)以下選項中關(guān)于int和Integer的說法錯誤的是( )。(選擇二項)A.int是基本數(shù)據(jù)類型,Integer是int的包裝類,是引用數(shù)據(jù)類型B.int的默認值是0,Integer的默認值也是0C.Integer可以封裝了屬性和方法提供更多的功能D.Integer i=5;該語句在JDK1.5之后可以正確執(zhí)行,使用了自動拆箱功能18)以下選項中關(guān)于Java集合的說法錯誤的是

17、( )。(選擇二項)A.List接口和Set接口是Collections接口有兩個子接口B.List接口中存放的元素具有有序,不唯一的特點C.Set接口中存放的元素具有無序,不唯一的特點D.Map接口存放的是映射信息,每個元素都是一個鍵值對19)以下代碼的執(zhí)行結(jié)果是( )。(選擇一項)Set s=new HashSet();s.add(abc);s.add(abc);s.add(abc);s.add(abcd);System.out.println(s.size();A.1B.2C.3D.420)下面集合類中屬于非線程安全,且結(jié)構(gòu)采用了哈希表的是( )。(選擇一項)A.VectorB.Arra

18、yListC.HashMapD.Hashtable21)以下選項中關(guān)于如下代碼的說法正確的是( )。(選擇二項)public class TestBuffered public static void main(String args) throws IOException BufferedReader br = new BufferedReader(new FileReader(d:/bjsxt1.txt);BufferedWriter bw = new BufferedWriter(new FileWriter(d:/bjsxt2.txt);String str = br.readLine

19、();while(str !=null) bw.write(str); bw.newLine();str = br.readLine(); br.close();bw.close();A.該類使用字符流實現(xiàn)了文件復(fù)制,將d:/bjsxt1.txt復(fù)制為d:/bjsxt2.txtB.FileReader和FileWriter是處理流,直接從文件讀寫數(shù)據(jù)C.BufferedReader和BufferedWriter是節(jié)點流,提供緩沖區(qū)功能,提高讀寫效率D.readLine()可以讀取一行數(shù)據(jù),返回值是字符串類型,簡化了操作22)InputStreamReader是轉(zhuǎn)換流,可以將字節(jié)流轉(zhuǎn)換成字符流,

20、是字符流與字節(jié)流之間的橋梁。它的實現(xiàn)使用的設(shè)計模式是( )。(選擇一項)A.工廠模式B.裝飾模式C.適配器模式D.代理模式23)以下選項中可以填寫到橫線處,讓代碼正確編譯和運行的是( )。(選擇一項)public class Test implements Runnable public static void main(String args) _t.start();System.out.println(main);public void run() System.out.println(thread1!);A.Thread t = new Thread(new Test();B.Test

21、t = new Test();C.Thread t = new Test();D.Thread t = new Thread();24)在多個線程訪問同一個資源時,可以使用( )關(guān)鍵字來實現(xiàn)線程同步,保證對資源安全訪問。(選擇一項)A.synchronizedB.transientC.staticD.yield25)以下說法中關(guān)于UDP協(xié)議的說法正確的是( )。(選擇二項)A.發(fā)送不管對方是否準備好,接收方收到也不確認B.面向連接C.占用系統(tǒng)資源多、效率低D.非常簡單的協(xié)議,可以廣播發(fā)送三、 判斷題(共20個題目,總計10分)1. 一個Java源文件中可以定義多個類,但是至多只能有一個publ

22、ic類。( )2. Java的字節(jié)碼文件的擴展名是class,是一種平臺獨立的非二進制文件。( )3. 是異或位運算符,運算規(guī)則是如果兩個操作數(shù)相同,結(jié)果是0,否則結(jié)果是1。( )4. 賦值運算符優(yōu)先級別低于條件運算符,條件運算符優(yōu)先級別低于算術(shù)運算符。( )5. switch選擇語句是多分支選擇語句,只能處理等值條件判斷的情況,表達式可以是int類型、char類型,但不能是double,float類型。( )6. 在多重循環(huán)中,外層循環(huán)變量變化一遍,內(nèi)層循環(huán)變量要變化一次 。( )7. 程序調(diào)用自身的編程技巧稱為遞歸。遞歸的特點是編程簡單并且節(jié)省內(nèi)存。( )8. 類可以看成一類對象的模板,對

23、象可以看成該類的一個具體實例。( )9. 使用public修飾的成員屬性和方法可以被當前項目中所有包的所有類訪問。( )10. 將子類對象賦給父類引用變量,稱為向下轉(zhuǎn)型,將無法訪問子類特有的方法。( )11. 繼承是多態(tài)的基礎(chǔ),沒有繼承就沒有多態(tài)。( )12. 內(nèi)部類作為外部類成員,權(quán)限修飾符和其他成員一樣,可聲明為private、默認、protected或public。( )13. 對于物理連接,比如數(shù)據(jù)庫連接、輸入流輸出流、Socket連接等,垃圾回收機制無能為力,必須手動關(guān)閉才可以。( )14. 數(shù)組和集合中的元素可以是任何數(shù)據(jù)類型,包括基本類型和引用類型。( )15. 增強的for循環(huán)

24、可以遍歷數(shù)組和集合,語法簡單 不需要知道數(shù)組的長度,不能實現(xiàn)與下標相關(guān)的操作。( )16. LinkedHashMap是一種有序的HashMap,查詢速度快,便于進行添加刪除操作。( )17. Collection類是專門用來操作集合的工具類,提供一系列靜態(tài)方法實現(xiàn)對各種集合的操作。( )18. 一個File對象可以代表一個文件或目錄,它可以獲取文件和目錄屬性,也可以訪問文件內(nèi)容。( )19. 進程是線程Thread內(nèi)部的一個執(zhí)行單元,它是程序中一個單一順序控制流程。( )20. Socket是傳輸層供給應(yīng)用層的編程接口,是應(yīng)用層與傳輸層之間的橋梁 。( )四、 簡答題(共5個題目,總計25分

25、)1. 方法重載和方法重寫(覆蓋)的區(qū)別。(4分)2. 寫出java.lang.Object類的六個常用方法的聲明并說明其作用。(6分)3. 接口和抽象類的聯(lián)系和區(qū)別。(5分)4. Vector和ArrayList、ArrayList和LinkedList的區(qū)別和聯(lián)系。(6分)5. 面向?qū)ο笤O(shè)計原則有哪些。(4分)五、 編碼題(共3個題目,總計20分)1. 寫出餓漢式單例模式、懶漢式單例模式、多線程情況下懶漢式雙重判斷單例模式的示例代碼。(7分)2. 寫出使用JDBC訪問數(shù)據(jù)庫表t_student中所有數(shù)據(jù),并將結(jié)果集內(nèi)容封裝成List返回的代碼。(6分)1) 數(shù)據(jù)庫表已經(jīng)創(chuàng)建,表名稱及字段信

26、息如下表名t_student中文表名稱學生信息表序號字段名稱字段說明類型長度備注1id學生編號number6主鍵2name學生姓名varchar28非空3age學生年齡number3非空4score學生分數(shù)number5,1非空5enterdate入學時間date非空2) 實體類Student已經(jīng)提供,和數(shù)據(jù)庫表字段對應(yīng),有id,name,age,score,enterDate五個屬性及相應(yīng)的getter和setter方法,提供了各種參數(shù)的構(gòu)造方法。3) 使用JDBC訪問數(shù)據(jù)庫四個連接參數(shù)分別為a) driver:oracle.jdbc.driver.OracleDriverb) url:jd

27、bc:oracle:thin:localhost:1521:orclc) username:bjsxtd) password:bjsxt4) 方法的聲明為public List findAll() ,在方法體中書寫JDBC代碼完成功能即可。3. 使用TCP網(wǎng)絡(luò)編程完成用戶登錄功能:客戶端輸入用戶名和密碼,向服務(wù)器發(fā)出登錄請求;服務(wù)器接收數(shù)據(jù)并進行判斷,如果用戶名和密碼均是bjsxt,則登錄成功,否則登錄失敗,返回相應(yīng)響應(yīng)信息;客戶端接收響應(yīng)信息并輸出登錄結(jié)果。(7分)1) 用戶User類已提供構(gòu)造方法 public User(String username,String password)。2

28、) 客戶端采用ObjectOutputStream發(fā)送封裝了用戶名和密碼的User對象。public class LoginServer public static void main(String args) throws Exception public class LoginClient public static void main(String args) throws Exception 3) 服務(wù)器端和客戶端的類名和方法聲明如下所示。Java 初級軟件工程師認證考試試卷精解六、 填空題(共20個題目,總計20分)221. path22. 文檔注釋23. 224. &25. con

29、tinue26. int n=(int)3.14159;27. 堆內(nèi)存28. 對象名.靜態(tài)變量名29. package import class30. 運行時異常(或RuntimeException)31. length32. format33. enum34. Comparable35. next()36. DataInputStream37. 序列化38. invoke39. 阻塞40. 端口(號)七、 選擇題(共25個題目,總計25分)1. A分析:編譯時使用javac Test.java,源文件的擴展名.java不可少;解釋時使用java Test,運行的是類而非class文件,所以類

30、名后不能加擴展名.class。2. CD分析:Java標識符命名規(guī)則標識符必須以字母、_下劃線、美元符$開頭;標識符其它部分可以是字母、下劃線“_”、美元符“$”和數(shù)字的任意組合;Java 標識符大小寫敏感,且長度無限制;不可以是Java的關(guān)鍵字;public是關(guān)鍵字,3num以數(shù)字開頭。3. B分析:m = false 是賦值語句,而不是m = false,所以m的值是false。4. A5. D分析:do-while循環(huán)先循環(huán)后判斷,循環(huán)體至少被執(zhí)行一次;while循環(huán)先判斷后循環(huán),循環(huán)體可能一次也不執(zhí)行;while和do-while循環(huán)執(zhí)行效率沒有差別。6. D分析:任何兩種循環(huán)都可以相

31、互嵌套;可以任意層次循環(huán),但是一般不超過3層;外層循環(huán)變量變化一次,內(nèi)層循環(huán)變量要變化一遍。7. B分析:main方法中基本數(shù)據(jù)類型變量i作方法的實在參數(shù),在mb_operate中會重新分配新的空間存放形參i,不會影響到main方法中i的值。8. A分析:構(gòu)造方法的第一條語句如果不是顯式的通過this調(diào)用當前類的構(gòu)造方法,或顯式的通過super調(diào)用父類的構(gòu)造方法,則默認是super(),可以省略,作用是調(diào)用父類無參數(shù)的構(gòu)造方法;所以會先向上追溯到Object,然后再依次向下執(zhí)行各級父類的構(gòu)造方法,直到當前類為止。9. B分析:一個Java類沒有定義構(gòu)造器,則系統(tǒng)會自動定義一個無參的構(gòu)造方法。如

32、果已定義,則系統(tǒng)不會添加無參數(shù)構(gòu)造方法,所以Java類至少有一個構(gòu)造方法。10. BD分析:靜態(tài)static方法中不能出現(xiàn)this和super關(guān)鍵字,因為this和super只有在創(chuàng)建對象后才會在堆內(nèi)存中分配空間,而可以在沒有創(chuàng)建對象之前就是要static變量和static方法11. C分析:static方法只能出現(xiàn)static變量,不能出現(xiàn)非static變量;非static方法中可以出現(xiàn)static變量和非static變量。12. C分析:使用final修飾變量,變量的值將無法修改,從而變?yōu)槌A?。此題中使用final修飾的是person,而不是name,所以B正確,C出現(xiàn)編譯錯誤。13. C

33、分析: finally塊的具體執(zhí)行過程:執(zhí)行try或catch中代碼;遇到return/throw后先執(zhí)行finally中語句塊;執(zhí)行return/throw。finally塊中語句不執(zhí)行的唯一情況:執(zhí)行System.exit(1)退出Java虛擬機 14. B分析:=:a)基本類型,比較的是值b)引用類型,比較的是地址c)不能比較沒有父子關(guān)系的兩個對象equals()a)系統(tǒng)類一般已經(jīng)覆蓋了equals(),比較的是內(nèi)容。b)用戶自定義類如果沒有覆蓋equals(),將調(diào)用父類的equals(比如是Object),而Object的equals的比較是地址(return (this = obj

34、);)c)用戶自定義類需要覆蓋父類的equals()注意:Object的=和equals比較的都是地址,作用相同15. D分析: StringBuffer是字符串“變量”,其值可以直接修改,String是字符串“常量”,其值不能直接修改,只能通過修改引用來指向新的字符串來實現(xiàn)修改。x.append(y);修改的是x的內(nèi)容,y = x;修改的是y的引用。該題目難度指數(shù)高,涉及String、StringBuffer,引用類型參數(shù)的方法調(diào)用,鍛煉價值很大,可以借助內(nèi)存分配圖來理解。16. AD分析:定義二維數(shù)組并分配空間時,=左側(cè)不能指定數(shù)組長度,=右側(cè)可以同時指定兩個維度的長度,也可以只指定第一個

35、維度的長度。17. BD分析:int的默認值是0,Integer是引用數(shù)據(jù)類型,默認值是null;Integer i=5;該語句在JDK1.5之后可以正確執(zhí)行,使用了自動裝箱箱功能,而不是自動拆箱功能。18. AC分析:注意Collections和Collection的區(qū)別,List接口和Set接口是Collection接口有兩個子接口。Collection中存放的元素具有無序,不唯一的特點,List中存放的元素具有有序,不唯一的特點,而HashSet中存放的元素具有無序,唯一的特點。19. B分析:HashSet中存放的元素具有無序,唯一的特點,所以長度是2,而不是4。20. C分析:Vec

36、tor和ArrayList實現(xiàn)原理相同,功能相同,都是長度可變的數(shù)組結(jié)構(gòu),很多情況下可以互用。兩者的主要區(qū)別如下: Vector是早期集合類,ArrayList是替代Vector的;Vector線程安全;ArrayList重速度輕安全,線程非安全,性能較高。HashMap和Hashtable實現(xiàn)原理相同,功能相同,底層都是哈希表結(jié)構(gòu),查詢速度快,在很多情況下可以互用。兩者的主要區(qū)別如下:Hashtable是早期JDK提供,HashMap是新版JDK提供;Hashtable線程安全,性能較低,HashMap線程非安全,性能較高。21. AD分析:FileReader和FileWriter是節(jié)點流

37、,直接從文件讀寫數(shù)據(jù);BufferedReader和BufferedWriter是處理流,提供緩沖區(qū)功能,提高讀寫效率。22. C分析:InputStreamReader和OutputStreamWriter是轉(zhuǎn)換流,采用了適配器設(shè)計模式,可以將字節(jié)流轉(zhuǎn)換成字符流。而在各種節(jié)點流和包裝流之間則采用了裝飾模式,裝飾模式是繼承的一種有效替代方案,避免產(chǎn)生大量的子類。23. A分析:定義線程有兩種方式,繼承Thread類和實現(xiàn)Runnable接口。創(chuàng)建線程對象的方式也有所不同。因為Runnable接口的實現(xiàn)類本身并不是線程,所以需要作為Thread類的參數(shù)來傳遞。此題目采用第二種方式來定義線程和創(chuàng)建

38、線程對象。24. A分析:在多個線程訪問同一個資源時,可以使用synchronized關(guān)鍵字來實現(xiàn)線程同步,保證對資源安全訪問,但是也會導(dǎo)致性能下降,甚至導(dǎo)致死鎖。25. AD分析:TCP協(xié)議一種面向連接(連接導(dǎo)向)的、可靠的、基于字節(jié)流的運輸層通信協(xié)議 。特點:面向連接;點到點的通信;高可靠性;占用系統(tǒng)資源多、效率低。UDP是一種無連接的傳輸層協(xié)議,提供面向事務(wù)的簡單不可靠信息傳送服務(wù)。特點:非面向連接,傳輸不可靠,可能丟失;發(fā)送不管對方是否準備好,接收方收到也不確認;可以廣播發(fā)送;非常簡單的協(xié)議,開銷小。八、 判斷題(共20個題目,總計10分)21. 22. Java的字節(jié)碼文件的擴展名是

39、class,是一種平臺獨立的二進制文件。23. 24. 25. 26. 在多重循環(huán)中,外層循環(huán)變量變化一次,內(nèi)層循環(huán)變量要變化一遍。27. 程序調(diào)用自身的編程技巧稱為遞歸,其特點是編程簡單但是占用內(nèi)存空間多。28. 29. 30. 將子類對象賦給父類引用變量,稱為向上轉(zhuǎn)型,將無法訪問子類特有的方法。31. 32. 33. 34. 數(shù)組中的元素可以是任何數(shù)據(jù)類型,包括基本類型和引用類型。集合中的元素只能是引用類型,基本類型數(shù)據(jù)需要轉(zhuǎn)換為對應(yīng)包裝類的對象才能放入集合。35. 36. 37. Collections類是專門用來操作集合的工具類,提供一系列靜態(tài)方法實現(xiàn)對各種集合的操作。38. 一個Fi

40、le對象可以代表一個文件或目錄,它可以獲取文件和目錄屬性,不可以訪問文件內(nèi)容。39. 線程Thread是進程內(nèi)部的一個執(zhí)行單元,它是程序中一個單一順序控制流程。40. 九、 簡答題(共5個題目,總計25分)1. 方法重載和方法重寫(覆蓋)的區(qū)別。(4分)英文位置不同修飾符返回值方法名參數(shù)拋出異常方法體重載overload同一個類中無關(guān)無關(guān)相同不同無關(guān)不同重寫override子類和父類間大于等于小于等于相同相同小于等于不同2. 寫出java.lang.Object類的六個常用方法的聲明并說明其作用。(6分)1) public boolean equals(java.lang.Object) 比較

41、內(nèi)容2) public native int hashCode() 哈希碼3) public java.lang.String toString() 變成字符串4) public final native java.lang.Class getClass() 獲取類結(jié)構(gòu)信息5) protected void finalize() throws java.lang.Throwable 垃圾回收前執(zhí)行的方法6) protected native Object clone() throws java.lang.CloneNotSupportedException 克隆7) public final

42、void wait() throws java.lang.InterruptedException 多線程中等待功能8) public final native void notify() 多線程中喚醒功能9) public final native void notifyAll() 多線程中喚醒所有等待線程的功能3. 接口和抽象類的聯(lián)系和區(qū)別。(5分)相同點 抽象類和接口均包含抽象方法,類必須實現(xiàn)所有的抽象方法,否則是抽象類 抽象類和接口都不能實例化,他們位于繼承樹的頂端,用來被其他類繼承和實現(xiàn)兩者的區(qū)別主要體現(xiàn)在兩方面:語法方面和設(shè)計理念方面語法方面的區(qū)別是比較低層次的,非本質(zhì)的,主要表現(xiàn)

43、在: 接口中只能定義全局靜態(tài)常量,不能定義變量。抽象類中可以定義常量和變量。 接口中所有的方法都是全局抽象方法。抽象類中可以有0個、1個或多個,甚至全部都是抽象方法。 抽象類中可以有構(gòu)造方法,但不能用來實例化,而在子類實例化是執(zhí)行,完成屬于抽象類的初始化操作。接口中不能定義構(gòu)造方法。 一個類只能有一個直接父類(可以是抽象類),但可以充實實現(xiàn)多個接口。一個類使用extends來繼承抽象類,使用implements來實現(xiàn)接口。二者的主要區(qū)別還是在設(shè)計理念上,其決定了某些情況下到底使用抽象類還是接口。 抽象類體現(xiàn)了一種繼承關(guān)系,目的是復(fù)用代碼,抽象類中定義了各個子類的相同代碼,可以認為父類是一個實現(xiàn)

44、了部分功能的“中間產(chǎn)品”,而子類是“最終產(chǎn)品”。父類和子類之間必須存在“is-a”的關(guān)系,即父類和子類在概念本質(zhì)上應(yīng)該是相同的。 接口并不要求實現(xiàn)類和接口在概念本質(zhì)上一致的,僅僅是實現(xiàn)了接口定義的約定或者能力而已。接口定義了“做什么”,而實現(xiàn)類負責完成“怎么做”,體現(xiàn)了功能(規(guī)范)和實現(xiàn)分離的原則。接口和實現(xiàn)之間可以認為是一種“has-a的關(guān)系”4. Vector和ArrayList、ArrayList和LinkedList的區(qū)別和聯(lián)系。(6分)Vector和ArrayList的區(qū)別和聯(lián)系實現(xiàn)原理相同,功能相同,都是長度可變的數(shù)組結(jié)構(gòu),很多情況下可以互用兩者的主要區(qū)別如下1. Vector是早

45、期JDK接口,ArrayList是替代Vector的新接口2. Vector線程安全,ArrayList重速度輕安全,線程非安全3. 長度需增長時,Vector默認增長一倍,ArrayList增長50%ArrayList和LinkedList的區(qū)別和聯(lián)系A(chǔ)rrayList實現(xiàn)了長度可變的數(shù)組,在內(nèi)存中分配連續(xù)空間。遍歷元素和隨機訪問元素的效率比較高;LinkedList采用鏈表存儲方式。插入、刪除元素時效率比較高5. 面向?qū)ο笤O(shè)計原則有哪些。(4分)面向?qū)ο笤O(shè)計原則是面向?qū)ο笤O(shè)計的基石,面向?qū)ο笤O(shè)計質(zhì)量的依據(jù)和保障,設(shè)計模式是面向?qū)ο笤O(shè)計原則的經(jīng)典應(yīng)用1. 單一職責原則SRP2. 開閉原則OC

46、P3. 里氏替代原則LSP4. 依賴注入原則DIP5. 接口分離原則ISP6. 迪米特原則LOD7. 組合/聚合復(fù)用原則CARP開閉原則具有理想主義的色彩,它是面向?qū)ο笤O(shè)計的終極目標。其他設(shè)計原則都可以看作是開閉原則的實現(xiàn)手段或方法。十、 編碼題(共3個題目,總計20分)1. 寫出餓漢式單例模式、懶漢式單例模式、多線程情況下懶漢式雙重判斷單例模式的示例代碼。(7分)/* * 餓漢式的單例模式,在類加載時創(chuàng)建單例實例,而不是等到第一次請求實例時創(chuàng)建* 1、私有 的無參數(shù)構(gòu)造方法Singleton(),避免外部創(chuàng)建實例 * 2、私有靜態(tài)屬性instance * 3、公有靜態(tài)方法getInstanc

47、e() */public class Singleton private static Singleton instance = new Singleton();private Singleton()public static Singleton getInstance()return instance;/* * 懶漢式的單例模式 *在類加載的時候不創(chuàng)建單例實例,只有在第一次請求實例的時候的時候創(chuàng)建*/public class Singleton private static Singleton instance;private Singleton()public static Singlet

48、on getInstance()if(instance=null) /只創(chuàng)建一次對象instance = new Singleton();return instance;/* *多線程情況下懶漢式的單例模式,避免創(chuàng)建多個對象 * 需要使用synchronized關(guān)鍵字和進行兩次null判斷*/public class Singleton private static Singleton instance;private Singleton()public static Singleton getInstance()if(instance =null)/避免每次加鎖,只有第一次沒有創(chuàng)建對象時才加

49、鎖synchronized(Singleton.class)/加鎖,只允許一個線程進入if(instance=null) /只創(chuàng)建一次對象instance = new Singleton();return instance;2. 寫出使用JDBC訪問數(shù)據(jù)庫表t_student中所有數(shù)據(jù),并將結(jié)果集內(nèi)容封裝成List返回的代碼。(6分)public List findAll() String driver=oracle.jdbc.driver.OracleDriver;String url=jdbc:oracle:thin:localhost:1521:orcl;String username=bjsxt;String password=bjsxt;Connection conn = null;Statement stmt = null;ResultSet rs = null;List stuList = new ArrayList();try /加載驅(qū)動Cl

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論