Java筆試題庫(05期)
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說法錯誤。