當前位置:文思屋>社會工作>IT認證>

大學java期末考試試題

文思屋 人氣:1.6W

Java是一門物件導向的程式語言,不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承、指標等概念,因此Java語言具有功能強大和簡單易用兩個特徵。下面是小編精心整理的大學java期末考試試題,希望對你有幫助!

大學java期末考試試題

大學java期末考試試題 1

1.在Java中,負責對位元組程式碼解釋執行的是

A. 應用伺服器

B. 虛擬機器

C. 垃圾回收器

D. 編譯器

2. 一個棧的輸入序列為1 2 3 4 5,則下列序列中不可能是棧得輸出序列的是( )

A. 5 4 1 3 2

B. 2 3 4 1 5

C. 1 5 4 3 2

D. 2 3 1 4 5

3. LDAP是什麼?

A. 是一種開源產品

B. 是一種程式語言

C. 是一種訪問協議

D. 是一種儲存資料的目錄

4. 要想在你的檢視上成功的執行查詢需要做什麼?

A. 只能在基礎表中有select許可權

B. 在檢視中需要有select許可權

C. 基礎表中必須有資料

D. 基礎表必須在同一個 使用者模式中

5. 評估下面的一組SQL語句:

CREATE TABLE dept

(deptno NUMBER(2),

dname VARCNAR2(14),

1oc VARCNAR2 (13));

ROLLBACK;

DESCRIBE DEPT

下面關於該組語句的哪個描述是正確的?

A. DESCRIBE DEPT語句將返回一個錯誤ORA-04043: object DEPT does not exist.

B. DESCRIBE DEPT語句將顯示DEPT表的結構描述內容

C. DESCRIBE DEPT語句將只有在ROLLBACK之前引入一個COMMIT語句時,才會顯示DEPT表的結構描述內容

D. ROLLBACK語句將釋放DEPT佔用的儲存空間

6. Oracle中VARCHAR2型別的最大長度是:

A. 4000

B. 3000

C. 1000

D. 2000

7. 下列哪一個選項按照順序包括了OSI模型的七個層次:( )

A. 物理層 資料鏈路層 傳輸層 網路層 會話層 表示層 應用層

B. 物理層 資料鏈路層 會話層 網路層 傳輸層 表示層 應用層

C. 物理層 資料鏈路層 網路層 傳輸層 會話層 表示層 應用層

D. 網路層 傳輸層 物理層 資料鏈路層 會話層 表示層 應用層

8. 當客戶端關閉一個從連線池中獲取的連線, 會發生下面哪一種情況?

A. 連線不會關閉,只是簡單地還給連線池

B. 連線被關閉,但又被重新開啟並還給連線池

C. 連線永久性關閉

9. 以下哪些不是javascript的全域性函式()

A. eval

B. escape

C. setTimeout

D. parseFloat

10. 你使用mkdir命令建立一個臨時資料夾/tmp/aaa,並將一些檔案複製其中。你使用完後要刪除/mnt/tmp資料夾及其中的所有檔案,應該使用命令

A. rm /tmp/aaa

B. rm -r /tmp/aaa

C. rmdir -r /tmp/aaa

D. rmdir /tmp/aaa

11. 作業系統具有程序管理、儲存管理、檔案管理和裝置管理的功能,在以下有關的描述中,哪一個是不正確的

A. 裝置管理是指計算機系統中除了CPU和記憶體以外的所有輸入、輸出裝置的管理

B. 儲存管理主要是管理記憶體資源

C. 程序管理主要是對程式進行管理

D. 檔案管理可以有效地支援對檔案的操作,解決檔案分享、保密和保護問題

12. 在UML提供的圖中,( )用於按時間順序描述物件間的互動。

A. 協作圖

B. 網路圖

C. 序列圖

D. 狀態圖

13. 下面有關係統併發訪問數估算資料那個最有效:

A. 高峰時段日處理業務量100000

B. 高峰時段平均每秒請求數80

C. 同時線上使用者數100

D. 平均每秒使用者請求數50

14. 不同級別的使用者對同一物件擁有不同的訪問權利或某個客戶端不能直接操作到某個物件,但又必須和那個物件有所互動,這種情況最好使用什麼設計模式。

A. Bridge模式

B. Fa?ade模式

C. Adapter模式

D. Proxy模式

15. PL/SQL中用來判斷FETCH語句是否成功,並且在FETCH語句失敗時返回邏輯真的屬性是:

%ISOPEN

%NOTFOUND

%ROWCOUNT

%FOUND

16. 關於以下程式程式碼的說明正確的是:

1. public class HasStatic{

2. private static int x=100;

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

4. HasStatic hs1=new HasStatic();

5. hs1.x++;

6. HasStatic hs2=new HasStatic();

7. hs2.x++;

8. hs1=new HasStatic();

9. hs1.x++;

10. HasStatic.x--;

11. System.out.println("x="+x);

12. }

13. }

A. 程式通過編譯,輸出結果為:x=103

B. 10行不能通過編譯,因為x是私有靜態變數

C. 5行不能通過編譯,因為引用了私有靜態變數

D. 程式通過編譯,輸出結果為:x=102

17. 定義字串:String s1="hello";對下面程式描述正確的是:

if(s1=="hello"){

System.out.println("s1 = "hello"");

}else{

System.out.println("s1 !=hello");

}

A. 輸出 s1 !=hello

B. 編譯正確,執行錯誤

C. 產生編譯錯誤

D. 輸出 s1="hello"

18. 在實現DAO設計模式時,下面哪種模式經常被採用:

A. Proxy模式

B. Factory模式

C. Prototype模式

D. Observer模式

19. 關於MVC,下面說法正確的是:

A. Servlet實現MVC的Model部分

B. EJB實現MVC的Model部分

C. Http實現MVC的View部分

D. JSP實現MVC的Control部分

20. 下列關於PC機軟體的敘述中,錯誤的是:

A. C++語言編譯器是一種系統軟體,它需要作業系統的支援

B. PC機除了使用Windows作業系統外,還可使用Linux等作業系統

C. 軟體是計算機系統不可缺少的組成部分,它包括各種程式、資料和有關文件資料

D. Windows作業系統中的畫圖、計算器、遊戲等是Windows的組成部分,它們都屬於系統軟體

21. 在ORACLE中執行下面SQL的結果為:

Select instr('Mississippi','i',3,3) from dual

7

10

8

11

22. 在ORACLE中,下面哪個符號可以放到一個檔案中的一行前面來標示註釋。

A. !

B. $

C. &

D. #

23. 以下程式碼段將建立幾個物件?

