朋友幹了5年整的Java面試官,給我分享了一份面試官最愛問的Java面試題

2015 年,由於工做崗位的變更,開始負責給集團招聘一些技術人員,出於對公司的負責,也爲了更好的勝任技術經理的職位,在面試的這件事上,朋友作了大量的「功課」,首先研究了幾乎全部大廠的面試題,還和負責招聘工做的幾個朋友,詳細的探討了 Java 面試所要涉及的知識點,因而就有了今天你們看到的這 200 多道面試題。java

爲何要公開這些面試題?

緣由一:身邊從事 Java 開發的人員愈來愈多,個人表弟表妹們,朋友的表弟表妹們,朋友的朋友的表弟表妹們,每次問我要相同的面試複習材料,已經讓我疲於應付,索性整理出來,直接發連接給他們。mysql

緣由二:節省招聘雙方彼此的時間,有些來公司面試人,不管是有幾年工做經驗的仍是剛畢業的,就連這些最基礎的面試題都搞不定,這確實讓人很遺憾。常言道「一屋不掃何以掃天下」,也是一樣的道理,若是連基礎的概念都搞不明白,又怎麼讓面試官相信你能寫出高質量的程序呢?與其浪費彼此的時間,還不如花點時間把本身的基礎知識掌握牢固。程序員

緣由三:提升 Java 從業人員總體的能力模型,讓優秀的人能「冒」出來。有了這些面試題不意味着,死記硬背以後就能進入企業工做,尤爲是 BAT 等工做崗位競爭更爲激烈,這些面試題只能成爲面試體系中的一道「開胃菜」,從而提升了整個 Java 面試的壁壘,讓願與學的人,變的更加優秀,從而和懶惰的人拉開差距,讓企業也能更輕易的甄別。面試

這些面試題包含哪些內容?

借花獻佛!朋友幹了5年整的Java面試官,給我分享了一份面試官最愛問的Java面試題這份面試題包含了 19 個模塊:Java 基礎、容器、多線程、反射、對象拷貝、Java Web、異常、網絡、設計模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM 等等等,免費下載速度通道:點擊[全套JAVA面試集]+[Java進階核心知識集]以下圖所示:)redis

image.png算法

本面試題解決的痛點

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

適宜閱讀人羣

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

面試題展現

1、Java 基礎spring

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

2、容器sql

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

3、多線程數據庫

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

4、反射設計模式

  • 57.什麼是反射?
  • 58.什麼是 java 序列化?什麼狀況下須要序列化?
  • 59.動態代理是什麼?有哪些應用?
  • 60.怎麼實現動態代理?

5、對象拷貝

  • 61.爲何要使用克隆?
  • 62.如何實現對象克隆?
  • 63.深拷貝和淺拷貝區別是什麼?

6、Java Web

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

7、異常

  • 74.throw 和 throws 的區別?
  • 75.final、finally、finalize 有什麼區別?
  • 76.try-catch-finally 中哪一個部分能夠省略?
  • 77.try-catch-finally 中,若是 catch 中 return 了,finally 還會執行嗎?
  • 78.常見的異常類有哪些?

8、網絡

  • 79.http 響應碼 301 和 302 表明的是什麼?有什麼區別?
  • 80.forward 和 redirect 的區別?
  • 81.簡述 tcp 和 udp的區別?
  • 82.tcp 爲何要三次握手,兩次不行嗎?爲何?
  • 83.說一下 tcp 粘包是怎麼產生的?
  • 84.OSI 的七層模型都有哪些?
  • 85.get 和 post 請求有哪些區別?
  • 86.如何實現跨域?
  • 87.說一下 JSONP 實現原理?

9、設計模式

  • 88.說一下你熟悉的設計模式?
  • 89.簡單工廠和抽象工廠有什麼區別?

10、Spring/Spring MVC

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

11、Spring Boot/Spring Cloud

  • 104.什麼是 spring boot?
  • 105.爲何要用 spring boot?
  • 106.spring boot 核心配置文件是什麼?
  • 107.spring boot 配置文件有哪幾種類型?它們有什麼區別?
  • 108.spring boot 有哪些方式能夠實現熱部署?
  • 109.jpa 和 hibernate 有什麼區別?
  • 110.什麼是 spring cloud?
  • 111.spring cloud 斷路器的做用是什麼?
  • 112.spring cloud 的核心組件有哪些?

12、Hibernate

  • 113.爲何要使用 hibernate?
  • 114.什麼是 ORM 框架?
  • 115.hibernate 中如何在控制檯查看打印的 sql 語句?
  • 116.hibernate 有幾種查詢方式?
  • 117.hibernate 實體類能夠被定義爲 final 嗎?
  • 118.在 hibernate 中使用 Integer 和 int 作映射有什麼區別?
  • 119.hibernate 是如何工做的?
  • 120.get()和 load()的區別?
  • 121.說一下 hibernate 的緩存機制?
  • 122.hibernate 對象有哪些狀態?
  • 123.在 hibernate 中 getCurrentSession 和 openSession 的區別是什麼?
  • 124.hibernate 實體類必需要有無參構造函數嗎?爲何?

十3、Mybatis

  • 125.mybatis 中 #{}和 ${}的區別是什麼?
  • 126.mybatis 有幾種分頁方式?
  • 127.RowBounds 是一次性查詢所有結果嗎?爲何?
  • 128.mybatis 邏輯分頁和物理分頁的區別是什麼?
  • 129.mybatis 是否支持延遲加載?延遲加載的原理是什麼?
  • 130.說一下 mybatis 的一級緩存和二級緩存?
  • 131.mybatis 和 hibernate 的區別有哪些?
  • 132.mybatis 有哪些執行器(Executor)?
  • 133.mybatis 分頁插件的實現原理是什麼?
  • 134.mybatis 如何編寫一個自定義插件?

