Java工程師常見面試題集錦(二)網際網路人必看!(附答案及視訊教程,持續更新)
大牛也怕面試題,尤其是基礎題,在面試中如果出現一兩題回答不準確很有可能你就被拒之門外了。CSDN學院年終傾情奉獻,海量面試題(附答案)免費分享,幫助大家順利過關。
本週繼續更新10道面試題。
Java工程師常見面試題集錦(一)網際網路人必看!https://blog.csdn.net/CSDNedu/article/details/85602533
如果覺得文字學習較慢,也可以跟著老師一起視訊學習:
Java面試題視訊學習連結:https://edu.csdn.net/course/detail/10533
11.HashTable與HashMap的區別
1)同步性:Hashtable是執行緒安全的,也就是說是同步的,而HashMap是執行緒序不安全的,不是同步的。
2)HashMap允許存在一個為null的key,多個為null的value 。
3)hashtable的key和value都不允許為null。
12.如何解決HashMap的執行緒不安全問題
1)替換成Hashtable,Hashtable通過對整個表上鎖實現執行緒安全,因此效率比較低
2)使用Collections類的synchronizedMap方法包裝一下。方法如下:
public static <K,V> Map<K,V> synchronizedMap(Map<K,V> m) 返回由指定對映支援的同步(執行緒安全的)對映
3)使用ConcurrentHashMap,它使用分段鎖來保證執行緒安全
通過前兩種方式獲得的執行緒安全的HashMap在讀寫資料的時候會對整個容器上鎖,而ConcurrentHashMap並不需要對整個容器上鎖,它只需要鎖住要修改的部分就行了
13.Collection 和 Collections 的區別
Collection 是 java.util 下的介面,它是各種集合的父介面,繼承於它的 介面主要有 Set 和 List;Collections 是個 java.util 下的類,是針對集合的 幫助類,提供一系列靜態方法實現對各種集合的搜尋、排序、執行緒安全化等操作 。
Java工程師常見面試題集錦(一)網際網路人必看!https://blog.csdn.net/CSDNedu/article/details/85602533
如果覺得文字學習較慢,也可以跟著老師一起視訊學習:
Java面試題視訊學習連結:https://edu.csdn.net/course/detail/10533
14. List、Map、Set 三個介面,存取元素時,各有什麼特點
List 以特定次序來持有元素,可有重複元素。
Set 無法擁有重複元素,內部 排序。
Map 儲存 key-value 值,value 可多值。
15.Set 裡的元素是不能重複的,那麼用什麼方法來區分重複與否呢? 是用==還 是 equals()? 它們有何區別?
Set 裡的元素是不能重複的,用 equals ()方法來區分重複與否。
覆蓋 equals()方法用來判斷物件的內容是否相同,而”==”判斷地址是否相等,用來 決定引用值是否指向同一物件。
16.TreeMap和TreeSet在排序時如何比較元素?Collections工具類中的sort()方法如何比較元素
TreeSet要求存放的物件所屬的類必須實現Comparable介面,該介面提供了比較元素的compareTo()方法,當插入元素時會回撥該方法比較元素的大小。 TreeMap要求存放的鍵值對對映的鍵必須實現Comparable介面從而根據鍵對元素進行排序。 Collections工具類的sort方法有兩種過載的形式,第一種要求傳入的待排序容器中存放的物件比較實現Comparable介面以實現元素的比較;第二種不強制性的要求容器中的元素必須可比較,但是要求傳入第二個引數,引數是Comparator介面的子型別(需要重寫compare方法實現元素的比較),相當於一個臨時定義的排序規則,其實就是是通過介面注入比較元素大小的演算法,也是對回撥模式的應用。
17.Map集合
實現類:HashMap、Hashtable、LinkedHashMap和TreeMap
HashMap是最常用的Map,它根據鍵的HashCode值儲存資料,根據鍵可以直接獲取它的值,具有很快的訪問速度,遍歷時,取得資料的順序是完全隨機的。因為鍵物件不可以重複,所以HashMap最多隻允許一條記錄的鍵為Null,允許多條記錄的值為Null,是非同步的。
Hashtable與HashMap類似,是HashMap的執行緒安全版,它支援執行緒的同步,即任一時刻只有一個執行緒能寫Hashtable,因此也導致了Hashtale在寫入時會比較慢,它繼承自Dictionary類,不同的是它不允許記錄的鍵或者值為null,同時效率較低。
ConcurrentHashMap,執行緒安全,並且鎖分離。ConcurrentHashMap內部使用段(Segment)來表示這些不同的部分,每個段其實就是一個小的hash table,它們有自己的鎖。只要多個修改操作發生在不同的段上,它們就可以併發進行。
LinkedHashMap儲存了記錄的插入順序,在用Iteraor遍歷LinkedHashMap時,先得到的記錄肯定是先插入的,在遍歷的時候會比HashMap慢,有HashMap的全部特性。
TreeMap實現SortMap介面,能夠把它儲存的記錄根據鍵排序,預設是按鍵值的升序排序(自然順序),也可以指定排序的比較器,當用Iterator遍歷TreeMap時,得到的記錄是排過序的。不允許key值為空,非同步的。
18.ArrayList擴容機制【必考】
1)發生擴容的條件:
根據傳入的最小需要容量minCapacity來和陣列的容量長度對比,若minCapactity大於或等於陣列容量,則需要進行擴容。(如果實際儲存陣列是空陣列,則最小需要容量就是預設容量)
2)實現擴容:
jdk7中採用>>位運算,右移動一位。 容量相當於擴大了1.5倍;
3)舉例說明:新增20個元素到ArrayList中
當第一次插入元素時才分配10(預設)個物件空間。之後擴容會按照1.5倍增長。
也就是當新增第11個資料的時候,Arraylist繼續擴容變為10*1.5=15;
當新增第16個資料時,繼續擴容變為15 * 1.5 =22個
19.Java 中的異常處理機制的簡單原理和應用
當 JAVA 程式違反了 JAVA 的語義規則時,JAVA 虛擬機器就會將發生的錯誤表 示為一個異常。違反語義規則包括 2 種情況。一種是 JAVA 類庫內建的語義檢查。 例如陣列下標越界,會引發 IndexOutOfBoundsException;訪問 null 的物件時會 引發 NullPointerException。另一種情況就是 JAVA 允許程式設計師擴充套件這種語義檢 查,程式設計師可以建立自己的異常,並自由選擇在何時用 throw 關鍵字引發異常。 所有的異常都是 java.lang.Thowable 的子類。
20.程式設計題:寫一個Singleton示例
Singleton:在Java中即指單例設計模式,它是軟體開發中最常用的設計模式之一。
單:唯一;例:例項,單例設計模式,即某個類在整個系統中只能有一個例項物件可被獲取和使用的程式碼模式。
例如:代表JVM執行環境的Runtime類
要點:一是某個類只能有一個例項:u構造器私有化;
二是它必須自行建立這個例項:u含有一個該類的靜態變數來儲存這個唯一的例項;
三是它必須自行向整個系統提供這個例項:u對外提供獲取該例項物件的方式:(1)直接暴露(2)用靜態變數的get方法獲取
幾種常見形式:
1)餓漢式:直接建立物件,不存線上程安全問題
直接例項化餓漢式(簡潔直觀)
列舉式(最簡潔)
靜態程式碼塊餓漢式(適合複雜例項化)
2)懶漢式:延遲建立物件
執行緒不安全(適用於單執行緒)
執行緒安全(適用於多執行緒)
靜態內部類形式(適用於多執行緒)
Java工程師常見面試題集錦(一)網際網路人必看!https://blog.csdn.net/CSDNedu/article/details/85602533
如果覺得文字學習較慢,也可以跟著老師一起視訊學習:
Java面試題視訊學習連結:https://edu.csdn.net/course/detail/10533
相關文章
- Java工程師常見面試題集錦(三)網際網路人必看!(附答案及視訊教程,持續更新!)Java工程師面試題
- Java工程師常見面試題集錦(六)網際網路人必看!(附答案及視訊教程,持續更新)Java工程師面試題
- Java工程師常見面試題集錦(一)網際網路人必看!(附答案及視訊教程,持續更新)Java工程師面試題
- 來了!Java工程師常見面試題集錦(五)網際網路人必看!(附答案及視訊教程,持續更新)Java工程師面試題
- 知否?知否!Java工程師常見面試題集錦(四)網際網路人必看!(附答案及視訊教程,持續更新)Java工程師面試題
- 雲端計算工程師面試題集錦,常見雲端計算面試題及答案工程師面試題
- GO面試題集錦快答[持續更新]Go面試題
- 大資料類工程師面試題集錦附指南:網際網路公司篇!大資料工程師面試題
- 雲端計算工程師面試題集錦,雲端計算面試題及答案工程師面試題
- 雲端計算面試題及答案,雲端計算工程師面試題集錦面試題工程師
- 2018年最新大資料類工程師面試題集錦附指南:網際網路公司篇!大資料工程師面試題
- 網際網路 Java 工程師面試題(Spring 面試題一)Java工程師面試題Spring
- Java常見面試題及答案彙總Java面試題
- 好程式設計師Java教程分享:Java工程師常見面試題程式設計師Java工程師面試題
- 常見AI面試題及答案AI面試題
- 2019最新Web前端經典面試試題及答案,持續更新Web前端面試
- Docker常見面試題及答案!Linux入門教程Docker面試題Linux
- 10道常見的Python面試題及答案!Python入門必看Python面試題
- 前端工程師面試必備(持續更新中)前端工程師面試
- 好程式設計師Java教程分享JavaScript常見面試題二程式設計師JavaScript面試題
- 求職面試常見問題:Python常見面試題全解析附答案求職Python面試題
- 好程式設計師web前端分享HTML5常見面試題集錦二程式設計師Web前端HTML面試題
- Android開發工程師面試指南(面試題集附答案、簡歷模板)Android工程師面試題
- PHP開發工程師面試問題集錦PHP工程師面試
- Python資料型別面試題集錦!(附答案)Python資料型別面試題
- Java面試專屬視訊 最新Java阿里京東美團滴滴面試題及答案教程Java阿里面試題
- Java工程師面試題之Dubbo(含答案)Java工程師面試題
- Linux面試題,淺析常見Linux命令面試題及答案Linux面試題
- 新手必看!使用New File Menu常見問題集錦
- 吐血總結!50道Python面試題集錦(附答案)Python面試題
- 高階前端工程師面試必備(持續更新中)前端工程師面試
- AI面試題(持續更新)AI面試題
- Hbase面試題(持續更新)面試題
- 金三銀四:螞蟻金服JAVA開發面試題及答案之一面(持續更新)Java面試題
- 一線網際網路常見的14個Java面試題,你顫抖了嗎程式設計師Java面試題程式設計師
- Java開發工程師最新面試題庫系列——集合部分(附答案)Java工程師面試題
- 總結Java開發面試常問的問題,持續更新中~Java面試
- 經典的Java面試題及回答集錦Java面試題