String s1="bc";

String s2="bc";

A. 2

B. 3

C. 0

D. 1

24. 關於垃圾收集的哪些敘述是對的。

A. 垃圾收集能夠在期望的時間釋放被java物件使用的記憶體。

B. 垃圾收集將檢查並釋放不再使用的記憶體。

C. 垃圾收集允許程式開發者明確指定並立即釋放該記憶體。

D. 程式開發者必須自己建立一個執行緒進行記憶體釋放的工作。

25. 設x為int型變數,則執行以下語句段後,x的值為:

x=10;

x+=x-=x-x;

A. 30

B. 20

C. 40

D. 10

26. 對於下面幾種常見的CMT事務屬性,下面?號處從?1 到 ?4依次應為:

A. T2, None, None, T2

B. None, T2, None, T2

C. T1, T2, T2, None

D. None, None, None, T1

E. T2, T2, None, T2

F. T1, None, T2, T2

27. 如果配置一個Servlet需要使用的引數,最好在哪個方法中載入?

A. init

B. doGet

C. destory

D. doPost

E. service

28. 下面哪個Set是排序的?

A. LinkedHashSet

B. HashSet

C. AbstractSet

D. TreeSet

29. 假設test類運行於多執行緒環境下,那麼關於A處的同步下面描述正確的是?

public class Test {

List list= new java.util.ArrayList();

public void test() {

synchronized ( list) { // --A

list.add( String.valueOf(System.currentTimeMillis()));

}

}

}

A. test方法中必須增加synchronized

B. Test類為singleton時有必要增加synchronized

C. test方法中沒有必要增加synchronized

D. Test類為singleton時也沒有必要增加synchronized

30. 下面哪個對類的宣告是錯誤的?

A. class MyClass extends MySuperClass1, MySupperClass2 {}

B. public class MyClass{}

C. abstract class MyClass implements YourInterface1, Youriterface2 {}

D. private class MyClass {}

E. class MyClass extends MySuperClass implements YourInterface {}

31. 類的例項方法表示的是什麼?( )

A. 父類物件的行為

B. 類的屬性

C. 類物件的行為

D. 類的行為

32. 下面說法正確的是( )

A. JAVA中執行緒是非搶佔式的

B. JAVA中的執行緒不可以共享資料

C. 每個JAVA程式都至少有一個執行緒,即主執行緒

D. JAVA中的執行緒不可以共享程式碼

1. Applet可以做下列那些操作

A. 讀取客戶端檔案

B. 在客戶端主機上建立新檔案

C. 在客戶端裝載程式庫

D. 讀取客戶端部分系統變數

2. 在物件導向資料模型中,子類不但可以從其超類中繼承所有的屬性和方法,而且還可以定義自己的屬性和方法,這有利於實現

A. 可移植性

B. 可擴充性

C. 可靠性

D. 安全性

3. 下面兩段程式碼列印的結果是:

System.out.println(5.00-4.90);

System.out.println(300-210);

A. 0.8999999999999999和90

B. 0.8999999999999999和89.99999999999999

C. 0.9和90

D. 0.9和89.99999999999999

4. 下面關於資料庫系統基於日誌的恢復的敘述中,哪一個是正確的

A. 利用更新日誌記錄中的改前值可以進行UNDO,利用更新日誌記錄中的改前值可以進行REDO

B. 利用更新日誌記錄中的改後值可以進行UNDO,利用更新日誌記錄中的改後值可以進行REDO

C. 利用更新日誌記錄中的改前值可以進行UNDO,利用更新日誌記錄中的改後值可以進行REDO

D. 利用更新日誌記錄中的改後值可以進行UNDO,利用更新日誌記錄中的改前值可以進行REDO

5. 評估下面的一組SQL語句:

CREATE TABLE dept

(deptno NUMBER(2),

dname VARCNAR2(14),

1oc VARCNAR2 (13));

ROLLBACK;

DESCRIBE DEPT

下面關於該組語句的哪個描述是正確的?

A. DESCRIBE DEPT語句將顯示DEPT表的結構描述內容

B. DESCRIBE DEPT語句將只有在ROLLBACK之前引入一個COMMIT語句時,才會顯示DEPT表的結構描述內容

C. ROLLBACK語句將釋放DEPT佔用的儲存空間

D. DESCRIBE DEPT語句將返回一個錯誤ORA-04043: object DEPT does not exist.

6. 下面哪個語句用於開啟一個已經存在的約束?

A. ALTER TABLE table_name ENABLE constraint_name;

B. ALTER TABLE table_name STATUS = ENABLE CONSTRAINT constraint _ name;

C. ALTER TABLE table_name STATUS = ENABLE CONSTRAINT constraint _ name;

D. ALTER TABLE table_name ENABLE CONSTRAINT constraint _ name;

E. ALTER TABLE table_name TURN ON CONSTRAINT constraint _ name;

F. ALTER TABLE table_name TURN ON CONSTRAINT constraint _ name;

7. TCP協議在每次建立或拆除連線時,都要在收發雙方之間交換_________ 報文。

A. 一個

B. 四個

C. 三個

D. 兩個

8. 網路作業系統和分散式作業系統的主要區別是()

A. 是否連線多臺計算機

B. 計算機之間能否通訊

C. 網上資源能否共享

D. 各臺計算機有沒有主次之分

9. 關於IE的window物件表述不正確的有()

A. window.opener屬性本身就是指向window物件

B. window.location=”a.html”和window.location.href=”a.html”的作用都是把當前頁面替換成a.html頁面

C. 定義了全域性變數g;可以用window.g的方式來存取該變數

D. window.reload()方法可以用來重新整理當前頁面

10. 在作業系統中,Wait(s)和Signal(s)操作是一種

A. 機器指令

B. 作業控制命令

C. 系統呼叫命令

D. 低階程序通訊原語

11. 檔案的存取方式是由檔案的性質和使用者使用檔案的情況而確定的,一般有兩種存取方式,它們是

A. 直接存取和間接存取

B. 順序存取和連結存取

C. 順序存取和隨機存取

D. 只讀存取和讀寫存取

12. 下列描述中正確的是()

A. 軟體工程只是解決軟體專案的管理問題

B. 軟體工程只是解決軟體開發中的技術問題。

C. 軟體工程的主要思想是強調在軟體開發過程中需要應用工程化的原則。

D. 軟體工程主要解決軟體產品的生產率問題。

13. 專案中的技術風險是通常是通過()方法來緩解的

A. 技術文件

B. 架構原型驗證

C. 程式碼複審

D. 單元測試

14. CMM定義了幾個不同的成熟度等級。

A. 3

B. 6

C. 5

D. 4

15. PL/SQL中以下表達式的結果非空的是:

A. NULL||NULL

B. NULL'||NULL

C. (5>NULL)

D. 3+NULL

16. 你怎樣強制對一個物件立即進行垃圾收集?

A. 呼叫 System.gc()

B. 呼叫System.gc(), 同時傳遞要進行垃圾收集物件的引用

C. 呼叫 Runtime.gc()

D. 給這個物件的所有引用設定一個新的值(例如null)

E. 垃圾收集是不能被強迫立即執行

17. 以下( )方法不能被瀏覽器自動呼叫。

A. init()

B. stop()

C. start()

D. paint()

18. 要建立一個新目錄,可以用下面( )類實現。

A. FileInputStream

B. FileOutputStream

C. RandomAccessFile

D. File

19. 執行下面程式碼,下面描述正確的是:

public class Person{

static int arr[] = new int[10];

public static void main(String a[]){

System.out.println(arr[1]);

}

}

A. 產生編譯錯誤

B. 輸出空

C. 編譯正確,執行錯誤

D. 輸出0

20. 關於CMM的說法錯誤的是:

A. CMM是一個軟體生命週期模型

B. CMM是一種軟體過程的策略,與實際使用的模型無關

C. CMM有助於組織建立一個有規律的、成熟的軟體過程

D. CMM定義了5個成熟度等級

21. 執行下面PL/SQL,emp表中存在編號為1234的僱員,說法正確的是:

declare

v_name VARCHAR2(10);

begin

SELECT ename INTO v_name FROM emp WHERE empno='1234';

dbms_output.put_line('found');

EXCEPTION

WHEN no_data_found THEN

dbms_output.put_line('not found!');

dbms_output.put_line('others');

end;

A. 程式編譯錯誤

B. 輸出結果為:found

C. 輸出結果為: not found others

D. 輸出結果為: found others

22. 在ORACLE中,關於同義詞說法錯誤的是:

A. 同義詞只能由建立同義詞的使用者使用

B. 同義詞可以和表重名

C. 共有同義詞和私有同義詞建立的許可權不同

D. 可以為儲存過程建立同義詞

23. 在ORACLE中Date日期型別,存貯日期和時間資訊,佔用幾個位元組

A. 6

B. 10

C. 8

D. 7

24. 有關執行緒的哪些敘述是對的。

A. 一旦一個執行緒被建立,它就立即開始執行。

B. 當一個執行緒因為搶先機制而停止執行,它被放在可執行佇列的前面。

C. 一個執行緒可能因為不同的原因停止(cease)並進入就緒狀態。

D. 使用start()方法可以使一個執行緒成為可執行的,但是它不一定立即開始執行。

25. 下列程式段執行後,t5的結果是:

int t1=5,t2=6,t3=7,t4,t5;

t4=t1<t2?t1:t2;< p="">

t5=t4<t3?t4:t3;< p="">

A. 7

B. 5

C. 6

26. 下面哪一個引數不是儲存過程接受的引數

A. INPUT

B. INOUT

C. IN

D. OUT

27. 54. 執行如下兩個查詢,結果為:

SELECT ename name, sal salary FROM emp order by salary;

SELECT ename name, sal "SALARY" FROM emp order by sal ASC;

A. 兩個查詢結果完全相同

B. 第二個查詢正確,第一個查詢錯誤

C. 第一個查詢正確,第二個查詢錯誤

D. 兩個查詢結果不同

28. EJB例項通過下面哪個介面與容器進行互動?

A. Handle

B. EJBContext

C. EJBHome

D. EJBObject

E. HomeHandle

29. 下面哪個Map是排序的?

A. TreeMap

B. HashMap

C. Hashtable

D. WeakHashMap

E. LinkedHashMap

30. transient 變數和下面哪一項有關?

A. Cloneable

B. Serializable

C. Runnable

D. Throwable

E. Comparable

31. 執行下列語句後,i 和n的值為( )int i=10;int n= i++%5;

A. 10,0

B. 11,0

C. 10,1

D. 11,1

32. 隨著Java技術的不斷髮展,Sun公司根據市場進一步將Java細分,其中針對普通PC應用的是( )

A. J2EE

B. JDK

C. J2ME

D. J2SE

1. 以下建立了幾個物件

String A,B,C

A="a";

B="b":

A=A+B;

StringBuffer D=new StringBuffer("abc");

D=D.append("567");

A. 6

B. 4

C. 3

D. 5

2. J2EE的三層結構包括表示層、中間層、()。

A. 儲存層

B. 服務層

C. 中間層

D. 資料層

3. 下面那種服務不是JNDI應用範圍。

A. JMS

B. JDBC

C. Servlet

D. EJB

4. 要想在你的檢視上成功的執行查詢需要做什麼?

A. 基礎表必須在同一個 使用者模式中

B. 只能在基礎表中有select許可權

C. 基礎表中必須有資料

D. 在檢視中需要有select許可權

5. 在資料庫中,產生資料不一致的根本原因是

A. 資料冗餘

B. 資料儲存量太大

C. 沒有嚴格保護資料

D. 未對資料進行完整性控制

6. 評估下面的一組SQL語句:

CREATE TABLE dept

(deptno NUMBER(2),

dname VARCNAR2(14),

1oc VARCNAR2 (13));

ROLLBACK;

DESCRIBE DEPT

下面關於該組語句的哪個描述是正確的?

A. DESCRIBE DEPT語句將返回一個錯誤ORA-04043: object DEPT does not exist.

B. DESCRIBE DEPT語句將顯示DEPT表的結構描述內容

C. ROLLBACK語句將釋放DEPT佔用的儲存空間

D. DESCRIBE DEPT語句將只有在ROLLBACK之前引入一個COMMIT語句時,才會顯示DEPT表的結構描述內容

7. 下列哪一個選項按照順序包括了OSI模型的七個層次:( )

A. 網路層 傳輸層 物理層 資料鏈路層 會話層 表示層 應用層

B. 物理層 資料鏈路層 網路層 傳輸層 會話層 表示層 應用層

C. 物理層 資料鏈路層 會話層 網路層 傳輸層 表示層 應用層

D. 物理層 資料鏈路層 傳輸層 網路層 會話層 表示層 應用層

8. TCP協議在每次建立或拆除連線時,都要在收發雙方之間交換____報文。

A. 四個

B. 一個

C. 兩個

D. 三個

9. 下列關於描述XML和HTML的差異不正確的是

A. XML的語法比HTML嚴格

