干了四年的Java面試官,給大家分享我面試時最愛問的Java面試題

2015 年,因為工作崗位的變動,開始負責(zé)給集團招聘一些技術(shù)人員,出于對公司的負責(zé),也為了更好的勝任技術(shù)經(jīng)理的職位,在面試的這件事上,我做了大量的“功課”,首先我研究了幾乎所有大廠的面試題,還和負責(zé)招聘工作的幾個朋友,詳細的探討了 Java 面試所要涉及的知識點,于是就有了今天大家看到的這 200 多道面試題。

為什么要公開這些面試題?

原因一:身邊從事 Java 開發(fā)的人員越來越多,我的表弟表妹們,朋友的表弟表妹們,朋友的朋友的表弟表妹們,每次問我要相同的面試復(fù)習(xí)材料,已經(jīng)讓我疲于應(yīng)付,索性整理出來,直接發(fā)鏈接給他們。

原因二:節(jié)省招聘雙方彼此的時間,有些來公司面試人,無論是有幾年工作經(jīng)驗的還是剛畢業(yè)的,就連這些最基礎(chǔ)的面試題都搞不定,這確實讓人很遺憾。常言道“一屋不掃何以掃天下”,也是同樣的道理,如果連基礎(chǔ)的概念都搞不明白,又怎么讓面試官相信你能寫出高質(zhì)量的程序呢?與其浪費彼此的時間,還不如花點時間把自己的基礎(chǔ)知識掌握牢固。

原因三:提高 Java 從業(yè)人員整體的能力模型,讓優(yōu)秀的人能“冒”出來。有了這些面試題不意味著,死記硬背之后就能進入企業(yè)工作,尤其是 BAT 等工作崗位競爭更為激烈,這些面試題只能成為面試體系中的一道“開胃菜”,從而提高了整個 Java 面試的壁壘,讓愿與學(xué)的人,變的更加優(yōu)秀,從而和懶惰的人拉開差距,讓企業(yè)也能更輕易的甄別。

這些面試題包含哪些內(nèi)容?

這份面試題包含了 19 個模塊:Java 基礎(chǔ)、容器、多線程、反射、對象拷貝、Java Web、異常、網(wǎng)絡(luò)、設(shè)計模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM 等。

如下圖所示:

干了四年的Java面試官,給大家分享我面試時最愛問的Java面試題

本面試題解決的痛點

  • 稀缺性,提供真實的,覆蓋面全的面試集合,包含 200+ 面試題。
  • 權(quán)威性,解決了目前市場上答案太舊甚至是錯誤的問題。
  • 真實性,這份面試題是企業(yè)常用的,不會偏離實際。
  • 易理解性,通俗易懂條理清晰,部分面試題包含題目解析和代碼示例,讓小白也能看的懂。
  • 節(jié)約時間,屏蔽無效重復(fù)信息,為真正需要面試題的人節(jié)省檢索時間。

適宜閱讀人群

  • 待面試的 初/中/高級 Java 程序員
  • 查漏補缺的人
  • 想要不斷完善和擴充自己 Java 技術(shù)棧的人
  • Java 面試官

限于篇幅的原因,答案不能完全展示

加Q群:328993819 備注簡書,免費獲取

面試題展示

一、Java 基礎(chǔ)

  • 1.JDK 和 JRE 有什么區(qū)別?
  • 2.== 和 equals 的區(qū)別是什么?
  • 3.兩個對象的 hashCode()相同,則 equals()也一定為 true,對嗎?
  • 4.final 在 java 中有什么作用?
  • 5.java 中的 Math.round(-1.5) 等于多少?
  • 6.String 屬于基礎(chǔ)的數(shù)據(jù)類型嗎?
  • 7.java 中操作字符串都有哪些類?它們之間有什么區(qū)別?
  • 8.String str="i"與 String str=new String("i")一樣嗎?
  • 9.如何將字符串反轉(zhuǎn)?
  • 10.String 類的常用方法都有那些?
  • 11.抽象類必須要有抽象方法嗎?
  • 12.普通類和抽象類有哪些區(qū)別?
  • 13.抽象類能使用 final 修飾嗎?
  • 14.接口和抽象類有什么區(qū)別?
  • 15.java 中 IO 流分為幾種?
  • 16.BIO、NIO、AIO 有什么區(qū)別?
  • 17.Files的常用方法都有哪些?

