BATM面試Java崗:精選200+面試題及答案、6大重點規劃和經驗總結

馬士兵老師發表於2020-10-29

前言

金九銀十已經結束了,而每到年後,總會有很多人跳槽。可我發現一個奇怪的現象:那些跳槽的人,總是從一個坑,跳進令一個坑中。畢竟一年過去了,會的還是原來的知識,人的身價就擺在那裡,無論怎麼折騰,也不會拿到更好的offer。這樣的跳槽其實沒有意義,也許就有人問,現在都是網際網路寒冬了,要怎樣才能把握好機會,拿到跟好跟適合自己的offer呢?技術才是我們程式設計師的立身之本,在再好的機遇面前我們也要有這個實力去抓住它。

《年末複習》我這裡整理了200+道大型網際網路公司面試常問的面試題和答案及面試經驗總結(答案文末獲取及更多架構面試專題資料領取!),希望在你的求職路上有一定的幫助。

面試重點規劃:

Java程式設計師面試常問的重點技術問題:資料結構與演算法,JVM記憶體結構、垃圾回收器、回收演算法、GC、併發程式設計相關(多執行緒、執行緒池等)、NIO/BIO、效能優化、設計模式、Spring框架、分散式相關:Redis快取、一致Hash演算法、分散式儲存、負載均衡等,微服務以及Docker容器等。

大廠高頻常問的Java面試題如下:

java基礎

HashMap1.7和1.8的實現區別

HashMap中插入、新增、刪除除元素的時間複雜度?

ConcurrentHashMap的實現原理?

newString(),一共建立了幾個物件?

序列化和反序列化的底層實現原理?

hashCode和equals方法的區別和聯絡?

講講String、StringBuilder、StringBuffer?

Object類中常見的方法,為什麼wait notify會放在Object裡邊?

Arraylist與LinkedUstKU空間是多少?

HashMap的預設空間、擴容因子等?

若hashcode方法永遠退回1或者一個常量會產生什麼結果?

淺拷貝和深拷貝的區別?

反射的作用與實現原理?

Java提供的排序演算法是怎麼實現的?

多執行緒

說說synchronized實現原理(物件監視器)?

volatile實現原理(禁止指令重排、重新整理記憶體)?

ThreadLocal原理分析,ThreadLocal為什麼會出現OOM,出現的深層次原理?

CAS無鎖的概念、什麼是樂觀鎖和悲觀鎖?

AQS同步佇列是什麼?

什麼是ABA問題,出現ABA問題JDK是如何解決的?

常見的原子操作類?

偏向鎖、輕量級鎖、重量級鎖、自旋鎖的概念?

一個執行緒連著呼叫start兩次會出現什麼情況?

執行緒池的實現?

重要引數及原理?

說說四種執行緒池?

任務拒接策略有哪幾種?

執行緒狀態以及API怎麼操作會發生這種轉換?

JVM

JVM執行時記憶體區域劃分?

常見的GC回收演算法及其含義?

什麼是類載入器?

什麼是雙親委派模型機制?

一個類的生命週期、類是如何載入到JVM中的?

說說類載入的過程?

什麼是強引用、軟引用、裝引用、虛引用?

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

什麼時候觸發Full GC?

Java中的大対象如坷進行儲存?

為什麼新生代記憶體需要有兩個Survivor區?

設計模式

單例模式

動態代理

工廠模式

責任鏈模式

MySQL

MySQL常見的儲存引擎以及他們之間的區別?

MySQL索引為什麼使用B+樹?

MySQL覆蓋索引是什麼?

MySQL索引失效的條件,索引在什麼時候不會起效果?

MySQL如何進行優化的?

什麼是explain命令?

MySQL遇到的死鎖問題、如何排查與解決?

常見的資料庫優化方案,在你的專案中資料庫如何進行優化的?

什麼是redo日誌,什麼是undo日誌?

分散式資料庫

說說常見的幾種分散式ID的設計方案?

分庫與分錶帶來的分散式困境與應對之策(如何解決分散式下的分庫分表,全域性表?)

如何拆分服務、水平分割、垂直分割?

Redis

Redis使用場景?

Redis有哪些資料型別?

說說Redis持久化機制?

Redis為什麼是單執行緒的?

什麼快取雪崩、快取穿透、快取預熱、快取更新、快取降級?

說說Redis常見的回收策略?

Hash—致性演算法?

Redis和資料庫資料一致性的問題?

Redis中zSet跳躍表問題?

Nignx

請解釋什麼是C10K問題或者知道什麼是C10K問題嗎?

正向代理和反向代理?

Nginx幾種常見的負載均衡策略?

Nginx伺服器上的Master和Worker程式分別是什麼?

Zookeeper

什麼是Zookeeper通知機制?

Zookeeper叢集管理(檔案系統、通知機制)

講講Zookeeper分散式鎖?

獲取分散式鎖的流程

Zookeeper資料複製?

zookeeper是如何保證事務的順序一致性的?

zookeeper是如何選取主leader的?

zk節點當機如何處理?

zookeeper負載均衡和nginx負載均衡區別?