B. XML擴充套件性比HTML強

C. 解析XML的效能優於HTML

D. XML與HTML互補

10. 檔案系統與()密切相關,它們共同為使用者使用檔案提供方便

A. 作業管理

B. 儲存管理

C. 裝置管理

D. 處理器管理

11. 以下哪一項不是程序和程式的區別?

A. 程式可以長期儲存,程序是暫時的

B. 程式只能在前臺執行,而程序可以在前臺或後臺執行

C. 程式沒有狀態,而程序是有狀態的

D. 程式是一組有序的靜態指令。程序是一次程式的執行過程

12. 在UML提供的圖中,( )用於按時間順序描述物件間的互動。

A. 序列圖

B. 狀態圖

C. 協作圖

D. 網路圖

13. 黑盒測試也稱為功能測試。黑盒測試不能發現

A. 介面是否有錯誤

B. 終止性錯誤

C. 輸入是否正確接收

D. 是否存在冗餘程式碼

14. 不同級別的使用者對同一物件擁有不同的訪問權利或某個客戶端不能直接操作到某個物件,

但又必須和那個物件有所互動,這種情況最好使用什麼設計模式。

A. Fa?ade模式

B. Proxy模式

C. Adapter模式

D. Bridge模式

15. 下面哪項不是web容器的部署描述符的作用。

A. 對映到Servlet/JSP的請求

B. 定義歡迎和錯誤頁面

C. 定義MIME引數

D. 定義遠端介面

E. 初始化引數

F. 安全授權和認證

16. 表的主鍵特點中,說法錯誤的是:

A. 主鍵的每一列都必須非空

B. 主鍵的每一列都必須唯一

C. 一個表只能定義一個住鍵

D. 主鍵可以定義在表級或列級

17. Oracle中可變長度的字串型別用以下的哪個關鍵字表示:

A. NUMBER

B. VARCHAR2

C. CHAR

D. BOOLEAN

18. 以下程式碼完成畫線功能,所畫線的顏色是:

g.setColor(Color.red.green.yello.cyan);

g.drawLine(0,0,100,100);

A. yello

B. red

C. cyan

D. green

19. 建立一個標識有“關閉”按鈕的語句是:

A. Button b=new Button("關閉");

B. TextField b=new TextField("關閉");

C. Checkbox b=new Checkbox("關閉");

D. Label b=new Label("關閉");

20. 為了提高測試的效率,應該:

A. 在完成編碼以後制定軟體的測試計劃

B. 集中對付那些錯誤群集的程式

C. 隨機選取測試資料

D. 取一切可能的輸入資料作為測試資料

21. 軟體生命週期中所花費用最多的階段是:

A. 軟體維護

B. 軟體測試

C. 詳細設計

D. 軟體編碼

22. 在ORACLE中,刪除emp表的全部資料,但不提交,以下正確的語句是:

A. TRUNCATE TABLE EMP

B. DELETE TABLE EMP

C. DELETE FROM EMP

D. DELETE * FROM EMP

23. 在ORACLE中,下面哪個符號可以放到一個檔案中的一行前面來標示註釋。

A. !

B. &

C. $

D. #

24. 下面這些方法中()方法不是Applet的基本方法。

A. stop()

B. run()

C. init()

D. start()

25. 類Teacher和Student是類Person的子類:

Person p;

Teacher t;

Student s;

//p,t and s are all non-null.

if(t instanceof Person) {s=(Student)t;}

最後一句語句的結果是:

A. 編譯時正確,但執行時錯誤

B. 將構造一個Student物件

C. 表示式是錯誤的

D. 表示式是合法的

26. 軟體設計中劃分模組的一個準則是

A. 低內聚高耦合

B. 低內聚低耦合

C. 高內聚低耦合

D. 高內聚高耦合

27. 下面哪個Set是排序的? TreeSet

A. LinkedHashSet

B. HashSet

C. TreeSet

D. AbstractSet

28. 哪個類或者介面不包括在JDK Collection Framework中?

A. Iterator

B. Arrays

C. TreeMap

D. Enumeration

E. Collections

29. 如果你被要求寫一段程式碼讀取一個文字檔案,那麼一般使用哪種Stream?

A. DataInputStream

B. ObjectInputStream

C. FileReader

D. FileInputStream

30. java程式執行入口的main方法的返回型別是什麼?

A. static

B. void

C. boolean

D. int

31. 在下面的程式碼中:public class AyeAye{ int i = 40; int j;

public AyeAye(){ setValue(i++); }

void setValue(int inputValue){ int i = 20; j = i + 1;

System.out.println(“j = ” + j); }}當setValue( )方法顯示變數j時,該變數的值為多少?

A. 21

B. 42

C. 40

D. 20

32. 下面關於預設構造方法的描述中正確的是( )

A. 當類中沒有定義任何構造方法時,Java編譯器將為這個類建立預設構造方法

B. 預設構造方法可以初始化其他方法中定義的變數

C. Java編譯器會為所有的類建立預設構造方法。

D. 如果在一個類中定義的構造方法都聲明瞭引數,Java編譯器將為這個類建立一個預設構造方法

1. 有關執行緒的哪些敘述是對的。

A. 一旦一個執行緒被建立,它就立即開始執行。

B. 當一個執行緒因為搶先機制而停止執行,它被放在可執行佇列的前面。

C. 使用start()方法可以使一個執行緒成為可執行的,但是它不一定立即開始執行。

D. 一個執行緒可能因為不同的原因停止(cease)並進入就緒狀態。

2. 關於finally塊中的程式碼描述正確的是:

A. 關於finally塊中的程式碼描述正確的是:

B. 異常沒有發生時才被執行

C. 如果try塊後沒有catch塊時,finally塊中的程式碼才會執行

D. 異常發生時才被執行

3. 下列程式碼編譯和執行後的結果是

public class Test {

public void myMethod(Object o) {

System.out.println("My Object");

}

public void myMethod(String s) {

System.out.println("My String");

}

public static void main(String args[]) {

Test t = new Test();

t.myMethod(null);

}

}

A. 程式碼不列印任何東西

B. 程式碼打印出"My String"

C. 程式碼打印出"My Object"

D. 程式碼丟擲一個Runtime的異常

4. 資料庫中只存放檢視的?

A. 操作

B. 定義

C. 限制

D. 對應的資料

5. Oracle中VARCHAR2型別的最大長度是:

A. 1000

B. 4000

C. 2000

D. 3000

6. 下面哪個語句用於開啟一個已經存在的約束? E

A. ALTER TABLE table_name TURN ON CONSTRAINT constraint _ name;

