這是我見過最有用的java面試題,面試了無數公司總結的

2021-02-19 Java編程精選

Java 集合框架的面試題

這部分也包含數據結構、算法及數組的面試問題

38.List、Set、Map 和 Queue 之間的區別(答案)

List 是一個有序集合,允許元素重複。它的某些實現可以提供基於下標值的常量訪問時間,但是這不是 List 接口保證的。Set 是一個無序集合。

39.poll() 方法和 remove() 方法的區別?

poll() 和 remove() 都是從隊列中取出一個元素,但是 poll() 在獲取元素失敗的時候會返回空,但是 remove() 失敗的時候會拋出異常。

40.Java 中 LinkedHashMap 和 PriorityQueue 的區別是什麼?(答案)

PriorityQueue 保證最高或者最低優先級的的元素總是在隊列頭部,但是 LinkedHashMap 維持的順序是元素插入的順序。當遍歷一個 PriorityQueue 時,沒有任何順序保證,但是 LinkedHashMap 課保證遍歷順序是元素插入的順序。

41.ArrayList 與 LinkedList 的不區別?(答案)

最明顯的區別是 ArrrayList 底層的數據結構是數組,支持隨機訪問,而 LinkedList 的底層數據結構書鍊表,不支持隨機訪問。使用下標訪問一個元素,ArrayList 的時間複雜度是 O(1),而 LinkedList 是 O(n)。更多細節的討論參見答案。

42.用哪兩種方式來實現集合的排序?(答案)

你可以使用有序集合,如 TreeSet 或 TreeMap,你也可以使用有順序的的集合,如 list,然後通過 Collections.sort() 來排序。

43.Java 中怎麼列印數組?(answer答案)

你可以使用 Arrays.toString() 和 Arrays.deepToString() 方法來列印數組。由於數組沒有實現 toString() 方法,所以如果將數組傳遞給 System.out.println() 方法,將無法列印出數組的內容,但是 Arrays.toString() 可以列印每個元素。

44.Java 中的 LinkedList 是單向鍊表還是雙向鍊表?(答案)

是雙向鍊表,你可以檢查 JDK 的源碼。在 Eclipse,你可以使用快捷鍵 Ctrl + T,直接在編輯器中打開該類。

45.Java 中的 TreeMap 是採用什麼樹實現的?(答案)

Java 中的 TreeMap 是使用紅黑樹實現的。

46. Hashtable 與 HashMap 有什麼不同之處?(答案)

這兩個類有許多不同的地方,下面列出了一部分:

a) Hashtable 是 JDK 1 遺留下來的類,而 HashMap 是後來增加的。

b)Hashtable 是同步的,比較慢,但 HashMap 沒有同步策略,所以會更快。

c)Hashtable 不允許有個空的 key,但是 HashMap 允許出現一個 null key。

更多的不同之處參見答案。

47.Java 中的 HashSet,內部是如何工作的?(answer答案)

HashSet 的內部採用 HashMap來實現。由於 Map 需要 key 和 value,所以所有 key 的都有一個默認 value。類似於 HashMap,HashSet 不允許重複的 key,只允許有一個null key,意思就是 HashSet 中只允許存儲一個 null 對象。

48.寫一段代碼在遍歷 ArrayList 時移除一個元素?(答案)

該問題的關鍵在於面試者使用的是 ArrayList 的 remove() 還是 Iterator 的 remove()方法。這有一段示例代碼,是使用正確的方式來實現在遍歷的過程中移除元素,而不會出現 ConcurrentModificationException 異常的示例代碼。

49.我們能自己寫一個容器類,然後使用 for-each 循環碼?

可以,你可以寫一個自己的容器類。如果你想使用 Java 中增強的循環來遍歷,你只需要實現 Iterable 接口。如果你實現 Collection 接口,默認就具有該屬性。

50.ArrayList 和 HashMap 的默認大小是多數?(答案)

在 Java 7 中,ArrayList 的默認大小是 10 個元素,HashMap 的默認大小是16個元素(必須是2的冪)。這就是 Java 7 中 ArrayList 和 HashMap 類的代碼片段:

// from ArrayList.java JDK 1.7

private static final int DEFAULT_CAPACITY = 10;

//from HashMap.java JDK 7

static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16

