Sun國際認證考試試題

Java程序員是美國Sun公司國際認證的程序員,它是目前全球最受重視、最受歡迎的程序員資格認證之一,具備這一認證就可以獲得極好的工作機會和豐厚待遇。下面是小編整理的關於Sun國際認證考試試題,歡迎大家參考!

Sun國際認證考試試題

例題1:

Choose the three valid identifiers from those listed below.

A. IDoLikeTheLongNameClass

B. $byte

C. const

D. _ok

E. 3_case

解答:A, B, D

點評:Java中的標示符必須是字母、美元符($)或下劃線(_)開頭。關鍵字與保留字不能作爲標示符。選項C中的const是Java的保留字,所以不能作標示符。選項E中的3_case以數字開頭,違反了Java的規則。

例題2:

How can you force garbage collection of an object?

A. Garbage collection cannot be forced

B. Call ().

C. Call (), passing in a reference to the object to be garbage collected.

D. Call ().

E. Set all references to the object to new values(null, for example).

解答:A

點評:在Java中垃圾收集是不能被強迫立即執行的。調用()或()靜態方法不能保證垃圾收集器的立即執行,因爲,也許存在着更高優先級的線程。所以選項B、D不正確。選項C的錯誤在於,()方法是不接受參數的。選項E中的方法可以使對象在下次垃圾收集器運行時被收集。

例題3:

Consider the following class:

1. class Test(int i) {

2. void test(int i) {

3. tln(“I am an int.”);

4. }

5. void test(String s) {

6. tln(“I am a string.”);

7. }

8.

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

10. Test t=new Test();

11. char ch=“y”;

12. (ch);

13. }

14. }

Which of the statements below is true?(Choose one.)

A. Line 5 will not compile, because void methods cannot be overridden.

B. Line 12 will not compile, because there is no version of test() that rakes a char argument.

C. The code will compile but will throw an exception at line 12.

D. The code will compile and produce the following output: I am an int.

E. The code will compile and produce the following output: I am a String.

解答:D

點評:在第12行,16位長的char型變量ch在編譯時會自動轉化爲一個32位長的int型,並在運行時傳給void test(int i)方法。

例題4:

Which of the following lines of code will compile without error?

A.

int i=0;

if (i) {

tln(“Hi”);

}

B.

boolean b=true;

boolean b2=true;

if(b==b2) {

tln(“So true”);

}

C.

int i=1;

int j=2;

if(i==1|| j==2)

tln(“OK”);

D.

int i=1;

int j=2;

if (i==1 &| j==2)

tln(“OK”);

解答:B, C