B. ALTER TABLE table_name TURN ON CONSTRAINT constraint _ name;

C. ALTER TABLE table_name ENABLE constraint_name;

D. ALTER TABLE table_name STATUS = ENABLE CONSTRAINT constraint _ name;

E. ALTER TABLE table_name ENABLE CONSTRAINT constraint _ name;

F. ALTER TABLE table_name STATUS = ENABLE CONSTRAINT constraint _ name;

7. 下述論述中不正確的是( )

A. IPV6具有高效IP包頭

B. IPV6採用主機地址自動配置

C. IPV6地址採用64位

D. IPV6增強了安全性

8. TCP協議在每次建立或拆除連線時,都要在收發雙方之間交換_________ 報文。

A. 一個

B. 兩個

C. 四個

D. 三個

9. 下列關於描述XML和HTML的差異不正確的是

A. XML擴充套件性比HTML強

B. 解析XML的效能優於HTML

C. XML與HTML互補

D. XML的語法比HTML嚴格

10. 以下哪一項不是程序和程式的區別?

A. 程式是一組有序的靜態指令。程序是一次程式的執行過程

B. 程式可以長期儲存,程序是暫時的

C. 程式只能在前臺執行,而程序可以在前臺或後臺執行

D. 程式沒有狀態,而程序是有狀態的

11. 作業系統具有程序管理、儲存管理、檔案管理和裝置管理的功能,在以下有關的描述中,哪一個是不正確的

A. 程序管理主要是對程式進行管理

B. 裝置管理是指計算機系統中除了CPU和記憶體以外的所有輸入、輸出裝置的管理

C. 儲存管理主要是管理記憶體資源

D. 檔案管理可以有效地支援對檔案的操作,解決檔案分享、保密和保護問題

12. 業務詞彙表在()階段產出

A. 初始階段

B. 產品化階段

C. 構建階段

D. 精化階段

13. 專案中的技術風險是通常是通過()方法來緩解的

A. 技術文件

B. 架構原型驗證

C. 程式碼複審

D. 單元測試

14. 下面哪項不是 EJB事務屬性。

A. NotSupported

B. Never

C. Mandatory

D. Request

15. 在MVC框架中,哪兩部分的訪問不是雙向的。

A. M和V

B. V和C

C. M和C

16. PL/SQL 包中不包含的元素為:

A. 儲存過程

B. 儲存函式

C. 表

D. 遊標

17. 以下語句的作用是:

SELECT ename,sal FROM emp WHERE sal<(SELECT min(sal) FROM emp)+1000

A. 顯示工資低於1000元的僱員資訊

B. 將僱員工資小於1000元的工資增加1000後顯示

C. 顯示不超過最低工資1000元的僱員資訊

D. 顯示超過最低工資1000元的僱員資訊

18. 對於下列程式碼:哪些表示式返回值為true。

public class Sample{

long length;

public Sample(long l){ length=l;}

public static void main(String arg[])

{

Sample s1,s2,s3;

s1=new Sample(21L);

s2=new Sample(21L);

s3=s2;

}

}

A. s1==s2;

B. s2.equals(s3)

C. s1.equals(s2)

D. s2!=s3;

19. 下面哪項是int型的取值範圍(用2 15表示2的15次方)?

A. -2 63- 2 63-1

B. -2 15 -- 2 15-1

C. -2 31 -- 2 31-1

D. 0 -- 2 16-1

20. 已知二元樹後序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍歷序列是:

A. acbed

B. decab

C. deabc

D. cedba

21. 在PL/SQL中,下列有關函式的特點說法錯誤的是:

A. 函式必須定義返回型別

B. 函式引數的型別只能是IN

C. 函式的呼叫應使用EXECUTE命令

D. 在函式體內可以多次使用RETURN語句

22. 在ORACLE中執行下面SQL的結果為:

Select instr('Mississippi','i',3,3) from dual

A. 11

B. 10

C. 7

D. 8

23. 已知A類被打包在packageA中,B類被打包在packageB中,且B類被宣告為public,且

有一個成員變數x被宣告為protected控制方式,C類也位於packageA包,且繼承了B類,則以下說法中正確的'是:

A. A類的例項不能訪問到B類的例項

B. A類的例項能夠訪問到B類的一個例項的x成員

C. C類的例項可以訪問到B類的一個例項的x成員

D. C類的例項不能訪問到B類的例項

24. 下列程式段執行後,t5的結果是:

int t1=5,t2=6,t3=7,t4,t5;

t4=t1<t2?t1:t2;< p="">

t5=t4<t3?t4:t3;< p="">

A. 7

B. 5

C. 6

25. 以下識別符號中( )是不合法的。

A. BigM

B. 1s

C. $1

D. $I

26. 54. 執行如下兩個查詢,結果為:

SELECT ename name, sal salary FROM emp order by salary;

SELECT ename name, sal "SALARY" FROM emp order by sal ASC;

A. 兩個查詢結果完全相同

B. 第一個查詢正確,第二個查詢錯誤

C. 兩個查詢結果不同

D. 第二個查詢正確,第一個查詢錯誤

27. 釋放SessionBean使用的某些資源或者重新整理Entity Bean的快取的程式碼一般實現在哪個方法中?

A. ejbRemove

B. ejbLoad

C. ejbStore

D. ejbActivate

E. ejbPassivate

28. 哪個HTTP Method可以用來傳遞大資料量?

A. POST

B. PUT

C. DELETE

D. HEAD

E. GET

29. 如果配置一個Servlet需要使用的引數,最好在哪個方法中載入?

A. destory

B. doGet

C. doPost

D. service

E. init

30. 下面哪個Map最適合用來實現LRU Cache?

A. Hashtable

B. TreeMap

C. HashMap

D. IdentityHashMap

E. WeakHashMap

31. 執行下列語句後,i 和n的值為( )int i=10;int n= i++%5;

A. 10,0

B. 11,1

C. 10,1

D. 11,0

32. 下列識別符號中,( )是正確的變數名?

A. int

B. one-hundred

C. 1thing

D. thing1

多選題

33. 訊息型別Web服務適合下面哪些情況:

A. Web服務是資料驅動的

B. 呼叫Web服務的客戶機要求立即響應

C. Web服務是面向過程的

D. Web服務功能在非同步環境中

34. 下面敘述哪些是正確的

A. java介面包含函式宣告和常量宣告

B. java中的集合類(如Vector)可以用來儲存任何型別的物件,且大小可以自動調整。但需要事先知道所儲存物件的型別,才能正常使用