二、容器

  • 18.java 容器都有哪些?
  • 19.Collection 和 Collections 有什么區(qū)別?
  • 20.List、Set、Map 之間的區(qū)別是什么?
  • 21.HashMap 和 Hashtable 有什么區(qū)別?
  • 22.如何決定使用 HashMap 還是 TreeMap?
  • 23.說一下 HashMap 的實現(xiàn)原理?
  • 24.說一下 HashSet 的實現(xiàn)原理?
  • 25.ArrayList 和 LinkedList 的區(qū)別是什么?
  • 26.如何實現(xiàn)數(shù)組和 List 之間的轉(zhuǎn)換?
  • 27.ArrayList 和 Vector 的區(qū)別是什么?
  • 28.Array 和 ArrayList 有何區(qū)別?
  • 29.在 Queue 中 poll()和 remove()有什么區(qū)別?
  • 30.哪些集合類是線程安全的?
  • 31.迭代器 Iterator 是什么?
  • 32.Iterator 怎么使用?有什么特點?
  • 33.Iterator 和 ListIterator 有什么區(qū)別?
  • 34.怎么確保一個集合不能被修改?

三、多線程

  • 35.并行和并發(fā)有什么區(qū)別?
  • 36.線程和進程的區(qū)別?
  • 37.守護線程是什么?
  • 38.創(chuàng)建線程有哪幾種方式?
  • 39.說一下 runnable 和 callable 有什么區(qū)別?
  • 40.線程有哪些狀態(tài)?
  • 41.sleep() 和 wait() 有什么區(qū)別?
  • 42.notify()和 notifyAll()有什么區(qū)別?
  • 43.線程的 run()和 start()有什么區(qū)別?
  • 44.創(chuàng)建線程池有哪幾種方式?
  • 45.線程池都有哪些狀態(tài)?
  • 46.線程池中 submit()和 execute()方法有什么區(qū)別?
  • 47.在 java 程序中怎么保證多線程的運行安全?
  • 48.多線程鎖的升級原理是什么?
  • 49.什么是死鎖?
  • 50.怎么防止死鎖?
  • 51.ThreadLocal 是什么?有哪些使用場景?
  • 52.說一下 synchronized 底層實現(xiàn)原理?
  • 53.synchronized 和 volatile 的區(qū)別是什么?
  • 54.synchronized 和 Lock 有什么區(qū)別?
  • 55.synchronized 和 ReentrantLock 區(qū)別是什么?
  • 56.說一下 atomic 的原理?

四、反射

  • 57.什么是反射?
  • 58.什么是 java 序列化?什么情況下需要序列化?
  • 59.動態(tài)代理是什么?有哪些應(yīng)用?
  • 60.怎么實現(xiàn)動態(tài)代理?

五、對象拷貝

  • 61.為什么要使用克???
  • 62.如何實現(xiàn)對象克隆?
  • 63.深拷貝和淺拷貝區(qū)別是什么?

六、Java Web

  • 64.jsp 和 servlet 有什么區(qū)別?
  • 65.jsp 有哪些內(nèi)置對象?作用分別是什么?
  • 66.說一下 jsp 的 4 種作用域?
  • 67.session 和 cookie 有什么區(qū)別?
  • 68.說一下 session 的工作原理?
  • 69.如果客戶端禁止 cookie 能實現(xiàn) session 還能用嗎?
  • 70.spring mvc 和 struts 的區(qū)別是什么?
  • 71.如何避免 sql 注入?
  • 72.什么是 XSS 攻擊,如何避免?
  • 73.什么是 CSRF 攻擊,如何避免?

七、異常

  • 74.throw 和 throws 的區(qū)別?
  • 75.final、finally、finalize 有什么區(qū)別?
  • 76.try-catch-finally 中哪個部分可以省略?
  • 77.try-catch-finally 中,如果 catch 中 return 了,finally 還會執(zhí)行嗎?
  • 78.常見的異常類有哪些?

八、網(wǎng)絡(luò)

  • 79.http 響應(yīng)碼 301 和 302 代表的是什么?有什么區(qū)別?
  • 80.forward 和 redirect 的區(qū)別?
  • 81.簡述 tcp 和 udp的區(qū)別?
  • 82.tcp 為什么要三次握手,兩次不行嗎?為什么?
  • 83.說一下 tcp 粘包是怎么產(chǎn)生的?
  • 84.OSI 的七層模型都有哪些?
  • 85.get 和 post 請求有哪些區(qū)別?
  • 86.如何實現(xiàn)跨域?
  • 87.說一下 JSONP 實現(xiàn)原理?

