JAVA(基礎篇)android的面試題(三)

來源:互聯網
上載者:User

標籤:android   學習   

1.Collection 和 Collections 的區別。

Collection 是集合類的上級介面,繼承於他的介面主要有 Set 和 List.
Collections 是針對集合類的一個協助類,他提供一系列靜態方法實現對各種集合的搜尋、排序、安全執行緒化等操作。 

2.HashMap 和 Hashtable 的區別。 

HashMap 是 Hashtable 的輕量級實現(非安全執行緒的實現),他們都完成了 Map 介面,HashMap是非安全執行緒,效率上可能高於 Hashtable。在多個線程訪問 Hashtable 時,不需要自己為它的方法實現同步,而 HashMap 就必須為之提供外同步。

HashMap 允許將 null 作為一個 entry 的 key 或者 value,而 Hashtable 不允許。

HashMap 把 Hashtable 的 contains 方法去掉了,改成 containsvalue 和 containsKey。因為 contains 方法容易讓人引起誤解。Hashtable 繼承自 Dictionary 類,而 HashMap 是 Java1.2 引進的 Map interface 的一個實現。


Hashtable 和 HashMap 採用的 hash/rehash 演算法都大概一樣,所以效能不會有很大的差異。


3.sleep() 和 wait() 有什麼區別? 

sleep 是線程類(Thread)的方法,導致此線程暫停執行指定時間,給執行機會給其他線程,但是監控狀態依然保持,到時後會自動回復。調用 sleep 不會釋放對象鎖。
wait 是 Object 類的方法,對此對象調用 wait 方法導致本線程放棄對象鎖,進入等待此對象的等待鎖定池,只有針對此對象發出 notify 方法(或 notifyAll)後本線程才進入對象鎖定池準備獲得對象鎖進入運行狀態。 


4.short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯?

short s1 = 1; s1 = s1 + 1; (s1+1 運算結果是 int 型,需要強制轉換類型)short s1 = 1; s1 += 1;(可以正確編譯)


5.Math.round(11.5)等於多少? Math.round(-11.5)等於多少?

Math.round(11.5)==12
Math.round(-11.5)==-11
round 方法返回與參數最接近的長整數,參數加 1/2 後求其 floor. 


1. ArrayList,Vector, LinkedList 的儲存效能和特性ArrayList 和 Vector 都是使用數組方式儲存資料,此數組元素數大於實際儲存的資料以便增加和插入元素,它們都允許直接按 序號索引元素,但是插入元素要涉及數組元素移動等記憶體操作,所以索引資料快而插入資料慢,Vector 由於使用了 synchroni zed 方法(安全執行緒),通常效能上較 ArrayList 差,而 LinkedList 使用雙向鏈表實現儲存,按序號索引資料需要進行前向或後 向遍曆,但是插入資料時只需要記錄本項的前後項即可,所以插入速度較快。 
2.Collection 和 Collections 的區別Collection 是集合類的上級介面,繼承與他的介面主要有 Set 和 List. Collections 是針對集合類的一個協助類,他提供一系列靜態方法實現對各種集合的搜尋、排序、安全執行緒化等操作。
3.HashMap 和 Hashtable 的區別HashMap 是 Hashtable 的輕量級實現(非安全執行緒的實現),他們都完成了 Map 介面,主要區別在於 HashMap 允許空(null)鍵值(key),由於非安全執行緒,效率上可能高於 Hashtable。 HashMap 允許將 null 作為一個 entry 的 key 或者 value,而 Hashtable 不允許。 HashMap 把 Hashtable 的 contains 方法去掉了,改成 containsvalue 和 containsKey。因為 contains 方法容易讓人引起誤解。 Hashtable 繼承自 Dictionary 類,而 HashMap 是 Java1.2 引進的 Map interface 的一個實現。 最大的不同是,Hashtable 的方法是 Synchronize 的,而 HashMap 不是,在多個線程訪問 Hashtable 時,不需要自己為它的 方法實現同步,而 HashMap 就必須為之提供外同步。Hashtable 和 HashMap 採用的 hash/rehash 演算法都大概一樣,所以效能不會有很大的差異。 
4.sleep() 和 wait() 有什麼區別sleep 是線程類(Thread)的方法,導致此線程暫停執行指定時間,給執行機會給其他線程,但是監控狀態依然保持,到時 後會自動回復。調用 sleep 不會釋放對象鎖。 wait 是 Object 類的方法,對此對象調用 wait 方法導致本線程放棄對象鎖,進入等待此對象的等待鎖定池,只有針對此對象發 出 notify 方法(或 notifyAll)後本線程才進入對象鎖定池準備獲得對象鎖進入運行狀態。 
5.Overload 和 Override 的區別Overloaded 的方法是否可以改變返回值的類型? 方法的重寫 Overriding 和重載 Overloading 是 Java 多態性的不同表現。重寫 Overriding 是父類與子類之間多態性的一種表現,重載 Overloading 是一個類中多態性的一種表現。如果在子類中定義某方法與其父類有相同的名稱和參數,我們說該方法被重寫 (Overriding)。子類的對象使用這個方法時,將調用子類中的定義,對它而言,父類中的定義如同被"屏蔽"了。如果在一個類 中定義了多個同名的方法,它們或有不同的參數個數或有不同的參數類型,則稱為方法的重載(Overloading)。Overloaded 的 方法是可以改變返回值的類型。 
6.同步和非同步有何異同,在什麼情況下分別使用他們?如果資料將線上程間共用。例如正在寫的資料以後可能被另一個線程讀到,或者正在讀的資料可能已經被另一個線程寫過了, 那麼這些資料就是共用資料,必須進行同步存取。 當應用程式在對象上調用了一個需要花費很長時間來執行的方法,並且不希望讓程式等待方法的返回時,就應該使用非同步編程, 在很多情況下採用非同步途徑往往更有效率。

JAVA(基礎篇)android的面試題(三)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.