C. 在java中,可以用異常(Exception)來丟擲一些並非錯誤的訊息,但這樣比直接從函式返回一個結果要花費更大的系統開銷

D. java中,子類不可以訪問父類的私有成員和受保護的成員

35. 以下關於主鍵和唯一索引的區別有哪些是正確的?

A. 主鍵:預設將是聚簇索引 唯一索引: 預設將是非聚簇索引

B. 主鍵不能空,唯一索引可以為空

C. 主鍵順序為資料的物理順序

D. 主鍵每個表只能有一個,唯一索引可以多個

36. 下列HTTP錯誤程式碼描述正確的是:

A. HTTP 502 - 閘道器錯誤

B. HTTP 403 - 禁止訪問

C. HTTP 404 - 無法找到檔案

D. HTTP 500 - 請求無效

37. SSL協議提供的服務主要有

A. 壓縮資料降低網路傳輸的資料量

B. 認證使用者和伺服器,確保資料傳送到正確的客戶機和伺服器

C. 維護資料的完整性,確保資料在傳輸過程中不被改變

D. 加密資料以防止資料中途被竊取

38. 在不指定特殊屬性的情況下,哪幾種HTML標籤可以手動輸入文字

A.

B.

C.

D.

39. 可能與正在執行的程序無關的中斷事件有()等

A. 硬體故障

B. 程式性

C. 外部

D. 輸入/輸出

E. 訪管

40. 需求規格說明書需要包含的內容有

A. 效能需求

B. 資源需求

C. 安全性需求

D. 功能性需求

41. J2EE的三層模型是指:

A. 企業資訊系統層

B. 客戶層

C. WEB層

D. 中間層

42. 若下面指定的目錄和檔名都存在,建立FileInputStream物件的語句正確的是:

A. File file=new File("1.txt");FileInputStream fis =new FileInputStream(file);

B. FileInputStream fis =new FileInputStream(" d:java1.txt ");

C. FileInputStream fis =new FileInputStream("java/1.txt");

D. FileInputStream fis =new FileInputStream("d:java1.txt");

43. 下面的說法正確的是:

A. Java中IO流的處理通常分為輸入和輸出兩個部分。

B. Reader與Writer類是用來處理字元流,也就是純文字檔案。

C. File類是輸入/輸出流類的子類。

D. InputStream與OutputStream類通常是用來處理位元組流,也就是二進位制檔案。

44. Which correctly create a two dimensional array of integers?

A. int [][]a = new int[10][10];

B. int a[10][10] = new int[][];

C. int a[][] = new int[10][10];

D. int a[][] = new int[][];

45. 定義整型變數:int n=456;,表示式的值為5的是:

A. n%10

B. n/10

C. (n-n/100*100)/10

D. n/10%10

46. 下面哪些資源可以通過JNDI介面訪問?

A. 檔案系統

B. DNS域名解析服務

C. LDAP目錄服務

D. J2EE容器中的JNDI Tree

47. 下面對陣列的操作程式碼哪個是正確的?

A. char[] a= "hello world".toCharArray();

B. int len= a.length;

C. char c= a[999];

D. char c= a[0];

a.equals( new Object());

Class cc= a.getClass();

33. 訊息型別Web服務適合下面哪些情況:

A. 呼叫Web服務的客戶機要求立即響應

B. Web服務是資料驅動的

C. Web服務功能在非同步環境中

D. Web服務是面向過程的

34. 下面哪幾點是Hibernate的優勢?

A. 對JDBC訪問資料庫的程式碼做了封裝,大大簡化了資料訪問層繁瑣的重複性程式碼

B. Hibernate是一個基於JDBC的主流持久化框架,是一個優秀的ORM實現。他很大程度的簡化DAO層的編碼工作

C. hibernate使用Java反射機制,而不是位元組碼增強程式來實現透明性

D. hibernate的效能非常好,因為它是個輕量級框架。對映的靈活性很出色。它支援各種關係資料庫,從一對一到多對多的各種複雜關係

35. 在ORACLE中,下面哪些命令用來處理事務:

A. commit

B. savepoint

C. set transaction

D. rollback

36. 下列HTTP錯誤程式碼描述正確的是:

A. HTTP 404 - 無法找到檔案

B. HTTP 403 - 禁止訪問

C. HTTP 500 - 請求無效

D. HTTP 502 - 閘道器錯誤

37. HTTP/1.1相較於 HTTP/1.0 協議的區別主要體現在:

A. 頻寬優化及網路連線的使用

B. 快取處理

C. 安全性及完整性

D. 訊息在網路中的傳送

38. 請選擇對javascript理解有誤的

A. JScript是javascript的簡稱

B. FireFox和IE存在大量相容性問題的主要原因在於他們對javascript的支援不同上

C. javascript是網景公司開發的一種Java指令碼語言,其目的是為了簡化Java的開發難度

D. AJAX技術一定要使用javascript技術

39. 可能與正在執行的程序無關的中斷事件有()等

A. 硬體故障

B. 外部

C. 訪管

D. 程式性

E. 輸入/輸出

40. 上下文關係圖(context diagram)的作用是

A. 定義系統的上下文和範圍

B. 定義業務規則

C. 概括與系統之間相互影響的重要的外部系統和人

D. 外部系統和人與系統之間互動的方式

41. 關於J2EE描述正確的是:

A. 是一種利用Java 2平臺來簡化企業解決方案的開發、部署和管理相關的複雜問題的體系結構

B. 一個J2EE應用必須是基於Web的

C. J2EE提供了對 EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技術的全面支援

D. J2EE是一個產品

42. 編譯執行下面的程式,說法正確的有 :

import java.io.*;

public class A{

public static void main(String[] x){

String s="1234567890abcdefghijklmnopq";

byte[] b=s.getBytes();

try{

File f=new File("B.txt");

FileOutputStream out=new FileOutputStream(f);

out.write(b,10,10);

out.write(b,0,5);

}catch (IOException e){

System.out.println(e.getMessage());

}

}

}

A. 丟擲一個可以被捕獲的IOException

B. 程式編譯正常,並在當前目錄下生成檔案B.txt,檔案內容為abcdefghij12345

C. 編譯正常,但執行時出現錯誤

D. 程式編譯正常,但螢幕沒有任何輸出

43. 下面關於變數及其範圍的陳述哪些是正確的。

A. 例項變數是類的成員變數。

B. 在方法中定義的區域性變數在該方法被執行時建立 。

C. 區域性變數在使用前必須被初始化。

D. 例項變數用關鍵字static宣告。

44. 下面關於float數的定義正確的是:

A. float f=-5;

B. float f=0x0687;

