做Java開發7年,今年9個月時間圓夢餓了么P7

前言

工作擰螺絲,面試造火箭。我想這是每個程序員比較頭疼的事情吧!但是,又必須要經歷一個面試流程,尤其是摸不清面試官問的問題,導致面試的時候不知道如何回答。
本文是工作7年Java程序員從幾十次面試中挑選出來的面試幾率比較大的一些題目,保證都是大家被問過的(就是這麼自信),希望對大家找工作有所幫助。

 

 

下面的面試題只是我整理出來的一小部分常問的題目,另外本人整理並收藏了20年多家公司面試題知識點合集,以及各種Java核心知識點可以免費分享給大家,下方只是部分資料圖展示。
需要的朋友可以點擊傳送門獲取Java面試題資料://shimo.im/docs/QyJrRJVRdpptDYgk/ 

 

 

 

一、JVM系列面試題

1、堆裏面的分區:Eden,survival (from+ to),老年代,各自的特點。

答:JVM 分為堆區和棧區,還有方法區,初始化的對象放在堆裏面,引用放在棧裏面,

class 類信息常量池(static 常量和 static 變量)等放在方法區

new:①方法區:主要是存儲類信息,常量池(static 常量和 static 變量),編譯後的代碼(位元組碼)等數據

②堆:初始化的對象,成員變量 (那種非 static 的變量),所有的對象實例和數組都要在堆上分配

③棧:棧的結構是棧幀組成的,調用一個方法就壓入一幀,幀上面存儲局部變量表,操作數棧,方法出口等信息,局部變量表存放的是 8 大基礎類型加上一個應用類型,所以還是一個指向地址指針

④ 本地方法棧:主要為 Native 方法服務

⑤ 程序計數器:記錄當前線程執行的行號

2、GC 的兩種判定方法:

3、SafePoint 是什麼

4、GC 的三種收集方法:標記清除、標記整理、複製算法的原理與特點,分別用在什麼地方,如果讓你優化收集方法,有什麼思路?

5、Minor GC 與 Full GC 分別在什麼時候發生?

6、JVM 內存分哪幾個區,每個區的作用是什麼?

7、 如何判斷一個對象是否存活?(或者 GC 對象的判定方法)

二、Redis系列面試題

1、Redis 與 memcached 相比有哪些優勢?

2、Redis 支持哪幾種數據類型?

3、Redis 有哪幾種數據淘汰策略?

4、為什麼 Redis 需要把所有數據放到內存中?

5、Redis 集群方案什麼情況下會導致整個集群不可用?

6、MySQL 里有 2000w 數據,redis 中只存 20w 的數據,如何保證 redis 中的數據都是熱點 數據?

7、Redis 和 Redisson 有什麼關係?

 
 

三、 Mysql系列面試題

1、Mysql 的技術特點是什麼?

2、在 Mysql 中 ENUM 的用法是什麼?

3、與 Oracle 相比,Mysql 有什麼優勢?

4、列的字符串類型可以是什麼?

5、請簡潔描述 Mysql 中 InnoDB 支持的四種事務隔離級別名稱,以及逐級之間的區別?

6、LIKE 聲明中的%和_是什麼意思?

7、MyISAM 表格將在哪裡存儲,並且還提供其存儲格式?

四、Netty系列面試題

1、BIO、NIO 和 AIO 的區別?

答:BIO:一個連接一個線程,客戶端有連接請求時服務器端就 需要啟動一個線程進行處理。線程開銷大。

偽異步 IO:將請求連接放入線程池,一對多,但線程還是很寶貴的資源。

NIO:一個請求一個線程,但客戶端發送的連接請求都會註冊到多路復用器上,多路復用

器輪詢到連接有 I/O 請求時才啟動一個線程進行處理。

AIO:一個有效請求一個線程,客戶端的 I/O 請求都是由 OS 先完成了再通知服務器應用去啟動線程進行處理,BIO 是面向流的,NIO 是面向緩衝區的;BIO 的各種流是阻塞的。而 NIO 是非阻塞的;BIO的 Stream 是單向的,而 NIO 的 channel 是雙向的。

