【面試題】2018年最全Java面試通關秘籍第五套!
【面試題】2018年最全Java面試通關秘籍第五套!
第一套:《2018年最全Java面試通關秘籍第一套!》
第二套:《2018年最全Java面試通關秘籍第二套!》
第三套:《2018年最全Java面試通關秘籍第三套!》
第四套:《2018年最全Java面試通關秘籍第四套!》
註:本文是從眾多面試者的面試經驗中整理而來,其中不少是本人出的一些題目,網絡資源眾多,如有雷同,純屬巧合!禁止一切形式的碰瓷行為!未經允許禁止一切形式的轉載和復制,如有違反則追究其法律責任!
不要問我為什麽沒答案了,原因還是以前那句話,單純的背面試題是解決不了任何問題的,只有深入其內部原理,才能遊刃有余!後期一系列的文章會不斷的探討這一個個經典的面試題,敬請期待!也歡迎大家在留言處補充和討論!
一、Java相關
-
樂觀悲觀鎖的設計,如何保證原子性,解決的問題;
-
char和double的字節,以及在內存的分布是怎樣;
-
對象內存布局,然後講下對象的死亡過程?
-
對象頭,詳細講下;
-
sync原理詳細,sync內拋異常會怎樣,死鎖嗎?還是釋放掉?怎麽排查死鎖?死鎖會怎樣?有沒有什麽更好的替代方案?
-
詳細講一下集合,HashSet源碼,HashMap源碼,如果要線程安全需要怎麽做?
-
多線程是解決什麽問題的?線程池解決什麽問題?
-
線程池,如何設計的,裏面的參數有多少種,裏面的工作隊列和線程隊列是怎樣的結構,如果給你,怎樣設計線程池?
-
AQS原理,ReentranLock源碼,設計原理,整體過程。
-
繼續聊多線程源碼,sync原理,然後一個場景設計題;
-
float f = 1.4f;double d = 1.4d; 與 float f = 1.5f;double d = 1.5d; 是否為true,內存是怎樣的;
-
split的源碼,split("a|b|c");得出多少個數組;
-
把所有認識熟用的JUC( java.util.concurrent(簡稱JUC)包)下的類寫出來,講下使用,然後講下原生的線程操作;
-
開閉原則,解析工廠方法模式,建造者模式,區別。手擼出來。
-
講下JVM的大頁模式,JVM內存模型;
-
什麽是敏捷開發,防禦性編程,並行編程。Team Leader的思考;
-
逃逸分析是什麽,作用是什麽,用途是什麽;
-
怎麽認為一個類是線程安全?線程安全的定義是什麽?Java有多少個關鍵字進行同步?為什麽這樣設計?(聊了一大堆,一堆為什麽);
-
兩個線程設計題。記得一個是:t1,t2,t3,讓t1,t2執行完才執行t3,原生實現。
-
寫個後綴表達式,為什麽要設計後綴表達式,有什麽好處?然後寫下中綴。
-
我看你做過性能優化,比如你怎麽分析項目裏面的OOM的,內存泄露呢?詳細說思路;
-
說下多線程,我們什麽時候需要分析線程數,怎麽分析,分析什麽因素;
-
抽象方法和類方法的區別,static的抽象方法可以嗎?
-
說下Java的克隆體系;
-
涉及OOM、JVM優化、源碼問題、數據庫優化、多線程等問題;
-
CPU高?什麽情況CPU高?解決什麽問題?
-
你有遇到過臨界區問題嗎?有遇到過嗎?你在項目遇到這個問題是怎樣解決的?
-
volatile關鍵字作用;
-
Java的多態怎麽實現;
-
解釋一下自旋;
-
解釋一下信號量;
-
什麽情況下會觸發類加載;
-
Java內存抖動嚴重,優化的思路;
二、數據庫相關
-
SQL優化思路,聯合索引與底層樹結構的映像關系,索引結構(B+、B-),為什麽用這樣的結構;
-
講下MySQL的集群?集群遇到過什麽問題?sql的優化?
-
你目前為止遇到的最大數據量是多少?知道100萬時候怎麽設計嗎?1000萬呢?過幾十億呢?
-
MySQL有多少個參數可調,除了最大連接數。全部列出來,一個個分析。
-
聊下優化過的索引,怎麽優化;
-
紅黑樹和平衡樹的區別,為什麽數據庫不用紅黑樹;
-
mysql有哪些鎖,意向鎖有什麽用;
-
數據庫高並發下的優化思路;
-
數據庫什麽情況下索引會失效;
三、數據結構和操作系統相關
-
數據結構學過吧,聊一下?學過什麽結構?講下樹和隊列?B樹呢?
-
操作系統學過吧,聊一下?講一下系統內存是怎樣的?分段分頁虛擬內存?
-
頁面置換算法呢?多少種?有最優的置換算法嗎?
-
你學過什麽課程?然後聊下操作系統,內核、用戶之類。
-
反轉鏈表手擼;
-
快排,給一串數組,把具體每次patition寫下,最終結果也寫45, 32, 41, 35, 38, 20, 50;
-
一個整數status, 判斷第K個比特位是否為比特1;
-
把遞歸實現的快排改成非遞歸,你知道非遞歸有什麽好處嗎;
-
舉例使用分治思想的算法;
四、網絡相關
-
講下請求頭細節?
-
Http和Https?Http1.0,1.1,2.0,講下長連接和短連接?Https是怎樣的?如果我篡改了公鑰呢?怎麽防止?
-
Get和Post,講下區別,要我模擬出抓包來。
-
詳細講下Cookie和Session,Token,OAuth2.0協議;
-
擁塞算法知道嗎?哪些,分別怎樣?
-
學過計算機網絡是吧?socket熟悉嗎?對它的讀寫緩沖區有理解嗎?怎麽的?那滑動窗口是怎樣的?為什麽這樣設計?
-
再聊下Http的Http basic authentication;
-
Https的過程;
五、框架相關
-
聊下Spring源碼,知道多少,都聊一下;
-
聊下Spring註解,@Autowire,@Resource,以及他們的解析過程;
-
聊一下架構,接入層架構,服務層架構。聊下技術棧,Spring Boot,Spring Cloud、Docker;
-
Spring ioc的具體優勢,和直接New一個對象有什麽區別;
-
Servlet生命周期,是否單例,為什麽是單例;
-
Spring Mvc初始化過程;
五、分布式相關
-
多少種RPC框架?
-
一致性哈希是幹嘛的?
-
搭建高並發高可用系統需要怎樣設計?考慮哪些東西,有多少說多少。
-
你對緩存有什麽理解?緩存是解決什麽問題?後端緩存有哪些,分別解決什麽問題?
-
聊一下分布式鎖;
-
你是怎麽設計系統緩存的,為什麽,什麽場景;
-
也來說下,削峰的多種實現,Redis?MQ?
-
為什麽用mq就能削峰?解決什麽問題?
六、設計題
-
有幾臺機器存儲著幾億淘寶搜索日誌,你只有一臺2g的電腦,怎麽選出搜索熱度最高的十個搜索關鍵詞;
-
如何設計算法壓縮一段URL;
-
有一個頁面能同時展示兩個廣告,現在有五個廣告,設計算法使五個廣告展示概率為1:2:3:4:5;
-
有25匹馬,五個賽道,用最少比賽次數將25匹馬排序;
七、其他相關
-
Tomcat緩存,聊下緩存的整體理解,知道多少種緩存;
-
解釋下Mucene原理,倒排索引,怎樣進行中文分詞,基於什麽進行分詞;
-
TopN的大數據量題;
-
你對接入層要思考什麽東西?遇到過哪些問題?搭建系統要考量哪些因素?
-
然後項目問題,優化問題;
-
熟悉maven是吧?我們來聊下Maven的源碼原理,Maven沖突的時候,怎麽選擇依賴包,我們怎麽查,我們遇到兩個不一樣的版本,我們應該如何去選擇,為什麽?
-
項目如何分組,性能優化小組應該做哪些;
-
我們來說下接入層的搭建,認知分析;
-
問下項目的系統構建,思考,為什麽這樣構建?
-
如何判斷一段代碼的好壞;
點擊圖片查看更多推薦內容
↓↓↓
一步步帶你了解ID發號器是什麽、為什麽、如何做!
面試必備:如何將一個長URL轉換為一個短URL?
深入了解一下Redis的內存模型!
怎樣參與到全世界優秀的開源項目中?
【面試題】2018年最全Java面試通關秘籍第五套!