點評:選項A錯,因爲if語句後需要一個boolean類型的`表達式。邏輯操作有^、&、| 和 &&、||,但是“&|”是非法的,所以選項D不正確。

例題5:

Which two demonstrate a "has a" relationship? (Choose two)

A. public interface Person { }

public class Employee extends Person{ }

B. public interface Shape { }

public interface Rectandle extends Shape { }

C. public interface Colorable { }

public class Shape implements Colorable

{ }

D. public class Species{ }

public class Animal{private Species species;}

E. interface Component{ }

class Container implements Component{

private Component[] children;

}

解答:D, E

點評: 在Java中代碼重用有兩種可能的方式,即組合(“has a”關係)和繼承(“is a”關係)。“has a”關係是通過定義類的屬性的方式實現的;而“is a”關係是通過類繼承實現的。本例中選項A、B、C體現了“is a”關係;選項D、E體現了“has a”關係。

例題6:

Which two statements are true for the class Set? (Choose two)

A. The elements in the collection are ordered.

B. The collection is guaranteed to be immutable.

C. The elements in the collection are guaranteed to be unique.

D. The elements in the collection are accessed using a unique key.

E. The elements in the collection are guaranteed to be synchronized

解答:A, C

點評:TreeSet類實現了Set接口。Set的特點是其中的元素惟一,選項C正確。由於採用了樹形存儲方式,將元素有序地組織起來,所以選項A也正確。

例題7:

True or False: Readers have methods that can read and return floats and doubles.

A. Ture

B. False

解答:B

點評: Reader/Writer只處理Unicode字符的輸入輸出。float和double可以通過stream進行I/O.

例題8:

What does the following paint() method draw?

1. public void paint(Graphics g) {

2. String(“Any question”, 10, 0);

3. }

A. The string “Any question?”, with its top-left corner at 10,0

B. A little squiggle coming down from the top of the component.

解答:B

點評:drawString(String str, int x, int y)方法是使用當前的顏色和字符,將str的內容顯示出來,並且最左的字符的基線從(x,y)開始。在本題中,y=0,所以基線位於最頂端。我們只能看到下行字母的一部分,即字母‘y’、‘q’的下半部分。

例題9:

What happens when you try to compile and run the following application? Choose all correct options.

1. public class Z {

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

3. new Z();

4. }

5.

6. Z() {

7. Z alias1 = this;

8. Z alias2 = this;

9. synchronized(alias1) {

10. try {

11. ();

12. tln(“DONE WAITING”);

13. }

14. catch (InterruptedException e) {

15. tln(“INTERR

UPTED”);

16. }

17. catch (Exception e) {

18. tln(“OTHER EXCEPTION”);

19. }

20. finally {

21. tln

(“FINALLY”);

22. }

23. }

24. tln(“ALL DONE”);

25. }

26. }

A. The application compiles but doesn't print anything.

B. The application compiles and print “DONE WAITING”

C. The application compiles and print “FINALLY”

D. The application compiles and print “ALL DONE”

E. The application compiles and print “INTERRUPTED”

解答:A

點評:在Java中,每一個對象都有鎖。任何時候,該鎖都至多由一個線程控制。由於alias1與alias2指向同一對象Z,在執行第11行前,線程擁有對象Z的鎖。在執行完第11行以後,該線程釋放了對象Z的鎖,進入等待池。但此後沒有線程調用對象Z的notify()和notifyAll()方法,所以該進程一直處於等待狀態,沒有輸出。

例題10:

Which statement or statements are true about the code listed below? Choose three.

1. public class MyTextArea extends TextArea {

2. public MyTextArea(int nrows, int ncols) {

3. enableEvents(_

EVENT_MASK);

4. }

5.

6. public void processTextEvent

(TextEvent te) {

7. tln(“Processing a text event.”);

8. }

9. }

A. The source code must appear in a file called

B. Between lines 2 and 3, a call should be made to super(nrows, ncols) so that the new component will have the correct size.

C. At line 6, the return type of processTextEvent() should be declared boolean, not void.

D. Between lines 7 and 8, the following code should appear: return true.

E. Between lines 7 and 8, the following code should appear: essTextEvent(te).

解答:A, B, E

點評:由於類是public,所以文件名必須與之對應,選項A正確。如果不在2、3行之間加上super(nrows,ncols)的話,則會調用無參數構建器TextArea(), 使nrows、ncols信息丟失,故選項B正確。在Java2中,所有的事件處理方法都不返回值,選項C、D錯誤。選項E正確,因爲如果不加essTextEvent(te),註冊的listener將不會被喚醒。

SCJP考試中的幾點注意

● 深刻理解面向對象的思想

Java是一種純粹的面向對象的程序設計語言。在正式使用Java做開發之前,必須將我們的思維方式轉入一個徹底的面向對象的世界。做不到這一點,就無法體會Java語言的精髓,寫不出地道的Java程序。當然,你也無法徹底理解Java中的基本概念和他們之間的聯繫與區別,如例題3、例題5。你可以學到Java的語法規則,卻不能看到Java的靈魂。

● 對概念細節的精確把握

通過例題我們可以看到,SCJP的考察點相當細緻。如例題1、2、4、7、8。所以只有對Java的概念、語法、規則瞭然於心,才能在考場上應對自如。

● 適量的練習

程序設計是一項實踐性很強的技術。只有上機實踐,才能使課本中的理論、頭腦中的思想通過你的雙手成爲一行行代碼,完成規定的目標。雖然SCJP考試不考操作與編程,但有大量的程序閱讀,如例題3、4、9、10。如果你自己寫過許多代碼的話,這種題就是小菜一碟。

● 廣泛的交流

善於交流是優秀程序員必備的技能,也是你解決疑難,提高水平的捷徑。國內外有很多與Java認證相關的優秀網站和論壇,如: , 等, 都是學習Java的寶庫。同時,一些很棒的模考軟件,如Jxam、JTest、 Javacert等,以及著名的模考題如MarcusGreen的三套題均可以找到。[@more@]