C. float f=1.0;

D. float f=7.8f;

45. 在Java中判斷applet的來源的方法有:

A. getCodebase()

B. getDocumentbase()

C. getCodeBase()

D. getDocumentBase()

46. 下面程式碼中對result描述正確的是?

InputStream in=...;

byte[] buff= new byte[1024];

int result= in.read( buff, 0, 256);

A. result 可能等於 -1

B. result 可能等於 0

C. result 可能等於 256

D. result 可能等於 1024

47. 下面對陣列的操作程式碼哪個是正確的?

char[] a= "hello world".toCharArray();

A. int len= a.length;

B. char c= a[999];

C. a.equals( new Object());

D. char c= a[0];

E. Class cc= a.getClass();

33. 下面敘述哪些是正確的

A. java介面包含函式宣告和常量宣告

B. java中的集合類(如Vector)可以用來儲存任何型別的物件,且大小可以自動調整。但需要事先知道所儲存物件的型別,才能正常使用

C. java中,子類不可以訪問父類的私有成員和受保護的成員

D. 在java中,可以用異常(Exception)來丟擲一些並非錯誤的訊息,但這樣比直接從函式返回一個結果要花費更大的系統開銷

34. 面哪個語句能夠正確地建立一個InputStreamReader的例項?

A. new InputStreamReader(new FileReader("data"))

B. new InputStreamReader(new FileInputStream("data"))

C. new InputStreamReader(new BufferedReader("data"))

D. new InputStreamReader("data")

E. new InputStreamReader(System.in)

35. 在ORACLE中,下面哪些命令用來處理事務:

A. rollback

B. savepoint

C. set transaction

D. commit

36. 下列HTTP錯誤程式碼描述正確的是:

A. HTTP 502 - 閘道器錯誤

B. HTTP 403 - 禁止訪問

C. HTTP 500 - 請求無效

D. HTTP 404 - 無法找到檔案

37. 下面哪種協議執行在應用層:( )

A. FTP

B. IP

C. TCP

D. DNS

38. 下面哪些關於HTML的描述是正確的

A. div和table都可以用來做頁面佈局

B. HTML中指定頁面編碼的關鍵詞是charset

C. html程式碼必須按照規範才能夠在瀏覽器中顯示

D. HTML是一種自描述的語言

39. 可能與正在執行的程序無關的中斷事件有()等

A. 訪管

B. 外部

C. 輸入/輸出

D. 程式性

E. 硬體故障

40. 需求規格說明書需要包含的內容有

A. 安全性需求

B. 效能需求

C. 功能性需求

D. 資源需求

41. 關於J2EE描述正確的是:

A. 一個J2EE應用必須是基於Web的

B. J2EE是一個產品

C. 是一種利用Java 2平臺來簡化企業解決方案的開發、部署和管理相關的複雜問題的體系結構

D. J2EE提供了對 EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技術的全面支援

42. 下面關於float數的定義正確的是:

A. float f=1.0;

B. float f=7.8f;

C. float f=0x0687;

D. float f=-5;

43. JNDI結構包含的三個主要層次是:

A. 實現層

B. JNDI API 層

C. 資料層

D. 應用層

44. public void test() {

try { oneMethod();

System.out.println("condition 1");

} catch (ArrayIndexOutOfBoundsException e) {

System.out.println("condition 2");

} catch(Exception e) {

System.out.println("condition 3");

} finally {

System.out.println("finally");

}

}

在oneMethod()方法執行正常的情況下將顯示什麼?

A. condition 2

B. condition 3

C. condition 1

D. finally

45. Which correctly create a two dimensional array of integers?

A. int [][]a = new int[10][10];

B. int a[][] = new int[10][10];

C. int a[][] = new int[][];

D. int a[10][10] = new int[][];

46. 執行下面的哪些命令將釋放使用者以前持有的所有表鎖?選出所有正確的答案

A. UPDATE emp SET sal = 3000 WHERE ename = ‘SMITH’;

B. ALLTER TABLE emp ADD UNIQUE (ename);

C. COMMIT;

D. EXIT;

47. 下面哪項語句執行完成後返回 0 ?

int i= 0xFFFFFFFF;

int j= 0x0;

A. i<<2

B. i & j

C. ~i

D. i ^ j

E. i | j

33. 下面哪項是 EJB事務屬性?

A. NotSupported

B. Mandatory

C. Request

D. Never

34. 面哪個語句能夠正確地建立一個InputStreamReader的例項?

A. new InputStreamReader(System.in)

B. new InputStreamReader(new FileInputStream("data"))

C. new InputStreamReader(new BufferedReader("data"))

D. new InputStreamReader(new FileReader("data"))

E. new InputStreamReader("data")

35. 以下關於主鍵和唯一索引的區別有哪些是正確的?

A. 主鍵順序為資料的物理順序

B. 主鍵:預設將是聚簇索引 唯一索引: 預設將是非聚簇索引

C. 主鍵每個表只能有一個,唯一索引可以多個

D. 主鍵不能空,唯一索引可以為空

36. HTTP/1.1相較於 HTTP/1.0 協議的區別主要體現在: ABCD

A. 頻寬優化及網路連線的使用

B. 訊息在網路中的傳送

C. 安全性及完整性

D. 快取處理

37. SMTP伺服器回答:"250 OK"表示:

A. SMTP 伺服器有能力傳送郵件

B. 郵件傳送成功

C. 已經準備好,可以接收郵件

D. 連線成功釋放

38. 下列關於 標籤說法正確的是

A. 目前不推薦使用 標籤

B. 標籤可以用於包含物件,比如視訊、applet等

C. applet使用標籤時,標籤不支援 jre 的自動安裝

D. applet使用標籤時,標籤僅僅支援 IE 瀏覽器使用者

39. 與命令ls -l -F wls等價的命令有:

A. ls -F -l wls

B. ls -lF wls

C. ls -Fl wls

D. ls wls -F -l

40. 上下文關係圖(context diagram)的作用是

A. 定義系統的上下文和範圍

B. 外部系統和人與系統之間互動的方式

C. 概括與系統之間相互影響的重要的外部系統和人

D. 定義業務規則

41. 下面有關宣告的哪些敘述是正確的。

A. 對原始資料型別例如boolean,byte的變數的宣告不會為該變數分配記憶體空間。

B. 對原始資料型別例如boolean,byte的變數的宣告將為之分配記憶體空間。

C. 非原始資料型別例如String,Vector的變數的宣告會為該物件分配記憶體。

D. 非原始資料型別例如String,Vector的變數的宣告不會為該物件分配記憶體。

