1,volatile關鍵字是否能保證執行緒安全?()
答案:否
volatile關鍵字用在多執行緒同步中,可保證讀取的可見性,JVM只是保證從主記憶體載入到執行緒工作記憶體的值是最新的讀取值,而非cache中。但多個執行緒對volatile的寫操作,無法保證執行緒安全。
假如執行緒1,執行緒2 在進行read,load 操作中,發現主記憶體中count的值都是5,那麼都會載入這個最新的值,線上程1對count進行修改之後,會write到主記憶體中,主記憶體中的count變數就會變為6;執行緒2由於已經進行read,load操作,在進行運算之後,也會更新主記憶體count的變數值為6;導致兩個執行緒及時volatile關鍵字修改之後,還是會存在併發的情況。
2,下面哪個流類屬於面向字元的輸入流( )
A、BufferedWriter
B、FileInputStream
C、ObjectInputStream
D、InputStreamReader
答案:D
Java的IO操作中有面向位元組(Byte)和麵向字元(Character)兩種方式。
面向位元組的操作為以8位為單位對二進位制的資料進行操作,對資料不進行轉換,這些類都是InputStream和OutputStream的子類。
面向字元的操作為以字元為單位對資料進行操作,在讀的時候將二進位制資料轉為字元,在寫的時候將字元轉為二進位制資料,這些類都是Reader和Writer的子類。
3,Java能不能不通過建構函式建立物件()
A、能 B、不能
答案:A
Java建立物件的幾種方式:
(1) 用new語句建立物件,這是最常見的建立物件的方法。
(2) 運用反射手段,呼叫java.lang.Class或者java.lang.reflect.Constructor類的newInstance()例項方法。
(3) 呼叫物件的clone()方法。
(4) 運用反序列化手段,呼叫java.io.ObjectInputStream物件的 readObject()方法。
(1)和(2)都會明確的顯式的呼叫建構函式 ;(3)是在記憶體上對已有物件的影印,所以不會呼叫建構函式 ;(4)是從檔案中還原類的物件,也不會呼叫建構函式。
4,下列哪個敘述是正確的()
A.子類繼承父類的構造方法。B.abstract類的子類必須是非abstract類。
C.子類繼承的方法只能操作子類繼承和隱藏的成員變數。
D.子類重寫或新增的方法也能直接操作被子類隱藏的成員變數。
答案:C
子類是不繼承父類的構造方法的,而是必須呼叫其父類的構造方法。
abstract類的子類可以是abstract類,如果是非abstract類,就必須重寫父類中所有的abstract方法。
D中子類新增的方法是不能直接操作被子類隱藏的成員變數的。
5,下列哪個敘述是正確的()
A.final類可以有子類。B.abstract類中只可以有abstract方法。
C.abstract類中可以有非abstract方法,但該方法不可以用final修飾。
D.不可以同時用final和abstract修飾同一個方法。
E.允許使用static修飾abstract方法。
答案:D
用final修飾的類是不允許被繼承的,A錯誤
abstract類中也可以有普通成員方法,B錯誤
abstract類中的非abstract方法是可以用final修飾的,而abstract方法是不可以被final修飾的,C錯誤
D同上,正確
不允許使用static修飾abstract方法,E錯誤。
6,當檢索一個壓縮檔案時,首先要建立壓縮檔案輸入流物件,該物件()
A、以選中的壓縮檔案為引數
B、以FileInputStream物件為引數
C、以InputStreamReader物件為引數
D、以BufferedReader物件為引數
答案:B
在java.io包中提供了對壓縮檔案進行操作的能力。它是通過壓縮檔案輸入流與壓縮檔案輸出流來實現的,其分別繼承自InflaterInputStream與DeflaterOutputStream。
在建立壓縮檔案輸入流時,其初始化引數是一個FileInputStream類的例項。
7,已知一個有序線性表為()(13,18,24,35,47,50,62,83,90,115,134),當用二分法查詢值為90的元素時,查詢成功的比較次數為( )
A,1 B,2 C,3 D,9
答案:B
根據二分法查詢需要兩次:首先將90與表中間的元素50進行比較,由於90大於50,所以線上性表的後半部分查詢;第二次比較的元素是後半部分的中間元素,即90,這時兩者相等,即查詢成功。
8,Java程式的併發機制是( )
A.多執行緒
B.多介面
C.多平臺
D.多型性
答案:A
Java是通過多執行緒實現併發機制的。多執行緒是指一個程式中包含多個執行流, 多執行緒程式設計的含義是可以將程式任務分成幾個並行的子任務。
9,下列選項中,不屬於模組間耦合的是( )
A.資料耦合B.標記耦合
C.異構耦合
D.公共耦合
答案:C
模組之間的耦合程度反映了模組的獨立性,也反映了系統分解後的複雜程度。 按照耦合程度從弱到強,可以將其分成7級。
分別是非直接耦合、資料耦合、標記耦合、控制 耦合、外部耦合、公共耦合和內容耦合。其中沒有異構耦合這種方式。
10,下列關於內部類的說法不正確的是 ( )
A,內部類的類名只能在定義它的類或程式段中或在表示式內部匿名使用B,內部類可以使用它所在類的靜態成員變數和例項成員變數
C,內部類不可以用abstract修飾符定義為抽象類
D,內部類可作為其他類的成員,而且可訪問它所在類的成員
答案:C
內部類不僅可以用abstract修飾定義為抽象類,也可以用private或protected定義,所以選項C說法錯誤。
上期回顧:Java筆試題庫(04期)