承蒙各位厚愛,希望各位每天都能進步一點點!(鼠標選中空白處查看答案)
1、HashSet子類依靠()方法區分重復元素。
正確答案: C
toString(),equals()
clone(),equals()
hashCode(),equals()
getClass(),clone()
題解:
HashSet內部使用Map保存數據,即將HashSet的數據作為Map的key值保存,這也是HashSet中元素不能重復的原因。而Map中保存key值前,會去判斷當前Map中是否含有該key對象,內部是先通過key的hashCode,確定有相同的hashCode之后,再通過equals方法判斷是否相同。
2、下列哪個類的聲明是正確的?
正確答案: D
abstract final class HI{}
abstract private move(){}
protected private number;
public abstract class Car{}
題解:
A選項,final是最終類,不能被繼承;abstrct類是抽象類,只能被繼承,兩者沖突。
B選項,private修飾符定義的屬性及方法不能被子類實現,而抽象類的子類必須實現所有的抽象方法。兩者沖突。
C選項,修飾符重復,而且沒有定義數據類型。
D選項,正確。
3、下列關于包(package)的描述,正確的是()
正確答案: D
包(package)是Java中描述操作系統對多個源代碼文件組織的一種方式。
import語句將所對應的Java源文件拷貝到此處執行。
包(package)是Eclipse組織Java項目特有的一種方式。
定義在同一個包(package)內的類可以不經過import而直接相互使用。
題解:
A、為了更好地組織類,Java提供了包機制。包是類的容器,用于分隔類名空間。如果沒有指定包名,所有的示例都屬于一個默認的無名包。Java中的包一般均包含相關的類,java是跨平臺的,所以java中的包和操作系統沒有任何關系,java的包是用來組織文件的一種虛擬文件系統。A錯
B、import語句并沒有將對應的java源文件拷貝到此處僅僅是引入,告訴編譯器有使用外部文件,編譯的時候要去讀取這個外部文件。B錯
C、Java提供的包機制與IDE沒有關系。C錯
D、定義在同一個包(package)內的類可以不經過import而直接相互使用。
4、以下代碼執行后輸出結果為( )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public class Test { public static Test t1 = new Test(); { System.out.println( "blockA" ); } static { System.out.println( "blockB" ); } public static void main(String[] args) { Test t2 = new Test(); } } |
正確答案: A
blockAblockBblockA
blockAblockAblockB
blockBblockBblockA
blockBblockAblockB
題解:
靜態塊:用static申明,JVM加載類時執行,僅執行一次
構造塊:類中直接用{}定義,每一次創建對象時執行
執行順序優先級:靜態塊>main()>構造塊>構造方法
靜態塊按照申明順序執行,先執行Test t1 = new Test();
所以先輸出blockA,然后執行靜態塊,輸出blockB,最后執行main
方法中的Test t2 = new Test();輸出blockA。
5、Given the following code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
public class Test { private static int j = 0 ; private static Boolean methodB( int k) { j += k; return true ; } public static void methodA( int i) { boolean b; b = i < 10 | methodB( 4 ); b = i < 10 || methodB( 8 ); } public static void main(String args[]) { methodA( 0 ); System.out.println(j); } } |
正確答案: B
The program prints”0”
The program prints”4”
The program prints”8”
The program prints”12”
The code does not complete.
題解:
選 B
在main函數中先調用methodA(0)
在methodA中,第二行
b = i < 10 | methodB(4); //中間為與計算符,執行完methodB(4)后,j = 4
methodA中,第三行
b = i < 10 || methodB(8);//中間為或計算符,因為i < 10 已成立,不需要后續計算
所以最后結果輸出為4
6、下列敘述中,錯誤的是( )
正確答案: B
File類能夠存儲文件屬性
File類能夠讀寫文件
File類能夠建立文件
File類能夠獲取文件目錄信息
題解:
File類能操作文件本身,但不能對文件內容進行修改
能夠讀寫文件的是數據流(OutputStream和InputStream)
7、在Java中,對于不再使用的內存資源,如調用完成的方法,“垃圾回收器”會自動將其釋放。( )
正確答案: B
正確
錯誤
題解:
方法調用時,會創建棧幀在棧中,調用完是程序自動出棧釋放,而不是gc釋放。
JVM 內存可簡單分為三個區:
1、堆區(heap):用于存放所有對象,是線程共享的(注:數組也屬于對象)
2、棧區(stack):用于存放基本數據類型的數據和對象的引用,是線程私有的(分為:虛擬機棧和本地方法棧)
3、方法區(method):用于存放類信息、常量、靜態變量、編譯后的字節碼等,是線程共享的(也被稱為非堆,即 None-Heap)
Java 的垃圾回收器(GC)主要針對堆區
8、在Java中,關于HashMap類的描述,以下正確的是 ()
正確答案: A C D 你
HashMap使用鍵/值得形式保存數據
HashMap 能夠保證其中元素的順序
HashMap允許將null用作鍵
HashMap允許將null用作值
題解:
HashMap 不按插入順序排序,按照哈希值排序。所以無序。
但是不增刪改鍵的情況下,輸出是按照一定順序不變的。
hashMap 允許空鍵值,hashTable 則不允許。
9、以下各類中哪幾個是線程安全的?( )
正確答案: B C D
ArrayList
Vector
Hashtable
Stack
題解:
線程同步:喂,SHE
喂(Vector)
S(Stack)
H(hashtable)
E(enumeration)
10、關于Java中的ClassLoader下面的哪些描述是錯誤的:( )
正確答案: B D F
A:默認情況下,Java應用啟動過程涉及三個ClassLoader: Boostrap, Extension, System
B:一般的情況不同ClassLoader裝載的類是不相同的,但接口類例外,對于同一接口所有類裝載器裝載所獲得的類是相同的
C:類裝載器需要保證類裝載過程的線程安全
D:ClassLoader的loadClass在裝載一個類時,如果該類不存在它將返回null
E:ClassLoader的父子結構中,默認裝載采用了父優先
F:所有ClassLoader裝載的類都來自CLASSPATH環境指定的路徑
題解:
A.Java系統提供3種類加載器:啟動類加載器(Bootstrap ClassLoader) 擴展類加載器(Extension ClassLoader) 應用程序類加載器(Application ClassLoader). A正確
B.《深入理解Java虛擬機》P228:對于任意一個類,都需要由加載它的類加載器和這個類本身一同確立其在Java虛擬機中的唯一性,每一個類加載器,都擁有一個獨立的類名稱空間。這句話可以表達得更通俗一些:比較兩個類是否“相等”,只有在這兩個類是由同一個類加載器加載的前提下才有意義,否則,即使這兩個類來源于同一個Class文件,被同一個虛擬機加載,只要加載它們的類加載器不同,那么這兩個類必定不相等。接口類是一種特殊類,因此對于同一接口不同的類裝載器裝載所獲得的類是不相同的。B錯誤
C.類只需加載一次就行,因此要保證類加載過程線程安全,防止類加載多次。C正確
D. Java程序的類加載器采用雙親委派模型,實現雙親委派的代碼集中在java.lang.ClassLoader的loadClass()方法中,此方法實現的大致邏輯是:先檢查是否已經被加載,若沒有加載則調用父類加載器的loadClass()方法,若父類加載器為空則默認使用啟動類加載器作為父類加載器。如果父類加載失敗,拋出ClassNotFoundException異常。D錯誤
E.雙親委派模型的工作過程:如果一個類加載器收到了類加載的請求,它首先不會自己去嘗試加載這個類,而是把這個請求委派給父類加載器去完成,每一個層次的類加載器都是如此,因此所有的加載請求最終都應該傳送到頂層的啟動類加載器中,只有當父加載器反饋自己無法完成這個加載請求時,子加載器才會嘗試自己去加載。E正確
F.應用程序類加載器(Application ClassLoader)負責加載用戶類路徑(ClassPath)上所指定的類庫,不是所有的ClassLoader都加載此路徑。F錯誤
答案匯總:
1、正確答案: C
2、正確答案: D
3、正確答案: D
4、正確答案: A
5、正確答案: B
6、正確答案: B
7、正確答案: B
8、正確答案: A C D
9、正確答案: B C D
10、正確答案: B D F
總結
本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關注服務器之家的更多內容!
原文鏈接:https://blog.csdn.net/weixin_43883917/article/details/118874988