說說zookeeper watch機制?

訊息佇列問題及叢集分散式

訊息佇列使用的場景介紹和作用(應用耦合、非同步訊息,流量削鋒等)

如何解決訊息佇列丟失訊息和重複消費問題?

什麼是CAP、Base?

說說最終一致性理論?

什麼是RPC、如何實現RPC、RPC的實現原理?

什麼是Dubbo?

Dubbo的基本原理、執行流程?

叢集Session解決方案?

分散式事務?

說說三種分散式鎖的實現?

叢集、負載均衡、分散式、資料一致性的區別和聯絡?

網路程式設計

三次搌手和四次揮手、為什麼揮手需要四次

什麼是TCP粘包/拆包

TCP粘包/拆包的解決辦法

從遊覽器中輸入URL到頁面載入的發生了什麼?

什麼是長連線和短

什麼是長連線和短連連線?

Spring

講講靜態代理模式的優點及其瓶頸?

對Java 介面代理模式的實現原理的理解?

如何使用 Java 反射實現動態代理?

談談對Cglib 類增強動態代理的實現?

什麼是 AOP?

講解OOP與AOP的簡單對比?

講解JDK 動態代理和 CGLIB 代理原理以及區別?

什麼是 IOC?

Spring IOC 怎麼管理 Bean 之間的依賴關係,怎麼避免迴圈依賴?

BeanFactory 和 FactoryBean 有什麼區別,BeanFactory 和 ApplicationContext 又有什麼不同?

談談Spring Bean 建立過程中的設計模式?

微服務

什麼是Spring Boot ?

Spring Boot有哪些優點?

Spring Boot中的監視器是什麼?

如何實現Spring Boot應用程式的安全性?

如何整合Spring Boot和ActiveMQ ?

如何監視所有Spring Boot微服務?

如何使用Spring Boot實現異常處理?

什麼是Spring Cloud ?

使用Spring Cloud有什麼優勢?

服務註冊和發現是什麼意思?Spring Cloud如何實現?

負載平衡的意義什麼?

什麼是Hvstrix ?它如何實現容錯?

講講Hvstrix斷路器?

對此學習文件,面試答案感興趣的小夥伴們可以

個人軟實力

軟實力主要就是指平時在語言溝通、邏輯思維、面試的積極性和主動性、簡歷的優化技巧等方便。

通過軟實力來突出自己的優勢,與硬實力的結合,才是你自己真正的實力體現。

溝通和邏輯思維能力:對一個問題的表達方式,邏輯思維(像有些人的發言就讓人聽上去很有層次感,很舒服),溝通的層次感,善於短時間突出重點。

面試的積極性和主動性:尤其是BAT,特別喜歡主動性和積極性的人才,主動性的人更加擅長於克服當前的困難,並把事情做好,在遇到挫折後,更容易調整好心態,且積極去推進專案。這一點,在面試的溝通過程中,有經驗的BAT面試官可以通過與你的交流細節,可以捕獲到部分你的性格優勢和劣勢。總之,主動性和樂觀性的人,更有利於今後的發展,這一點不僅僅適用於面試,更適用於今後的工作發展。

簡歷的準備:簡歷重點是突出自我介紹、擅長技能、專案經驗。自我介紹要做到一句話就能表述清楚自己的優勢,比如:學習能力(短時間熟練掌握技能)、個人履歷(BAT背景優勢)、積極努力(個人推動什麼專案等)。

擅長技能:專業技能的描述詞無非就那麼幾種:精通、熟練、熟悉、瞭解。精通感覺一般還是不要寫,除非你在某個技術點上真的有足夠的把握,真正能做到精通一門語言、一個分散式框架這才是精通。熟悉、熟練居多、精通是典型的金字塔頂部。總之,簡歷不要過於突出精通項數,而是突出精通的領域。

專案經驗:突出自己的王牌專案,最有技術含量、挑戰和幫助最大一個專案講就足夠了,面試的過程中面試官也會重點讓你描述這個擅長的專案,提前模擬這個專案的講解順序和重點,而不是臨場講解。

做一個靠譜且有責任心的人:很多公司在內部的面試細則上面都會註明這一點,如果價值觀或是人品問題會直接否決。沒有一個面試官不想找一個技術出眾又有責任心的人,請相信我,責任心非常重要,更有利於今後的晉升。

最後,在你通過了硬實力和軟實力的考核後,剩下的就是緣分了,你的面試氣場與BAT面試官的匹配度,每一個面試官都希望找到與自己類似的求職人才,這也許就是聞味吧。

最後

針對上面面試題我總結出了網際網路公司java程式設計師面試涉及到的絕大部分面試題及答案做成了文件和架構視訊資料免費分享給大家(包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分散式、高併發等架構技術資料),希望能幫助到您面試前的複習且找到一個好的工作,也節省大家在網上搜尋資料的時間來學習,也希望有需要的朋友能在之後能找到一個好工作,拿到心儀的offer!

對此學習文件,面試答案感興趣

BATM面試Java崗:精選200+面試題及答案、6大重點規劃和經驗總結

相關文章