九、設(shè)計模式

  • 88.說一下你熟悉的設(shè)計模式?
  • 89.簡單工廠和抽象工廠有什么區(qū)別?

十、Spring/Spring MVC

  • 90.為什么要使用 spring?
  • 91.解釋一下什么是 aop?
  • 92.解釋一下什么是 ioc?
  • 93.spring 有哪些主要模塊?
  • 94.spring 常用的注入方式有哪些?
  • 95.spring 中的 bean 是線程安全的嗎?
  • 96.spring 支持幾種 bean 的作用域?
  • 97.spring 自動裝配 bean 有哪些方式?
  • 98.spring 事務(wù)實現(xiàn)方式有哪些?
  • 99.說一下 spring 的事務(wù)隔離?
  • 100.說一下 spring mvc 運行流程?
  • 101.spring mvc 有哪些組件?
  • 102.@RequestMapping 的作用是什么?
  • 103.@Autowired 的作用是什么?

十一、Spring Boot/Spring Cloud

  • 104.什么是 spring boot?
  • 105.為什么要用 spring boot?
  • 106.spring boot 核心配置文件是什么?
  • 107.spring boot 配置文件有哪幾種類型?它們有什么區(qū)別?
  • 108.spring boot 有哪些方式可以實現(xiàn)熱部署?
  • 109.jpa 和 hibernate 有什么區(qū)別?
  • 110.什么是 spring cloud?
  • 111.spring cloud 斷路器的作用是什么?
  • 112.spring cloud 的核心組件有哪些?

十二、Hibernate

  • 113.為什么要使用 hibernate?
  • 114.什么是 ORM 框架?
  • 115.hibernate 中如何在控制臺查看打印的 sql 語句?
  • 116.hibernate 有幾種查詢方式?
  • 117.hibernate 實體類可以被定義為 final 嗎?
  • 118.在 hibernate 中使用 Integer 和 int 做映射有什么區(qū)別?
  • 119.hibernate 是如何工作的?
  • 120.get()和 load()的區(qū)別?
  • 121.說一下 hibernate 的緩存機制?
  • 122.hibernate 對象有哪些狀態(tài)?
  • 123.在 hibernate 中 getCurrentSession 和 openSession 的區(qū)別是什么?
  • 124.hibernate 實體類必須要有無參構(gòu)造函數(shù)嗎?為什么?

十三、Mybatis

  • 125.mybatis 中 #{}和 ${}的區(qū)別是什么?
  • 126.mybatis 有幾種分頁方式?
  • 127.RowBounds 是一次性查詢?nèi)拷Y(jié)果嗎?為什么?
  • 128.mybatis 邏輯分頁和物理分頁的區(qū)別是什么?
  • 129.mybatis 是否支持延遲加載?延遲加載的原理是什么?
  • 130.說一下 mybatis 的一級緩存和二級緩存?
  • 131.mybatis 和 hibernate 的區(qū)別有哪些?
  • 132.mybatis 有哪些執(zhí)行器(Executor)?
  • 133.mybatis 分頁插件的實現(xiàn)原理是什么?
  • 134.mybatis 如何編寫一個自定義插件?

十四、RabbitMQ

  • 135.rabbitmq 的使用場景有哪些?
  • 136.rabbitmq 有哪些重要的角色?
  • 137.rabbitmq 有哪些重要的組件?
  • 138.rabbitmq 中 vhost 的作用是什么?
  • 139.rabbitmq 的消息是怎么發(fā)送的?
  • 140.rabbitmq 怎么保證消息的穩(wěn)定性?
  • 141.rabbitmq 怎么避免消息丟失?
  • 142.要保證消息持久化成功的條件有哪些?
  • 143.rabbitmq 持久化有什么缺點?
  • 144.rabbitmq 有幾種廣播類型?
  • 145.rabbitmq 怎么實現(xiàn)延遲消息隊列?
  • 146.rabbitmq 集群有什么用?
  • 147.rabbitmq 節(jié)點的類型有哪些?
  • 148.rabbitmq 集群搭建需要注意哪些問題?
  • 149.rabbitmq 每個節(jié)點是其他節(jié)點的完整拷貝嗎?為什么?
  • 150.rabbitmq 集群中唯一一個磁盤節(jié)點崩潰了會發(fā)生什么情況?
  • 151.rabbitmq 對集群節(jié)點停止順序有要求嗎?