相關焦點

  • 面試總結——Java高級工程師
    尚學堂AD試前面也總結了一和二, 這第三篇可能更偏向於是內心的獨白篇和面試技巧總結吧…..2、深入了解並熟記部分java基礎知識原因:大部分公司無論面試初級還是高級,無論是筆試還是面試,都會問到一系列基礎題,這些基礎題大概涵括jvm、字符串、集合、線程等等,如果說每一個讓你死記硬背你肯定記不住,那麼就是理解中記憶了,拿jvm來說 ,如果讓你談談你對jvm的理解, 那麼你首先得知道JVM有哪些結構組成,每個結構用來做什麼的,然後考慮一個Java對象從創建到回收,
  • Java 最常見的 200+ 面試題:面試必備
    作者:王磊來源:王磊的博客這份面試清單是我從 2015 年做 TeamLeader 之後開始收集的,一方面是給公司招聘用,另一方面是想用它來挖掘我在 Java 技術棧中的技術盲點,聊回面試題這件事,這份面試清單原本是我們公司內部使用的,可到後來有很多朋友在微信上聯繫到我,讓我幫他們找一些面試方面的資料,而且這些關係也不太好拒絕,一呢,是因為這些找我,要面試題的人,不是我的好朋友的弟弟妹妹,就是我的弟弟妹妹們;二呢,我也不能馬馬虎虎的對付,受人之事忠人之命,我也不能辜負這份信任。
  • 2年Java開發工作經驗,跳槽之後面試20餘家公司的總結
    最近換了個公司,從三月底開始面,面到四月底,面了有快二十家公司。我是一個喜歡總結經驗的人,每經過一場面試,我在回來的路上都會仔細回想今天哪些問題可以答的更好,或者哪些問題是自己之前沒遇到過的,或者是哪個知識點今天又問了等等。四月中旬的時候,我就在構思要寫一篇面經,主要是想著可能對那些跟我相同處境的人有點幫助,再者就是稍微記錄下這為期一個月的面試過程。
  • 工作六年總結的Java面試題與經驗
    首先你要知道,面試官的提問和你簡歷上寫的內容是緊密聯繫的,所以你簡歷上寫的技能一定要會。能不能自己寫一個類叫java.lang.String。設計模式比較常見的就是讓你手寫一個單例模式(注意單例模式的幾種不同的實現方法)或者讓你說一下某個常見的設計模式在你的項目中是如何使用的。另外面試官還有可能問你抽象工廠和工廠方法模式的區別、工廠模式的思想這樣的問題。
  • Java面試總結之Java基礎
    無論是工作多年的高級開發人員還是剛入職場的新人,在換工作面試的過程中,Java基礎是必不可少的面試題之一。能不能順利通過面試,拿到自己理想的offer,在準備面試的過程中,Java基礎也是很關鍵的。對於工作多年的開發人員來說,Java基礎往往是會被大家所忽略的,但在面試的過程中,確是必不可少的問題。在這篇文章裡就來為大家總結一下經常會被問到的Java基礎題。
  • 你見過老外的 Java 面試題嗎 (上)?
    前言最近無聊的在逛某 tube 網站,本來想看看大家是怎麼吐槽川普的,結果無意間點進了一個老外面試 Java 的視頻,對於常年面試被吊打的我瑟瑟發抖,於是決定進去一探究竟。畢竟不是專業的後臺開發,所以我在面試到後臺知識的時候果斷的退了出來,才讓自己免受了侮辱。不過鑑於我手速出眾,飛速的記錄下了 Java 的基礎題,所以準備貢獻出來,供大家享樂。
  • 2年Java開發工作經驗面試總結
    最近換了個公司,從三月底開始面,面到四月底,面了有快二十家公司。我是一個喜歡總結經驗的人,每經過一場面試,我在回來的路上都會仔細回想今天哪些問題可以答的更好,或者哪些問題是自己之前沒遇到過的,或者是哪個知識點今天又問了等等。四月中旬的時候,我就在構思要寫一篇面經,主要是想著可能對那些跟我相同處境的人有點幫助,再者就是稍微記錄下這為期一個月的面試過程。
  • 2019 最新 200 道 Java 面試題
    ,也為了更好的勝任技術經理的職位,在面試的這件事上,我做了大量的「功課」,首先我研究了幾乎所有大廠的面試題,還和負責招聘工作的幾個朋友,詳細的探討了 Java 面試所要涉及的知識點,於是就有了今天大家看到的這 200 多道面試題。
  • 網友面試N多家公司,孟哥幫你總結面試題,再也不怕面試了
    面試官會對他感興趣的點進行提問。項目中遇到的難題讓我想起小學時經常寫的作文:最難忘的一件事。這可真是太艹了,沒想到小學學的知識現在派上了用場。項目中遇到的難題,解決了之後其實都不是什麼難題了。先要提前一天做一套線上筆試題,不管有沒有通過,第二天都是要去面試的。主要是項目相關的,業務上的東西問得多,具體的問題有:1,代碼優化2,mysql優化3,jvm內存模型4,spring cloud用過哪些組件 講講熔斷機制5,為什麼離開上家公司不是很難但是沒有offer,心態崩了。
  • 面試前必看Java線程面試題
    下面是Java線程相關的熱門面試題,你可以用它來好好準備面試。1.面向對象的特徵有哪些方面?答:面向對象的特徵主要有以下幾個方面:- 抽象:抽象是將一類對象的共同特徵總結出來構造類的過程,包括數據抽象和行為抽象兩方面。
  • Java最常見600+面試題全解析:面試必備
    我堅信,機會永遠屬於有準備的人,我們與其羨慕他人的成功,不如從此刻起,積累足夠多的的知識和面試經驗,為將來進入更好的工作做好充分的準備
  • 這是我見過最有用的Mysql面試題,面試了無數公司總結的(內附答案)
    這是重要的Oracle DBA面試問題之一。自動增量關鍵字使用戶可以創建一個唯一的數字,以便在將新記錄插入表中時生成該數字。每當使用主鍵時,都可以使用自動遞增關鍵字。在Oracle中使用自動遞增關鍵字在SQL Server中使用IDENTITY關鍵字。29.什麼是臨時表?30.如何避免查詢中重複記錄?
  • 要準備多少東西去面試---java中高級面試總結(值得收藏)
    這篇文章是根據我之前面試遇到的一些問題(技術類),做的一個總結。
  • Java典型面試題 ——談談你對Java平臺的理解?
    今天我要問你的問題是,談談你對 Java 平臺的理解?「Java 是解釋執行」,這句話正確嗎?畢竟明白基本組成和機制,是日常工作中進行問題診斷或者性能調優等很多事情的基礎,相信沒有招聘方會不喜歡「熱愛學習和思考」的面試者。即使感覺自己的回答不是非常完善,也不用擔心。我個人覺得這種籠統的問題,有時候回答得稍微片面也很正常,大多數有經驗的面試官,不會因為一道題就對面試者輕易地下結論。
  • 學了1年java的程式設計師面試,掛在了這道基礎算法題!
    這都是java的算法題,應該來講都是些比較簡單的算法題,但是我敢說很多基礎的學習的,或者想去面試的人都會不能完整的寫出來,現在
  • Google、Facebook、Rocket fuel面試經驗總結
    因為之前是學算法的,mit算法書以前就看過兩遍,基礎還可以,前期8月份刷了遍leetcode。然後9月初投出簡歷。兩個星期刷Career cup 150, 最後面試期間一直查缺補漏。到現在塵埃落定大概兩個月。 最後GFR全掛,總結下慘痛經歷:1.
  • Java 線程面試題 Top 50
    掌握了這些技巧,你就可以輕鬆應對多線程和並發麵試了。許多Java程式設計師在面試前才會去看面試題,這很正常。因為收集面試題和練習很花時間,所以我從許多面試者那裡收集了Java多線程和並發相關的50個熱門問題。我只收集了比較新的面試題且沒有提供全部答案。想必聰明的你對這些問題早就心中有數了, 如果遇到不懂的問題,你可以用Google找到答案。若你實在找不到答案,可以在文章的評論中向我求助。
  • 面試題之java基礎
    ,可過去一周裡我也算是切身體會到了裁員浪潮的殘酷啊,各種CCC。應部分網友的建議,從今天起會逐步的總結一些java、php相關的面試題,由簡單到複雜歸納一個系列:【金三銀四】,中間部分題目的答案來源於網絡,如若不嚴謹還望諒解。java基礎面試題 1、簡述Java程序編譯和運行的過程:答:①  Java編譯程序將Java源程序翻譯為JVM可執行代碼--字節碼,創建完源文件之後,程序會先被編譯成 「.class」 文件。
  • 工作五年,一年內我靠這系列java面試寶典從13K到大廠30K
    我認為對於面試以及進階最佳的學習方法莫過於刷題+博客+書籍+總結!前三者我將淋漓盡致地揮毫於這篇文章中,至於總結要靠個人。實際上越到後面你越會發現面試並不難,其次就是在刷題的過程中有沒有去思考,刷題只是次之,這又是一個層次了,這裡暫時不提後面再談。
  • Java 基礎知識面試題與知識點總結!(100題)
    Java 基礎知識面試題與知識點知識點:Java基礎知識JavaJDK 監控和故障處理工具Java類文件結構 Java類加載過程 Java類加載器 Java雙親委派模型 自定義類加載器 程序計數器 虛擬機棧 本地方法棧 jvm-堆Java IO BIO NIO AIO面試題