承蒙各位厚愛,我們一起每天進步一點點?。ㄊ髽诉x中空白處查看答案)
1、在運行時,由java解釋器自動引入,而不用import語句引入的包是()。
正確答案: A
java.lang
java.system
java.io
java.util
題解:
java.lang包是java語言包,是自動導入的。
java.util包是java的工具包,需要手動導入。
java.sql包,JDBC接口類,需要手動導入。
java.io;各種輸入輸入流,需要手動導入。
system是類(java.lang.sysytem)不是包,是屬于java.lang包下的
2、以下關于集合類ArrayList、LinkedList、HashMap描述錯誤的是()
正確答案: C
HashMap實現Map接口,它允許任何類型的鍵和值對象,并允許將null用作鍵或值
ArrayList和LinkedList均實現了List接口
添加和刪除元素時,ArrayList的表現更佳
ArrayList的訪問速度比LinkedList快
題解:
1.List 是一個有序集合,可以存放重復的數據 (有序:存進是什么順序,取出時還是什么順序)
(1).ArrayList 底層是數組適合查詢,不適合增刪元素。
(2).LiskedList 底層是雙向鏈表適合增刪元素,不適合查詢操作。
(3).Vector 底層和ArrayList相同,但是Vector是線程安全的,效率較低很少使用
2.Set 是一個無序集合,不允許放重復的數據 (無序不可重復,存進和取出的順序不一樣)
(1).HashSet 底層是哈希表/散列表
(2).TreeSet 繼承sartedSet接口(無需不可重復,但存進去的元素可以按照元素的大小自動排序)
3.Map 是一個無序集合,以鍵值對的方式存放數據,鍵對象不允許重復,值對象可以重復。
(1).HashMap實現不同步,線程不安全。 HashTable線程安全
(2).HashMap中的key-value都是存儲在Entry中的。
(3).HashMap可以存null鍵和null值,不保證元素的順序恒久不變,它的底層使用的是數組和鏈表,通過hashCode()方法和equals方法保證鍵的唯一性
3、列表(List)和集合(Set)下面說法正確的是? ( )
正確答案: A
Set中至多只能有一個空元素
List中至多只能有一個空元素
List和Set都可以包含重復元素的有序集合
List和Set都是有序集合
題解:
Set 不能有重復的元素,且是無序的,要有空值也就只能有一個。因為它不允許重復。 L ist 可以有重復元素,且是有序的,要有空值也可以有多個,因為它可重復
Set無序,List有序,
4、以下程序的運行結果是?
正確答案: A
foobar
barfoo
foobar或者barfoo都有可能
Bar
Foo
程序無法正常運行
題解:
這道題是考線程的調用情況,線程的啟動方式只能通過start這種方式啟動才能真正的實現多線程的效果,如果是手動調用run方法和普通方法調用沒有區別,所以這個還是按照順序執行首先執行run方法之后,執行輸出語句所以最終得到結果foobar.
如果是調用start()后,線程會被放到等待隊列,等待CPU調度,并不一定要馬上開始執行,只是將這個線程置于可動行狀態。然后通過JVM,線程Thread會調用run()方法,執行本線程的線程體。
1.start()方法來啟動線程,真正實現了多線程運行。這時無需等待run方法體代碼執行完畢,可以直接繼續執行下面的代碼;
2.run()方法當作普通方法的方式調用。程序還是要順序執行,要等待run方法體執行完畢后,才可繼續執行下面的代碼, 這樣就沒有達到寫線程的目的。
5、下面程序的輸出結果是什么。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
public class A2{ public static void main(String[] args){ int [] a={ 2 , 4 , 6 , 8 , 3 , 6 , 9 , 12 }; doSomething(a, 0 ,a.length- 1 ); for ( int i= 0 ;i<=a.length- 1 ;i++) System.out.print(a[i]+ " " ); } private static void doSomething( int [] a, int start, int end){ if (start<end){ int p=core(a,start,end); doSomething(a,start,p- 1 ); doSomething(a,p+ 1 ,end); } } private static int core( int [] a, int start, int end) { int x=a[end]; int i=start; for ( int j=start;j<=end- 1 ;j++){ if (a[j]>=x){ swap(a,i,j); i++; //交換了幾次 } } //把最大的放到最后 swap(a,i,end); //把最大的放到i的位置 return i; } private static void swap( int [] a, int i, int j) { int tmp=a[i]; a[i]=a[j]; a[j]=tmp; } } |
正確答案: C
找到最大值
找到最小值
從大到小的排序
從小到大的排序
題解:
是快速排序的另一種實現
注釋誤導,直接看core函數就會發現它是實現快速排序的一個階段 這里a[j]≥x對應從大到小排序;若改為a[j]<=x則對應從小到大排序
6、
1
2
3
4
5
6
7
8
|
public class Test { public int x; public static void main(String []args) { System. out. println( "Value is" + x); } } |
對于上面這段代碼,以下說法正確的是:
正確答案: C
程序會打出 “Value is 0”
程序會拋出 NullPointerException
非靜態變量不能夠被靜態方法引用
編譯器會拋出 "possible reference before assignment"的錯誤
題解:
非靜態成員只能被類的實例化對象引用,因此這里在靜態方法中訪問x會造成編譯出錯
7、從運行層面上來看,從四個選項選出不同的一個。
正確答案: B
JAVA
Python
objectC
C#
題解:
A,C,D都是類C語言,B不是
Python是解釋執行的,其他語言都需要先編譯
8、下面哪些標識符是正確的?
正確答案: A B
MyWorld
parseXML
–value
&maybe
題解:
標識符定義規則:
1.不能數字開頭
2.標識符用$,_,字母,數字組成
3.不能用java關鍵字,保留字(關鍵字都是小寫的)
4.不能用true,false,null來定義標識符
5.java大小寫敏感
6.沒有長度限制
9、下列哪個是合法的 Java 標識符?( )
正確答案: B C
Tree&Glasses
FirstJavaApplet
First_Applet
273.5
題解:
Java標識符:
標識符由26個英文字符大小寫(az,AZ)、數字(0~9)、下劃線(_)和美元符號($)組成;
不能以數字開頭,不能是關鍵字;
嚴格區分大小寫;
標識符的可以為任意長度;
10、以下說法中正確的有?
正確答案: A D
StringBuilder是 線程不安全的
Java類可以同時用 abstract和final聲明
HashMap中,使用 get(key)==null可以 判斷這個Hasmap是否包含這個key
volatile關鍵字不保證對變量操作的原子性
題解:
A.StringBuilder線程不安全,StringBuffer線程安全。
B.同時用 abstract和final就會自相矛盾。
C.Hashmap中的value可以之null,get(key)==null有兩種情況,一是key不存在,二是該key中存的是null,所以應該使用map.containskey(key)返回的true/false來判斷是否存在這個key。
D.volatile關鍵字有兩個作用:
1.并發環境可見性:volatile修飾后的變量能夠保證該變量在線程間的可見性,線程進行數據的讀寫操作時將繞開工作內存(CPU緩存)而直接跟主內存進行數據交互,即線程進行讀操作時直接從主內存中讀取,寫操作時直接將修改后端變量刷新到主內存中,這樣就能保證其他線程訪問到的數據是最新數據
2.并發環境有序性:通過對volatile變量采取內存屏障(Memory barrier)的方式來防止編譯重排序和CPU指令重排序,具體方式是通過在操作volatile變量的指令前后加入內存屏障,來實現happens-before關系,保證在多線程環境下的數據交互不會出現紊亂。
abstract修飾的類是抽象類,是可以繼承的,而final修飾的類表示不能再被繼承,故肯定不能共同使用。故B錯。
HashMap中提供的get(key)獲取的是變量,無法判斷是否存在key。所以C是錯的
volatile關鍵字是一種輕量級的同步機制,只保證數據的可見性,而不保證數據的原子性。故D對
答案匯總:
1、正確答案: A
2、正確答案: C
3、正確答案: A
4、正確答案: A
5、正確答案: C
6、正確答案: C
7、正確答案: B
8、正確答案: A B
9、正確答案: B C
10、正確答案: A D
總結
本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關注服務器之家的更多內容!
原文鏈接:https://blog.csdn.net/weixin_43883917/article/details/118074803