Java日常練習題,每天進步一點點(64)
承蒙各位厚愛,我們一起每天進步一點點!(鼠標選中空白處查看答案)
1、關於容器下面說法正確的是? ( )
正確答案:D
A 列表(List)和集合(Set)存放的元素都是可重復的。
B 列表(List)和集合(Set)存放的元素都是不可重復的。
C 映射(Map)中key是可以重復的。
E 映射(Map)中value是可以重復的。
題解:
1、列表(List)的元素是有 序、可重復 的; 集合(Set)的元素是無序、不可重復的。
2、 List底層是數組存儲數據的,所以有序,可重復的 Set底層是HashMap,添加元素其實就是調用map的put()方法,添加的元素作為map的key,value是一個Object對象 而Hashmap底層是哈希表,數組+鏈表的形式,根據key的hashcode()方法獲取到的值與它的高16位進行一個異或運算,得到哈希值,再通過計算定位出它在數組中存放的位置,所以說是無序的,如果定位的位置有元素瞭,那就采用鏈地址法,就是比較hash值,如果有相同的新的值覆蓋掉舊的值,如果沒有,jdk1.7是新元素放在頭節點,jdk1.8是放在尾節點,當然jdk1.8新增瞭紅黑樹,這裡就不說瞭 總之,map的key不可重復,value是可以重復的
3、 list 存放的元素可重復, set 不可以。 map 使用的是鍵值對存放,可一對多,key不重復,value可重復
2、應用程序的main方法中有以下語句,則輸出的結果( ) String s1=new String( ” xyz ” ); String s2=new String( ” xyz ” ); Boolean b1=s1.equals(s2); Boolean b2=(s1==s2); System .out.print(b1+ ” ” +b2);
正確答案:A
A true false
B false true
C true true
D false false
題解:
1、又錯瞭的人來回答一下: String a = “a”; String b = “a”; 這樣定義的a和b指向的是字符串常量區變量,地址是一樣的,即用equals為true,用==也為true。 但是 String a =new String( “a”); String b = new String( “a”); 這樣是定義瞭兩個堆內存對象,隻能equals,不能==
2、 String s1=new String( ” xyz ” ); //創建瞭String類型的內容為xyz的s1對象 String s2=new String( ” xyz ” ); //創建瞭String類型的內容為xyz的s2對象 Boolean b1=s1.equals(s2); //比較s1對象和s2對象的內容相等,返回true。 Boolean b2=(s1==s2); //比較s1和s2兩個對象的存儲地址是否相等,明顯兩者分別存儲在不同的地址,所以返回:false。 故答案為:true false
3、當你編譯和運行下面的代碼時,會出現下面選項中的哪種情況? public class Pvf{
static boolean Paddy; public static void main(String args){ System.out.println(Paddy); } }
正確答案:B
A 編譯時錯誤
B 編譯通過並輸出結果false
C 編譯通過並輸出結果true
D 編譯通過並輸出結果null
題解:
1、 成員變量有默認初始值,可以不用賦值,boolean的默認值為false, 局部變量必須賦值。否則編譯錯誤。
4、下列哪些語句關於內存回收的說明是正確的? ( )
正確答案:B
A 程序員必須創建一個線程來釋放內存
B 內存回收程序負責釋放無用內存
C 內存回收程序允許程序員直接釋放內存
D 內存回收程序可以在指定的時間釋放內存對象
題解:
1、選B。 A、JVM一旦啟動,就會創建一個守護線程來監測是否需要有對象內存被釋放。 C、無法直接釋放。 D、不可以指定時間,System.gc(),隻是提醒JVM可以進行一次Full GC,但是什麼時候真正執行,還是不知道的。
2、 在空閑時間以不定時的方式動態回收無任何引用的對象占據的內存空間
3、 程序 程序員 因缺思聽,看混
5、關於 Socket 通信編程,以下描述錯誤的是:( )
正確答案:D
A 服務器端通過new ServerSocket()創建TCP連接對象
B 服務器端通過TCP連接對象調用accept()方法創建通信的Socket對象
C 客戶端通過new Socket()方法創建通信的Socket對象
D 客戶端通過new ServerSocket()創建TCP連接對象
題解:
1、Socket套接字 就是源Ip地址,目標IP地址,源端口號和目標端口號的組合 服務器端:ServerSocket提供的實例 ServerSocket server= new ServerSocket(端口號) 客戶端:Socket提供的實例 Socket soc=new Socket(ip地址,端口號)
6、JVM內存不包含如下哪個部分( )
正確答案:D
A Stacks
B PC寄存器
C Heap
D Heap Frame
題解:
1、JVM內存五大區域:
2、 PC寄存器即程序計數器
7、下面有關servlet service描述錯誤的是?
正確答案:B
A 不管是post還是get方法提交過來的連接,都會在service中處理
B doGet/doPost 則是在 javax.servlet.GenericServlet 中實現的
C service()是在javax.servlet.Servlet接口中定義的
D service判斷請求類型,決定是調用doGet還是doPost方法
題解:
1、 doget/dopost與Http協議有關,是在 javax.servlet.http.HttpServlet 中實現的
2、 GenericServlet 抽象類 給出瞭設計 servlet 的一些骨架,定義瞭 servlet 生命周期,還有一些得到名字、配置、初始化參數的方法,其設計的是和應用層協議無關的
8、下面哪些具體實現類可以用於存儲鍵,值對,並且方法調用提供瞭基本的多線程安全支持:( )
正確答案:AE
A java.util.ConcurrentHashMap
B java.util.Map
C java.util.TreeMap
D java.util.SortMap
E java.util.Hashtable
F java.util.HashMap
題解:
1、線程安全的類有hashtable concurrentHashMap synchronizedMap
2、 java.util.concurrent.ConcurrentHashMap 線程安全 java.util.Map 接口 java.util.TreeMap java.util.SortedMap 接口 java.util.Hashtable 線程安全 java.util.HashMap
3、 ConcurrentHashMap 鍵值對不可以為空,線程安全 java.util.Map是一個接口 java.util.TreeMap 鍵值對不可以為空,非線程安全 java.util.SortedMap 這是個接口並且擴展瞭Map接口,它確保條目按升序鍵維護。 java.util.Hashtable 鍵值對不可以為空,線程安全 java.util.HashMap鍵值對可以為空,非線程安全
9、
Consider the following code: Integer s=new Integer(9);
Integer t=new Integer(9);
Long u=new Long(9);Which test would return true?
正確答案:CDE
A (s==u)
B (s==t)
C (s.equals(t))
D (s.equals(9))
E (s.equals(new Integer(9))
題解:
1、 int和int之間,用==比較,肯定為true。基本數據類型沒有equals方法 int和Integer比較,Integer會自動拆箱,==和 equals都肯定為true int和new Integer比較,Integer會自動拆箱,調用intValue方法
2、 所以 == 和 equals都肯定為true Integer和Integer比較的時候,由於直接賦值的話會進行自動的裝箱。所以當值在-128
3、127中的時候,由於值緩存在IntegerCache中,那麼當賦值在這個區間的時候,不會創建新的Integer對象,而是直接從緩存中獲取已經創建好的Integer對象。而當大於這個區間的時候,會直接new Integer。 當Integer和Integer進行==比較的時候,在-128
4、127區間的時候,為true。不在這個區間,則為false 當Integer和Integer進行equals比較的時候,由於Integer的equals方法進行瞭重寫,比較的是內容,所以為true Integer和new Integer : new Integer會創建對象,存儲在堆中。而Integer在-128
10、下面幾個關於Java裡queue的說法哪些是正確的()?
正確答案:AC
A LinkedBlockingQueue是一個可選有界隊列,不允許null值
B PriorityQueue,LinkedBlockingQueue都是線程不安全的
C PriorityQueue是一個無界隊列,不允許null值,入隊和出隊的時間復雜度是O(log(n))
D PriorityQueue,ConcurrentLinkedQueue都遵循FIFO原則
題解:
1、正確答案 AC 答案解析 A、LinkedBlockingQueue是一個基於節點鏈接的可選是否有界的阻塞隊列,不允許null值。 B、LinkedBlockingQueue是一個線程安全的阻塞隊列,實現瞭先進先出等特性。 C、PriorityQueue是一個隊列,不允許null值,入隊和出隊的時間復雜度是O(log(n))。 D、PriorityQueue是不同於先進先出隊列的另一種隊列。每次從隊列中取出的是具有最高優先權的元素。ConcurrentLinkedQueue是一個基於鏈接節點的線程安全隊列,該隊列的元素遵循FIFO原則。
答案匯總:
1、正確答案:D
2、正確答案:A
3、正確答案:B
4、正確答案:B
5、正確答案:D
6、正確答案:D
7、正確答案:B
8、正確答案:AE
9、正確答案:CDE
10、正確答案:AC
總結
本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!
推薦閱讀:
- Java中ConcurrentHashMap是如何實現線程安全
- Java中Map接口使用以及有關集合的面試知識點匯總
- Java集合框架之Map詳解
- 深入解讀Java三大集合之map list set的用法
- Java開發中最讓人頭疼的十個bug