Java核心面試寶典】Day15、“Java容器”高頻面試題總結!???

      網友投稿 742 2022-05-29

      Hello,你好呀,我是灰小猿!一個超會寫bug的程序猿!

      用堅持締造技術、用指尖敲動未來!

      和很多小伙伴們一樣,我也是一名奔波在Java道路上的“創造者”。也想靠技術來改未來,改變世界!因為我們堅信每一次敲動鍵盤都能讓生活變得更智能、世界變得更有趣!

      在此專欄《Java核心面試寶典》記錄我們備戰夢想的【day 15】!

      集合、數組這些內容都是我們日常開發最常用到的東西,但是其中有很多能夠被面試官拿來當做考察點的內容你知道嘛?今天就和小伙伴們剖析一下在容器的相關內容中,都會有哪些常見的面試題呢?

      1、Iterable和Iterator接口的作用分別是什么?

      Iterable接口的作用是使容器具備迭代元素的功能,如果一個容器類實現了Iterable接口,則該容器類的實例就具備了迭代元素的功能。

      Iterator接口的作用是迭代器,其作用是迭代容器中的元素。

      2、Iterable接口的核心方法是什么?該方法的返回值類型是什么?

      Iterable接口的核心方法是iterator,該方法返回迭代器的實例,返回值類型是Iterator。

      3、如何實現在遍歷過程中刪除元素?

      為了實現在遍歷中刪除元素,最好的做法是使用迭代器進行元素遍歷,當遇到需要刪除的元素時,調用方法remove可以刪除元素,并且不會出現錯誤。

      4、Collection接口繼承了哪個接口?

      Collection接口繼承了Iterable接口,

      【Java核心面試寶典】Day15、“Java容器”高頻面試題總結!???

      關于容器中接口的繼承和實現關系,可以看下面這張圖:

      5、Collection接口中的哪三個方法分別和集合的并集、差集、交集運算相似?

      方法addAll和集合的并集運算相似,它的作用是一次將另一個容器中的元素全部添加到當前容器中。

      方法removeAll和集合的差集運算相似,它的作用是一次將另一個容器中的全部元素從當前容器中刪除,

      方法retainAll和集合的交集運算相似,它的作用是保留既在當前容器中又在另一個容器中的元素。

      6、Collection接口的兩個子接口List和Set有什么不同?

      List是線性表,存儲一組順序排列的元素,==允許元素重復==;

      Set是集合,存儲一組互不相同的元素,==不允許元素重復==。

      7、ListIterator類型的迭代器和Iterator類型的迭代器有什么區別?

      Iterator類型的迭代器只支持單向遍歷,ListIterator類型的迭代器支持雙向遍歷。

      8、ArrayList和LinkedList的主要區別是什么?從底層實現、隨機訪問元素、插入和刪除元素方面回答?

      ArrayList的底層實現是數組,LinkedList的底層實現是雙向鏈表,

      ArrayList可以快速訪問指定下標處的元素。LinkedList需要遍歷元素才能得到指定下標處的元素。ArrayList插入和刪除元素時需要移動其他元素(除了在尾部插入和刪除元素的情況),

      LinkedList可以快速插入和刪除元素,但是在指定位置(除了頭部和尾部)插入和刪除元素時則需要首先遍歷元素到指定位置。

      9、ArrayList和Vector的主要區別是什么?什么情況下使用 ArrayList 比使用 Vector 更好?

      ArrayList和Vector的主要區別是,Vector的所有方法都是同步的,因此可以保證線程安全。而ArrayList不能保證線程安全。

      在不需要保證線程安全的情況下,使用 ArrayList 比使用 Vector 效率更高。

      10、Map中,鍵能否重復?如果重復,會有什么現象?

      Map中不允許鍵重復,因為每一個鍵對應一個值,如果有重復的鍵,則會出現一個鍵對應多個值的情況,這違背了映射的定義。

      11、HashMap和Hashtable的區別有哪些?

      ==HashMap 不是線程安全的,Hashtable 是線程安全的;== HashMap 的效率高于 Hashtable;

      HashMap 允許鍵或值為 null,最多可以有一個鍵為 null,Hashtable 不允許鍵或值為 null;

      從 JDK 1.8 開始,HashMap 的實現包括紅黑樹,Hashtable 則沒有這樣的機制。

      12、從JDK1.8之后,HashMap的實現有什么變化?

      JDK 1.8 之前的 HashMap 的底層通過數組和鏈表實現,如果出現沖突則通過拉鏈法解決沖突。

      JDK 1.8 在解決沖突時的實現有較大變化,當鏈表長度大于閾值(默認為 8)時,將鏈表轉化為紅黑樹。這便是“==樹化==”, 當鏈表長度小于6時,會重新形成鏈表,這個過程稱為“==鏈化==”。

      關于HashMap底層實現的深入探究,小伙伴們可以看這一篇《【Java核心面試寶典】Day3、圖解HashMap高頻面試及底層實現架構!》。

      13、HashSet和TreeSet有什么區別?

      HashSet 的底層實現基于 HashMap,元素是無序的,通過方法 hashCode 和equals 保證元素沒有重復;

      TreeSet 的底層實現基于 TreeMap,元素是有序的,通過 Comparable 接口或 Comparator接口保證元素沒有重復。

      今日總結

      集合和容器相關的內容雖然經常用,但是我們可以看出能出的面試題其實一點都不少,這里面的很多都是重點,比如HashMap的底層實現、列表接口的繼承關系、實現原理等。

      這方面的題目還有很多,所以如果小伙伴們有遇到其他相關的面試題,歡迎在評論區留言提出,我會把大家提出的總結到文章內`, 歡迎小伙伴們一起評論區打卡學習!小伙伴們可也在左方加我好友一起探討學習!

      我是==灰小猿==,我們下期見!

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:時間序列分析 - 概念起手
      下一篇:MySQL 數據庫命名規范.PDF
      相關文章
      亚洲一区二区在线免费观看| 亚洲αv久久久噜噜噜噜噜| 亚洲国产精品无码av| 国产成人麻豆亚洲综合无码精品 | 亚洲国产天堂久久综合| 精品丝袜国产自在线拍亚洲| 亚洲系列国产精品制服丝袜第| 亚洲五月六月丁香激情| 综合自拍亚洲综合图不卡区| 在线观看亚洲人成网站| 亚洲美女视频一区| 亚洲熟妇无码爱v在线观看| 亚洲福利一区二区| 亚洲xxxxxx| 亚洲成a人片在线不卡| 亚洲熟女综合一区二区三区| 亚洲欧洲无码一区二区三区| 亚洲乱亚洲乱妇无码| 亚洲精华液一二三产区| 看亚洲a级一级毛片| 亚洲精品国产日韩无码AV永久免费网 | 中文字幕亚洲无线码a| 国产亚洲精品AA片在线观看不加载| 久久久久亚洲精品天堂久久久久久 | 亚洲国产成人久久三区| 亚洲人成小说网站色| 亚洲爆乳无码专区www| 伊人久久亚洲综合影院| 国产啪亚洲国产精品无码| 亚洲国产精品一区二区成人片国内 | 亚洲国产精品自产在线播放| 中文字幕亚洲无线码a| 亚洲人成在线影院| 亚洲av成人一区二区三区| 亚洲国产精品日韩av不卡在线| 亚洲国产精品成人一区| 亚洲无码在线播放| 久久久亚洲AV波多野结衣| 亚洲粉嫩美白在线| 亚洲国产小视频精品久久久三级| 亚洲男人的天堂www|