NIO 的特點:事件驅動模型、單線程處理多任務、非阻塞 I/O,I/O 讀寫不再阻塞,而是返回 0、基於 block 的傳輸比基於流的傳輸更高效、更高級的 IO 函數 zero-copy、IO 多路復用大大提高了 Java 網絡應用的可伸縮性和實用性。基於 Reactor 線程模型。

在 Reactor 模式中,事件分發器等待某個事件或者可應用或個操作的狀態發生,事件分發器就把這個事件傳給事先註冊的事件處理函數或者回調函數,由後者來做實際的讀寫操作。如在 Reactor 中實現讀:註冊讀就緒事件和相應的事件處理器、事件分發器等待事件、事件到來,激活分發器,分發器調用事件對應的處理器、事件處理器完成實際的讀操作,處理讀到的數據,註冊新的事件,然後返還控制權。

2、TCP 粘包/拆包的原因及解決方法?

3、了解哪幾種序列化協議?

4、如何選擇序列化協議?

5、Netty 的零拷貝實現?

6、.Netty 的高性能表現在哪些方面?

五、SQL優化系列面試題

1、Mysql 的技術特點是什麼?

答:Mysql 數據庫軟件是一個客戶端或服務器系統,其中包括:支持各種客戶端程序和庫的多線程 SQL 服務器、不同的後端、廣泛的應用程序編程接口和管理工具。

2、Heap 表是什麼?

3、Mysql 服務器默認端口是什麼?

4、與 Oracle 相比,Mysql 有什麼優勢?

5、區分 CHAR_LENGTH 和 LENGTH?

6、Mysql 中使用什麼存儲引擎?

六、Duddo系列面試題

1、Dubbo 中 zookeeper 做註冊中心,如果註冊中心集群都掛掉,發佈者和訂閱者之間還能通信么?

2、dubbo 服務負載均衡策略?

3、Dubbo 在安全機制方面是如何解決的

4、dubbo 連接註冊中心和直連的區別

5、dubbo 服務集群配置(集群容錯模式)

6、dubbo 通信協議 dubbo 協議為什麼要消費者比提供者個數多:

7、dubbo 通信協議 dubbo 協議適用範圍和適用場景

七、設計模式系列面試題

1、請列舉出在 JDK 中幾個常用的設計模式?

答:單例模式(Singleton pattern)用於 Runtime,Calendar 和其他的一些類中。工廠模式(Factory pattern)被用於各種不可變的類如Boolean,像 Boolean.valueOf,觀察者模式(Observer pattern)被用於 Swing 和很多的事件監聽中。裝飾器設計模式(Decoratordesign pattern)被用於多個 Java IO 類中。

2、什麼是設計模式?你是否在你的代碼裏面使用過任何設計模式?

3、Java 中什麼叫單例設計模式?請用 Java 寫出線程安全的單例模式

4、在 Java 中,什麼叫觀察者設計模式(observer design pattern)?

5、使用工廠模式最主要的好處是什麼?在哪裡使用?

6、舉一個用 Java 實現的裝飾模式(decorator design pattern)?它是作用於對象層次還是類層次?

7、舉例說明什麼情況下會更傾向於使用抽象類而不是接口?

 

總結

針對以上面試題,我總結出了互聯網公司Java程序員面試中,涉及到的絕大部分面試題(附答案詳解)。編成了文檔和PDF格式的資料,免費分享給大家。包括 Dubbo、Redis、Netty、Zookeeper、Spring Cloud、分佈式、高並發等架構技術點核心資料),希望能幫助到您面試前的複習並且能找到一個心儀的工作。同時,也節省大家去網上搜索資料浪費的時間來學習,也可以關注我喲以後還會有更多乾貨分享噠~

 

 

說到這裡,想必大家都蠢蠢欲動了吧,由於文章字數原因,完整資料不能全部上傳,需要資料的朋友可以點擊傳送門獲取Java面試題資料://shimo.im/docs/QyJrRJVRdpptDYgk/