Java 面試應該看些什麼

  本文將會從6個方面去介紹 Java 方向的高頻面試點。

  Java 語言基礎

  基礎語法:抽象類和接口的區別、Java 中的泛型是怎麼實現的、怎樣判斷兩個 Java 對象是相等的等等類似的問題

  容器相關的面試:List、Set、Map三者的區別、ArrayList和LinkedList 之間的區別、ArrayList的擴容機制、HashMap是線程安全的嗎?爲什麼呢?、HashTable是線程安全的嗎?它是怎樣實現線程安全的?、JDK1.8之前和之後,HashMap的底層實現發生了哪些變化呢?、我需要一個線程安全的Map,你會選擇使用什麼?爲什麼?你是從哪些方面考慮的呢?

  併發編程相關的面試:談一談Java中的鎖機制、你用過哪些併發容器,說一說它們的特性、Java提供了一些原子類,它們都是以Atomic開頭,你知道它們是怎麼實現的嗎?、線程池的參數以及每個參數的含義,它們對線程池產生怎樣的影響、JDK中提供了哪幾類線程池,它們各自有什麼樣的適用場合?

  JVM相關的面試:談一談JVM中內存區域是怎樣劃分的,每一塊內存區域中存儲的是什麼、JVM垃圾回收有幾種方式,談一談你是怎樣理解的、類加載器和類加載過程

  MySQL 相關的知識點面試

  MySQL一共提供了四種事務隔離級別,說一說它們各自的優缺點。我們平時使用的是哪一種事務隔離級別呢?爲什麼?(先搞清楚你現在用的是哪個版本的MySQL)

  談一談你對事務的理解,我們日常的工作中在什麼情況下需要使用事務?怎樣在MySQL中開啓和提交事務?

  你理解索引嗎?它是怎樣構造的?索引具有哪些特性(你能說出來幾種)?(這裏需要特別注意,需要先說清楚你使用的是哪一種存儲引擎)

  你遇到過慢查詢嗎?是怎樣定位慢查詢的?又是怎樣優化的呢?

  Redis相關的知識點面試

  我們常說Redis是單進程單線程的,但是它爲什麼還會這麼快呢?你知道這是爲什麼嗎?(從Redis IO模型的角度出發去解釋)

  Redis支持哪些數據結構,你平時都是怎樣使用的?

  Redis的過期機制是怎樣實現的?

  Redis支持哪兩種持久化機制,它們各自有哪些優缺點?

  Kafka相關的知識點面試

  把Kafka中的名詞解釋一下,例如:Topic、Partition、Consumer、Producer、Group等等

  你平時在工作中是怎樣使用Kafka的?

  Kafka的容災機制

  對於丟失消息、重複發送、重複消費這樣的問題,你有怎樣的解決辦法?

  Spring相關的知識點面試

  Spring中的bean作用域與生命週期

  我不清楚Spring中的IOC和AOP是什麼,你能給我說清楚嗎?

  談一談Spring容器啓動的過程

  對於SpringBoot和SpringCloud來說,一定要能說清楚框架特性,例如SpringBoot中的配置文件是怎樣加載的,規則是怎樣的?自動配置是怎麼實現的?等等;SpringCloud中提供了哪些組件,Eureka、Zuul、Ribbon、Feign、Hystrix,它們是什麼,起到了什麼樣的作用,簡單的說一說它們各自的實現原理與特性。

  項目相關的知識點面試

  不要在簡歷上寫的太過詳細,簡單寫一寫這個項目是什麼、包含什麼樣的功能、你在其中是個怎樣的角色

  你做的工作中有什麼樣的亮點嗎?體現在哪些方面呢?(例如:性能優化或者重構),沒有的話問題也不大

  最核心的點,要能夠說清楚這個項目的故事,項目的背景、框架技術選型、開發過程、開發週期、上線、運維等等,這個要提前花大量的時間準備好

  面試官可能會對你的業務作出一些臨時修改,並讓你重新設計或者優化,這個考察的難度比較高,可以適當的準備



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章