十4、RabbitMQ

  • 135.rabbitmq 的使用場景有哪些?
  • 136.rabbitmq 有哪些重要的角色?
  • 137.rabbitmq 有哪些重要的組件?
  • 138.rabbitmq 中 vhost 的做用是什麼?
  • 139.rabbitmq 的消息是怎麼發送的?
  • 140.rabbitmq 怎麼保證消息的穩定性?
  • 141.rabbitmq 怎麼避免消息丟失?
  • 142.要保證消息持久化成功的條件有哪些?
  • 143.rabbitmq 持久化有什麼缺點?
  • 144.rabbitmq 有幾種廣播類型?
  • 145.rabbitmq 怎麼實現延遲消息隊列?
  • 146.rabbitmq 集羣有什麼用?
  • 147.rabbitmq 節點的類型有哪些?
  • 148.rabbitmq 集羣搭建須要注意哪些問題?
  • 149.rabbitmq 每一個節點是其餘節點的完整拷貝嗎?爲何?
  • 150.rabbitmq 集羣中惟一一個磁盤節點崩潰了會發生什麼狀況?
  • 151.rabbitmq 對集羣節點中止順序有要求嗎?

十5、Kafka

  • 152.kafka 能夠脫離 zookeeper 單獨使用嗎?爲何?
  • 153.kafka 有幾種數據保留的策略?
  • 154.kafka 同時設置了 7 天和 10G 清除數據,到第五天的時候消息達到了 10G,這個時候 kafka 將如何處理?
  • 155.什麼狀況會致使 kafka 運行變慢?
  • 156.使用 kafka 集羣須要注意什麼?

十6、Zookeeper

  • 157.zookeeper 是什麼?
  • 158.zookeeper 都有哪些功能?
  • 159.zookeeper 有幾種部署模式?
  • 160.zookeeper 怎麼保證主從節點的狀態同步?
  • 161.集羣中爲何要有主節點?
  • 162.集羣中有 3 臺服務器,其中一個節點宕機,這個時候 zookeeper 還可使用嗎?
  • 163.說一下 zookeeper 的通知機制?

十7、MySql

  • 164.數據庫的三範式是什麼?
  • 165.一張自增表裏面總共有 7 條數據,刪除了最後 2 條數據,重啓 mysql 數據庫,又插入了一條數據,此時 id 是幾?
  • 166.如何獲取當前數據庫版本?
  • 167.說一下 ACID 是什麼?
  • 168.char 和 varchar 的區別是什麼?
  • 169.float 和 double 的區別是什麼?
  • 170.mysql 的內鏈接、左鏈接、右鏈接有什麼區別?
  • 171.mysql 索引是怎麼實現的?
  • 172.怎麼驗證 mysql 的索引是否知足需求?
  • 173.說一下數據庫的事務隔離?
  • 174.說一下 mysql 經常使用的引擎?
  • 175.說一下 mysql 的行鎖和表鎖?
  • 176.說一下樂觀鎖和悲觀鎖?
  • 177.mysql 問題排查都有哪些手段?
  • 178.如何作 mysql 的性能優化?

十8、Redis

  • 179.redis 是什麼?都有哪些使用場景?
  • 180.redis 有哪些功能?
  • 181.redis 和 memecache 有什麼區別?
  • 182.redis 爲何是單線程的?
  • 183.什麼是緩存穿透?怎麼解決?
  • 184.redis 支持的數據類型有哪些?
  • 185.redis 支持的 java 客戶端都有哪些?
  • 186.jedis 和 redisson 有哪些區別?
  • 187.怎麼保證緩存和數據庫數據的一致性?
  • 188.redis 持久化有幾種方式?
  • 189.redis 怎麼實現分佈式鎖?
  • 190.redis 分佈式鎖有什麼缺陷?
  • 191.redis 如何作內存優化?
  • 192.redis 淘汰策略有哪些?
  • 193.redis 常見的性能問題有哪些?該如何解決?

十9、JVM

  • 194.說一下 jvm 的主要組成部分?及其做用?
  • 195.說一下 jvm 運行時數據區?
  • 196.說一下堆棧的區別?
  • 197.隊列和棧是什麼?有什麼區別?
  • 198.什麼是雙親委派模型?
  • 199.說一下類加載的執行過程?
  • 200.怎麼判斷對象是否能夠被回收?
  • 201.java 中都有哪些引用類型?
  • 202.說一下 jvm 有哪些垃圾回收算法?
  • 203.說一下 jvm 有哪些垃圾回收器?
  • 204.詳細介紹一下 CMS 垃圾回收器?
  • 205.新生代垃圾回收器和老生代垃圾回收器都有哪些?有什麼區別?
  • 206.簡述分代垃圾回收器是怎麼工做的?
  • 207.說一下 jvm 調優的工具?
  • 208.經常使用的 jvm 調優的參數都有哪些?

限於篇幅的緣由,答案不能徹底展現,原件免費下載速度通道:點擊[全套JAVA面試集]+[Java進階核心知識集]

image

更多:[Java進階核心知識集]

包含:JVM,JAVA集合,網絡,JAVA多線程併發,JAVA基礎,Spring原理,微服務,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,設計模式,負載均衡,數據庫,一致性哈希,JAVA算法,數據結構,加密算法,分佈式緩存等等

image

相關文章
相關標籤/搜索