十五、Kafka

  • 152.kafka 可以脫離 zookeeper 單獨使用嗎?為什么?
  • 153.kafka 有幾種數(shù)據(jù)保留的策略?
  • 154.kafka 同時設(shè)置了 7 天和 10G 清除數(shù)據(jù),到第五天的時候消息達到了 10G,這個時候 kafka 將如何處理?
  • 155.什么情況會導(dǎo)致 kafka 運行變慢?
  • 156.使用 kafka 集群需要注意什么?

十六、Zookeeper

  • 157.zookeeper 是什么?
  • 158.zookeeper 都有哪些功能?
  • 159.zookeeper 有幾種部署模式?
  • 160.zookeeper 怎么保證主從節(jié)點的狀態(tài)同步?
  • 161.集群中為什么要有主節(jié)點?
  • 162.集群中有 3 臺服務(wù)器,其中一個節(jié)點宕機,這個時候 zookeeper 還可以使用嗎?
  • 163.說一下 zookeeper 的通知機制?

十七、MySql

  • 164.數(shù)據(jù)庫的三范式是什么?
  • 165.一張自增表里面總共有 7 條數(shù)據(jù),刪除了最后 2 條數(shù)據(jù),重啟 mysql 數(shù)據(jù)庫,又插入了一條數(shù)據(jù),此時 id 是幾?
  • 166.如何獲取當(dāng)前數(shù)據(jù)庫版本?
  • 167.說一下 ACID 是什么?
  • 168.char 和 varchar 的區(qū)別是什么?
  • 169.float 和 double 的區(qū)別是什么?
  • 170.mysql 的內(nèi)連接、左連接、右連接有什么區(qū)別?
  • 171.mysql 索引是怎么實現(xiàn)的?
  • 172.怎么驗證 mysql 的索引是否滿足需求?
  • 173.說一下數(shù)據(jù)庫的事務(wù)隔離?
  • 174.說一下 mysql 常用的引擎?
  • 175.說一下 mysql 的行鎖和表鎖?
  • 176.說一下樂觀鎖和悲觀鎖?
  • 177.mysql 問題排查都有哪些手段?
  • 178.如何做 mysql 的性能優(yōu)化?

十八、Redis

  • 179.redis 是什么?都有哪些使用場景?
  • 180.redis 有哪些功能?
  • 181.redis 和 memecache 有什么區(qū)別?
  • 182.redis 為什么是單線程的?
  • 183.什么是緩存穿透?怎么解決?
  • 184.redis 支持的數(shù)據(jù)類型有哪些?
  • 185.redis 支持的 java 客戶端都有哪些?
  • 186.jedis 和 redisson 有哪些區(qū)別?
  • 187.怎么保證緩存和數(shù)據(jù)庫數(shù)據(jù)的一致性?
  • 188.redis 持久化有幾種方式?
  • 189.redis 怎么實現(xiàn)分布式鎖?
  • 190.redis 分布式鎖有什么缺陷?
  • 191.redis 如何做內(nèi)存優(yōu)化?
  • 192.redis 淘汰策略有哪些?
  • 193.redis 常見的性能問題有哪些?該如何解決?

十九、JVM

  • 194.說一下 jvm 的主要組成部分?及其作用?
  • 195.說一下 jvm 運行時數(shù)據(jù)區(qū)?
  • 196.說一下堆棧的區(qū)別?
  • 197.隊列和棧是什么?有什么區(qū)別?
  • 198.什么是雙親委派模型?
  • 199.說一下類加載的執(zhí)行過程?
  • 200.怎么判斷對象是否可以被回收?
  • 201.java 中都有哪些引用類型?
  • 202.說一下 jvm 有哪些垃圾回收算法?
  • 203.說一下 jvm 有哪些垃圾回收器?
  • 204.詳細介紹一下 CMS 垃圾回收器?
  • 205.新生代垃圾回收器和老生代垃圾回收器都有哪些?有什么區(qū)別?
  • 206.簡述分代垃圾回收器是怎么工作的?
  • 207.說一下 jvm 調(diào)優(yōu)的工具?
  • 208.常用的 jvm 調(diào)優(yōu)的參數(shù)都有哪些?

限于篇幅的原因,答案不能完全展示

加Q群:328993819 備注簡書,免費獲取

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容