42. 訊息型別Web服務適合下面哪些情況:

A. 呼叫Web服務的客戶機要求立即響應

B. Web服務是面向過程的

C. Web服務功能在非同步環境中

D. Web服務是資料驅動的

43. 下面哪些情況適合考慮使用有狀態會話bean。

A. 在方法呼叫期間,會話bean需要維護成員變數的資料

B. 會話bean提供的服務不具體針對某種客戶端

C. 會話bean需要跨越多個方法呼叫,維護客戶端的資訊

D. 例項化會話bean的時候,必須初始化會話bean的狀態

44. 關於JSP和SERVLET的描述正確的是:

A. JSP技術構建在SERVLET上,它是支援HTML和XML頁面製作的SERVLET技術的擴充套件

B. JSP能夠訪問Java API,具備SERVLET的全部優點。

C. 訪問JSP頁面,需要預編譯成SERVLET

D. JSP頁面只能在接受請求時動態編譯成SERVLET

45. 若下面指定的目錄和檔名都存在,建立FileInputStream物件的語句正確的是:

A. FileInputStream fis =new FileInputStream("d:java1.txt");

B. FileInputStream fis =new FileInputStream("java/1.txt");

C. File file=new File("1.txt");FileInputStream fis =new FileInputStream(file);

D. FileInputStream fis =new FileInputStream(" d:java1.txt ");

大學java期末考試試題 2

1、在java中如果宣告一個類為final,表示什麼意思?

答:final是最終的意思,final可用於定義變數、方法和類但含義不同,宣告為final的類不能被繼承。

2、父類的構造方法是否可以被子類覆蓋(重寫)?

答:父類的構造方法不可以被子類覆蓋,因為父類和子類的類名是不可能一樣的。

3、請講述String 和StringBuffer的區別。

答:String 類所定義的物件是用於存放“長度固定”的字串。

StringBuffer類所定義的物件是用於存放“長度可變動”的字串。

4、如果有兩個類A、B(注意不是介面),你想同時使用這兩個類的功能,那麼你會如何編寫這個C類呢?

答:因為類A、B不是介面,所以是不可以直接繼承的,但可以將A、B類定義成父子類,那麼C類就能實現A、B類的功能了。假如A為B的父類,B為C的父類,此時C就能實現A、B的功能。

5、結合Java視訊Lesson5(多執行緒),分析sleep()和wait()方法的區別。

答: Sleeping睡眠的意思 : sleep() 方法用來暫時中止執行的執行緒。在睡眠後,執行緒將進入就緒狀態。

waiting等待的意思: 如果呼叫了 wait() 方法,執行緒將處於等待狀態。用於在兩個或多個執行緒併發執行時。

6、談談你對抽象類和介面的理解。

答:定義抽象類的目的是提供可由其子類共享的一般形式、子類可以根據自身需要擴充套件抽象類、抽象類不能例項化、抽象方法沒有函式體、抽象方法必須在子類中給出具體實現。他使用extends來繼承。

介面:一個介面允許一個類從幾個介面繼承而來,Java 程式一次只能繼承一個類但可以實現幾個介面,介面不能有任何具體的方法,介面也可用來定義可由類使用的一組常量。其實現方式是interface來實現。

大學java期末考試試題 3

1)Java 中能建立 Volatile 陣列嗎?

能,Java 中可以建立 volatile 型別陣列,不過只是一個指向陣列的引用,而不是整個陣列。我的意思是,如果改變引用指向的陣列,將會受到 volatile 的保護,但是如果多個執行緒同時改變陣列的元素,volatile 標示符就不能起到之前的保護作用了。

2)volatile 能使得一個非原子操作變成原子操作嗎?

一個典型的例子是在類中有一個 long 型別的成員變數。如果你知道該成員變數會被多個執行緒訪問,如計數器、價格等,你最好是將其設定為 volatile。為什麼?因為 Java 中讀取 long 型別變數不是原子的,需要分成兩步,如果一個執行緒正在修改該 long 變數的值,另一個執行緒可能只能看到該值的一半(前 32 位)。但是對一個 volatile 型的 long 或 double 變數的讀寫是原子。

3)volatile 修飾符的有過什麼實踐?

一種實踐是用 volatile 修飾 long 和 double 變數,使其能按原子型別來讀寫。double 和 long 都是64位寬,因此對這兩種型別的讀是分為兩部分的,第一次讀取第一個 32 位,然後再讀剩下的 32 位,這個過程不是原子的,但 Java 中 volatile 型的 long 或 double 變數的讀寫是原子的。volatile 修復符的另一個作用是提供記憶體屏障(memory barrier),例如在分散式框架中的應用。簡單的說,就是當你寫一個 volatile 變數之前,Java 記憶體模型會插入一個寫屏障(write barrier),讀一個 volatile 變數之前,會插入一個讀屏障(read barrier)。意思就是說,在你寫一個 volatile 域時,能保證任何執行緒都能看到你寫的值,同時,在寫之前,也能保證任何數值的更新對所有執行緒是可見的,因為記憶體屏障會將其他所有寫的值更新到快取。

4)volatile 型別變數提供什麼保證?(答案)

volatile 變數提供順序和可見性保證,例如,JVM 或者 JIT為了獲得更好的效能會對語句重排序,但是 volatile 型別變數即使在沒有同步塊的情況下賦值也不會與其他語句重排序。 volatile 提供 happens-before 的保證,確保一個執行緒的修改能對其他執行緒是可見的。某些情況下,volatile 還能提供原子性,如讀 64 位資料型別,像 long 和 double 都不是原子的,但 volatile 型別的 double 和 long 就是原子的。

5) 10 個執行緒和 2 個執行緒的同步程式碼,哪個更容易寫?

從寫程式碼的角度來說,兩者的複雜度是相同的,因為同步程式碼與執行緒數量是相互獨立的。但是同步策略的選擇依賴於執行緒的數量,因為越多的執行緒意味著更大的競爭,所以你需要利用同步技術,如鎖分離,這要求更復雜的程式碼和專業知識。

6)你是如何呼叫 wait()方法的?使用 if 塊還是迴圈?為什麼?(答案)

wait() 方法應該在迴圈呼叫,因為當執行緒獲取到 CPU 開始執行的時候,其他條件可能還沒有滿足,所以在處理前,迴圈檢測條件是否滿足會更好。下面是一段標準的使用 wait 和 notify 方法的程式碼:

// The standard idiom for using the wait method

參見 Effective Java 第 69 條,獲取更多關於為什麼應該在迴圈中來呼叫 wait 方法的內容。