不看OCJP考題你永遠不知道自己的JAVA基礎有多差(三)


上期答案

第六題

11. public class Person {

12.        privateString name;

13.        publicPerson(Stringname) {

14.               this.name = name;

15.        }

16.  public int hashCode() {

17.               return 420;

18.  }

19. }

下列哪個敘述是正確的:

A.在HashMap查找某個Person鍵值所需要的時間依賴於Map的大小。

B.執行刪除一個Person鍵的操作,將刪除HashMap中所有類型爲Person的鍵

C.在HashSet中插入第二個Person對象,將導致第一個Person對象被移除。

DHashSet中查找一個Person對象是否存在的時間是一個常數,不依賴於HashSet的大小

 答案:A

知識點:

  1. 假設某類集的大小爲n,那麼對此類集的查找算法的時間複雜度爲O(n)因此A是正確的,且D是錯誤的。
  2. 對於Set和Map中,對於“重複實例”的認定必須同時複寫該類的equals()和hashCord()兩個方法。否則對“重複實例”的認定只是比較對象實例的內存地址,因此B和C是錯誤的

 

第七題

5. import java.util.*;

6. public class SortOf {

7.       public static voidmain(String[] args) {

8.              ArrayList<Integer> a = newArrayList<Integer>();

9.              a.add(1); a.add(5); a.add(3);

11.           Collections.sort(a);

12.           a.add(2);

13.           Collections.reverse(a);

14.           System.out.println(a);

15.      }

16. }

該程序片段的運行結果是?

A. [1 2 3 5]

B. [2 1 35]

C. [2 5 31]

D. [5 3 21]

E. [1 3 52]

F. 編譯失敗

G. 運行時有異常拋出

 答案:C

知識點:

Conllections類定義了一系列針對容器操作的靜態方法,籠統的講凡事實現了Conlection接口的容器都可以在Conllections類中的靜態方法中找到對應的操作,本題中使用到了其中的兩個靜態方法:

sort():根據元素的自然順序對指定列表(List)按升序排列順序。

reverse()反轉指定列表中元素的順序。

關於Conllections類的詳細信息請參考JDK1.6的幫助文檔


第八題

11. public interface Status {

12.       /* 此處插入代碼*/ int MY_VALUE = 10;

13. }

下列哪三個選項可以用於第12

A. final

B. static

C. native

D. public

E. private

F. abstract

G. protected

 答案:A B D

知識點:

接口的定義明確的要求接口要由:

抽象方法、全局常量組成。

抽象方法的修飾詞:public abstract

全局常量的修飾詞:public final static

 

第九題

5. class Atom {

6.       Atom() {System.out.print("atom "); }

7. }

8. class Rock extends Atom {

9.       Rock(String type){ System.out.print(type); }

10. }

11. public class Mountain extends Rock {

12.       Mountain() {

13.              super("granite ");

14.              new Rock("granite ");

15.       }

16.       public staticvoidmain(String[] a){ newMountain(); }

17. }

上述代碼片段的運行結果是?

A. 編譯失敗.

B. atom granite

C. granite granite

D. atom granite granite

E. An exception is thrown at runtime.

F. atom graniteatom granite

 答案:F

知識點:

當子類被實例化的時候都要首先調用父類的構造方法,按照這個規則倒推,稍加細心,此題不難


第十題

10. class Line {

11.       public classPoint { public int x, y;}

12.       public PointgetPoint() { return new Point(); }

13. }

14. class Triangle {

15.       publicTriangle() {

16.               // 此處插入代碼

17.       }

18. }

16行處插入代碼獲得一個Class Point的實例?

A. Point p = Line.getPoint();

B. Line.Point p = Line.getPoint();

C. Point p = (new Line()).getPoint();

D. Line.Point p = (newLine()).getPoint();

答案:D

知識點:

創建實例內部類的實例時,外部類的實例必須存在

外部類類名.內部類類名引用變量名稱= 外部類對象的引用.new 內部類構造器;
外部類類名.內部類類名引用變量名稱= new 外部類構造器.new 內部類構造器;

另一種可能的正確答案

Line.Point p = new Line().new Point();

 

--------------------------------------------------------分割線-----------------------------------------------

 

本期問題:

第十一題:

22. StringBuilder sb1 = new StringBuilder("123");
23. String s1 = "123";
24. // 此處插入代碼
25. System.out.println(sb1 + " " + s1);
將下列哪段代碼插入到第24行處可以使輸出結果爲"123abc 123abc"?
A. sb1.append("abc"); s1.append("abc");
B. sb1.append("abc"); s1.concat("abc");
C. sb1.concat("abc"); s1.append("abc");
D. sb1.concat("abc"); s1.concat("abc");
E. sb1.append("abc"); s1 = s1.concat("abc");
F. sb1.concat("abc"); s1 = s1.concat("abc");
G. sb1.append("abc"); s1 = s1 + s1.concat("abc");
H. sb1.concat("abc"); s1 = s1 + s1.concat("abc");


第十二題:

11. class Alpha {

12.        publicvoid foo() { System.out.print("Afoo "); }

13. }

14. public class Beta extends Alpha {

15.        publicvoid foo() { System.out.print("Bfoo "); }

16.        publicstatic void main(String[] args) {

17.               Alpha a = new Beta();

18.               Beta b = (Beta)a;

19.               a.foo();

20.               b.foo();

21.        }

22. }

此程序的運行結果是?

A. Afoo Afoo

B. Afoo Bfoo

C. Bfoo Afoo

D. Bfoo Bfoo

E. 編譯失敗.

F. 運行時存在異常.

 

第十三題:

一下哪兩個選項能夠創建並初始化一個靜態的整型數組:

A. static final int[] a ={ 100200 };

B. static final int[] a;

static { a=new int[2]; a[0]=100; a[1]=200;}

C. static final int[] a =new int[2]{ 100200 };

D. static final int[] a;

static void init() { a = new int[3];a[0]=100; a[1]=200; }

 

第十四題:

10. interface Foo { intbar(); }

11. public class Sprite {

12.           public int fubar( Foo foo ) { returnfoo.bar(); }

13.           public void testFoo() {

14.                      fubar(

15.                              // insert code here

16.                               );

17.           }

18. }

在第15行處插入哪段代碼可以使得Sprite類完整?

A. Foo { public int bar(){ return 1; }

B. new Foo { public intbar() { return 1; }

C. new Foo() { public intbar() { return 1; }

D. new class Foo { publicint bar() { return 1; }

 

第十五題

1. class Alligator {

2.    public static void main(String[] args) {

3.               int []x[] = {{12} {345} {6789}};

4.               int [][]y = x;

5.               System.out.println(y[2][1]);

6.    }

7. }

以上程序的運行結果是?

A. 2

B. 3

C. 4

D. 6

E. 7

F. 編譯失敗

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章