Java高級程序員(5年左右)面試題

1,常用設計模式

  • 單例模式:懶漢式、餓漢式、雙重校驗鎖、靜態加載,內部類加載、枚舉類加載。保證一個類僅有一個實例,並提供一個訪問它的全局訪問點。
  • 代理模式:動態代理和靜態代理,什麼時候使用動態代理。
  • 適配器模式:將一個類的接口轉換成客戶希望的另外一個接口。適配器模式使得原本由於接口不兼容而不能一起工作的那些類可以一起工作。
  • 裝飾者模式:動態給類加功能。
  • 觀察者模式:有時被稱作發佈/訂閱模式,觀察者模式定義了一種一對多的依賴關係,讓多個觀察者對象同時監聽某一個主題對象。這個主題對象在狀態發生變化時,會通知所有觀察者對象,使它們能夠自動更新自己。
  • 策略模式:定義一系列的算法,把它們一個個封裝起來, 並且使它們可相互替換。
  • 外觀模式:為子系統中的一組接口提供一個一致的界面,外觀模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。
  • 命令模式:將一個請求封裝成一個對象,從而使您可以用不同的請求對客戶進行參數化。
  • 創建者模式:將一個複雜的構建與其表示相分離,使得同樣的構建過程可以創建不同的表示。
  • 抽象工廠模式:提供一個創建一系列相關或相互依賴對象的接口,而無需指定它們具體的類。

2,基礎知識

  • Java基本類型哪些,所佔字節和範圍
  • Set、List、Map的區別和聯繫
  • 什麼時候使用Hashmap
  • 什麼時候使用Linkedhashmap、Concurrenthashmap、Weakhashmap
  • 哪些集合類是線程安全的
  • 為什麼Set、List、map不實現Cloneable和Serializable接口
  • Concurrenthashmap的實現,1.7和1.8的實現
  • Arrays.sort的實現
  • 什麼時候使用CopyOnArrayList
  • volatile的使用
  • synchronied的使用
  • reentrantlock的實現和Synchronied的區別
  • CAS的實現原理以及問題
  • AQS的實現原理
  • 接口和抽象類的區別,什麼時候使用
  • 類加載機制的步驟,每一步做了什麼,static和final修改的成員變量的加載時機
  • 雙親委派模型
  • 反射機制:反射動態擦除泛型、反射動態調用方法等
  • 動態綁定:父類引用指向子類對象
  • JVM內存管理機制:有哪些區域,每個區域做了什麼
  • JVM垃圾回收機制:垃圾回收算法 垃圾回收器 垃圾回收策略
  • jvm參數的設置和jvm調優
  • 什麼情況產生年輕代內存溢出、什麼情況產生年老代內存溢出
  • 內部類:靜態內部類和匿名內部類的使用和區別

3,分佈式

Redis和memcached:什麼時候選擇redis,什麼時候選擇memcached,內存模型和存儲 策略是什麼樣的

  • MySQL的基本操作 主從數據庫一致性維護
  • mysql的優化策略有哪些
  • mysql索引的實現 B+樹的實現原理
  • 什麼情況索引不會命中,會造成全表掃描
  • java中bio nio aio的區別和聯繫
  • 為什麼bio是阻塞的 nio是非阻塞的 nio是模型是什麼樣的
  • Java io的整體架構和使用的設計模式
  • Reactor模型和Proactor模型
  • http請求報文結構和內容
  • http三次握手和四次揮手
  • rpc相關:如何設計一個rpc框架,從io模型 傳輸協議 序列化方式綜合考慮
  • Linux
    命令 統計,排序,前幾問題等
  • StringBuff 和StringBuilder的實現,底層實現是通過byte數據,外加數組的拷貝來實現的
  • cas操作的使用
  • 內存緩存和數據庫的一致性同步實現

4,微服務

  • 微服務的優缺點
  • 線程池的參數問題
  • ip問題 如何判斷ip是否在多個ip段中
  • 判斷數組兩個中任意兩個數之和是否為給定的值
  • 樂觀鎖和悲觀鎖的實現
  • synchronized實現原理
  • 你在項目中遇到的困難和怎麼解決的
  • 你在項目中完成的比較出色的亮點
  • 消息隊列廣播模式和發佈/訂閱模式的區別
  • 生產者消費者代碼實現
  • 死鎖代碼實現
  • 線程池:參數,每個參數的作用,幾種不同線程池的比較,阻塞隊列的使用,拒絕策略
  • Future和ListenableFuture 異步回調相關
  • 算法相關:判斷能否從數組中找出兩個數字和為給定值,隨機生成1~10000不重複並放入數組,求數組的子數組的最大和,二分查找算法的實現及其時間複雜計算

5,算法

  • 算法:常用排序算法,二分查找,鏈表相關,數組相關,字符串相關,樹相關等
  • 常見序列化協議及其優缺點
  • memcached內存原理,為什麼是基於塊的存儲
  • 搭建一個rpc需要準備什麼
  • 如果線上服務器頻繁地出現full gc ,如何去排查
  • 如果某一時刻線上機器突然量變得很大,服務扛不住了,怎麼解決
  • LUR算法的實現
  • LinkedHashMap實現LRU
  • 定義棧的數據結構,請在該類型中實現一個能夠找到棧最小元素的min函數
  • 海量數據處理的解決思路
  • reactor模型的演變
  • 阻塞、非阻塞、同步、異步區別
  • Collection的子接口
  • jvm調優相關
  • zookeeper相關,節點類型,如何實現服務發現和服務註冊
  • nginx負載均衡相關,讓你去實現負載均衡,該怎麼實現
  • linux命令,awk、cat、sort、cut、grep、uniq、wc、top等
  • 壓力測試相關,怎麼分析,單接口壓測和多情況下的壓測
  • 你覺得你的有點是什麼,你的缺點是什麼

6,開源框架

  • spring mvc的實現原理
  • netty底層實現,IO模型,ChannelPipeline的實現和原理
  • 緩存的設計和優化
  • 緩存和數據庫一致性同步解決方案
  • 你所在項目的系統架構,談談整體實現
  • 消息隊列的使用場景
  • ActiveMQ、RabbitMQ、Kafka的區別

在這裡整理高級Java程序員需要學習的一些技術

如圖:

完整圖片私信(架構)

築基開源框架

Java高級程序員(5年左右)面試題

分佈式

Java高級程序員(5年左右)面試題

性能調優

Java高級程序員(5年左右)面試題

團隊協作

Java高級程序員(5年左右)面試題

微服務

Java高級程序員(5年左右)面試題

b2c

Java高級程序員(5年左右)面試題

最後送福利了,分享Java工程化、高性能及分佈式、高性能、高架構、性能調優、Spring、MyBatis、Netty源碼分析等多個知識點高級進階乾貨的直播免費學習權限及相關視頻資料,還有spring和虛擬機等書籍掃描版

那麼這些資料獲取方式呢

關注+轉發後,私信關鍵詞 【架構】即可獲取!

重要的事情說三遍,轉發、轉發、轉發後再發私信,才可以拿到!


分享到:


相關文章: