知乎高贊丨面試清單(Java崗):JVM+數據庫+算法+Spring+中間件

“金九銀十”的秋招熱潮已經過去大半了,經過9月10月這兩個月的秋招奮戰,終於成功拿下了一些大廠的offer。小編經過這麼多次的面試,這兩天整理了一份面試清單分享給大家,希望能給大家一點幫助(java方向),覺得有幫助的同學可以轉發點個關注哦~~

文末會有答案!!!

01 JAVA基礎

1.1 java知識點

Hashmap 源碼級掌握,擴容,紅黑樹,最小樹化容量,hash衝突解決,有些面試官會提出發自靈魂的審問,比如為什麼是紅黑樹,別的樹不可以嗎;為什麼8的時候樹化,4不可以嗎,等等concureentHashMap,段鎖,如何分段,和hashmap在hash上的區別,性能,等等HashTable ,同步鎖,這塊可能會問你synchronized關鍵字 1.6之後提升了什麼,怎麼提升的這些ArrayList 優勢,擴容,什麼時候用LinkedList 優勢,什麼時候用,和arraylist的區別 等等基本類型和包裝類型的區別,涉及自動裝箱和拆箱,怎麼做的,原理String ,StringBuffer,StringBuilder哪個是安全的字符串編碼的區別,被問到過,我覺得比較容易被忽視的一個點什麼是泛型,怎麼用泛型static能不能修飾threadLocal,為什麼,這道題我當時一聽到其實挺懵逼的Comparable和Comparator接口是幹什麼的,其區別多態的原理是什麼,感覺這個很容易被問到接口和抽象類,面試官問我是怎麼理解的,我說接口對應功能,抽象類對應屬性,然後面試官給我說了他的看法,說抽象類更偏向於一種模板~ 然後又交流了一下各自的想法如何通過反射和設置對象私有字段的值快速失敗(fail-fast)和安全失敗(fail-safe)的區別是什麼synchronized 的實現原理以及鎖優化?volatile 的實現原理?Java 的信號燈?synchronized 在靜態方法和普通方法的區別?怎麼實現所有線程在等待某個事件的發生才會去執行?CAS?CAS 有什麼缺陷,如何解決?synchronized 和 lock 有什麼區別?Hashtable 是怎麼加鎖的 ?List,Map,Set接口在取元素師,各有什麼特點如何線程安全的實現一個計數器生產者消費者模式,要求手寫過代碼,還是要知道的單例模式,餓漢式,懶漢式,線程安全的做法,兩次判斷instance是否為空,每次判斷的作用是什麼。線程池,這個還是很重要的,在生產中用的挺多,四個線程池類型,其參數,參數的理解很重要,corepoolSize怎麼設置,maxpoolsize怎麼設置,keep-alive各種的,和美團面試官探討過阻塞隊列在生產中的設置,他說他一般設置為0,防止用戶阻塞cyclicbarrier 和countdownlatch的區別,個人理解 賽馬和點火箭線程回調,這塊 被問過讓我設計一個RPC,怎麼實現,其實用到了回調這塊的東西sleep 和yeild方法有什麼區別volatile關鍵字,可見性。樂觀鎖和悲觀鎖的使用場景悲觀鎖的常見實現方式:lock synchronized retreentlock樂觀鎖:CAS MVCC讀寫鎖的實現方式,16位int的前八位和後八位分別作為讀鎖和寫鎖的標誌位死鎖的條件,怎麼解除死鎖,怎麼觀測死鎖。希望大家能夠好好看一下反射的原理,怎麼確定類,怎麼調方法RPC框架,同步異步,響應時間,這些都被問到過,還讓設計過同步,異步,阻塞,非阻塞 在深信服的面試中遇到過,最好再找一些應用場景加以理解

1.2 JVM

內存模型以及分區,需要詳細到每個區放什麼。堆裡面的分區:Eden,survival (from+ to),老年代,各自的特點。對象創建方法,對象的內存分配,對象的訪問定位。GC 的兩種判定方法GC 的三種收集方法:標記清除、標記整理、複製算法的原理與特點,分別用在什麼地方,如果讓你優化收集方法,有什麼思路?GC 收集器有哪些?CMS 收集器與 G1 收集器的特點Minor GC 與 Full GC 分別在什麼時候發生?JVM 內存分哪幾個區,每個區的作用是什麼?如和判斷一個對象是否存活?(或者 GC 對象的判定方法)java 中垃圾收集的方法有哪些?類加載器雙親委派模型機制?java 內存模型,java 類加載過程?什麼是類加載器,類加載器有哪些?簡述 java 內存分配與回收策率以及 Minor GC 和Major GC

02 數據庫

2.1 MySQL

事務四大特性(ACID)原子性、一致性、隔離性、持久性?事務的併發?事務隔離級別,每個級別會引發什麼問題,MySQL默認是哪個級別?MySQL常見的三種存儲引擎(InnoDB、MyISAM、MEMORY)的區別?MySQL的MyISAM與InnoDB兩種存儲引擎在,事務、鎖級別,各自的適用場景?查詢語句不同元素(where、jion、limit、group by、having等等)執行先後順序索引為什麼要用B+樹,B+樹和B-樹的區別是什麼mysql的默認事務級別,一共有哪些事務級別mysql的一些語句,這些肯定需要掌握的mysql鎖,行鎖,表鎖 ,什麼時候發生鎖,怎麼鎖,原理數據庫優化,最左原則啊,水平分表,垂直分表什麼是臨時表,臨時表什麼時候刪除?MySQL B+Tree索引和Hash索引的區別?sql查詢語句確定創建哪種類型的索引?如何優化查詢?聚集索引和非聚集索引區別?有哪些鎖(樂觀鎖悲觀鎖),select 時怎麼加排它鎖?非關係型數據庫和關係型數據庫區別,優勢比較?數據庫三範式,根據某個場景設計數據表?數據庫的讀寫分離、主從複製,主從複製分析的 7 個問題?使用explain優化sql和索引?MySQL慢查詢怎麼解決?什麼是 內連接、外連接、交叉連接、笛卡爾積等?mysql都有什麼鎖,死鎖判定原理和具體場景,死鎖怎麼解決?varchar和char的使用場景?mysql 高併發環境解決方案?數據庫崩潰時事務的恢復機制(REDO日誌和UNDO日誌)?

03 Spring相關

spring的兩大特性- ioc aop,實現原理如果存在A依賴B,B依賴A,那麼是怎麼加到IOC中去的beanFactory的理解,怎麼加載beanFactoryBean的理解基於註解的形式,是怎麼實現的, 你知道其原理嗎,說一下依賴衝突,有碰到過嗎,你是怎麼解決的~bean的生命週期spring中的自動裝配方式BeanFactory 和 FactoryBeanSpring IOC 的理解,其初始化過程?BeanFactory 和 ApplicationContext?Spring Bean 的生命週期,如何被管理的?Spring Bean 的加載過程是怎樣的?如果要你實現Spring AOP,請問怎麼實現?如果要你實現Spring IOC,你會注意哪些問題?Spring 是如何管理事務的,事務管理機制?Spring 的不同事務傳播行為有哪些,幹什麼用的?Spring 中用到了那些設計模式?Spring MVC 的工作原理?Spring 循環注入的原理?Spring 如何保證 Controller 併發的安全?你一般是怎麼對mvc項目進行分層的dispatch-servlet的工作原理為什麼有了springmvc還要在項目中使用spring?springmvc的運行機制,dispatch -》 hanldermapping-—》handler -》handlerAdapter-》執行handler-》modelandview -》 返回mv -》 視圖解析器-》返回view -》 渲染響應怎麼防止依賴注入怎麼讓mapper 和xml對應如何自動包裝對象和spring相比,做了什麼改變starter你知道哪些如何部署springmvc項目 以及如何部署springboot項目springboot的插件,你使用過哪些

04 中間件

4.1 redis

Redis用過哪些數據數據,以及Redis底層怎麼實現Redis緩存穿透,緩存雪崩如何使用Redis來實現分佈式鎖Redis的併發競爭問題如何解決Redis持久化的幾種方式,優缺點是什麼,怎麼實現的Redis的緩存失效策略Redis集群,高可用,原理Redis緩存分片,Redis的數據淘汰策略為什麼選擇redis,有什麼好處,基於內存,抗壓redis集群怎麼進行數據分配,hash槽redis的主從複製是怎麼實現的redis的數據結構 最常問 hash是什麼, sorted set怎麼實現的因為項目的原因,問我redis是怎麼保證高可用的,主從和集群怎麼加在一起redis 和memcache的區別redis 分佈式鎖的實現原理 setNX 啥的redis模擬session,除了redis你還考慮過別的嗎redis的緩存擊穿,怎麼處理這個問題redis是基於內存的,那麼它有持久化嗎,aof rdbaof和rdb的優缺點,你在項目中使用的哪一個

4.2 MQ

為什麼選擇rabbitMQ, 社區活躍,高併發別的MQ也要了解,比如RocketMQ(阿里的,java開發,再次開發,併發高,分佈式,出錯少)ActiveMQ, kafkatopic 和 blockMQ的作用,同步轉異步,消除峰值如何保證數據一致性,即原子性,ack消息隊列在項目中的應用

4.3 nginx

怎麼配置負載均衡怎麼限流怎麼使用nginx緩存為什麼使用nginx,有別的替代品嗎請解釋 x Nginx 如何處理 P HTTP 請求在 x Nginx 中,如何使用未定義的服務器名稱來阻止處理請求? ?使用“ 反向代理服務器 ” 的優點是什麼?x Nginx 服務器上的 r Master 和 和 r Worker 進程分別是什麼?nginx的壓力測試,你測試過嗎,能抗住多少壓力你如何通過不同於 0 80 的端口開啟 Nginx?是否有可能將 x Nginx 的錯誤替換為 2 502 錯誤、 503s stub_status 和 和 r sub_filter 指令的作用是什麼? ?

4.5 dubbo

原理,怎麼用和erueka有什麼區別為什麼要用dubbo,不用行不行?跨域請求的一些知識點Dubbo 支持哪些協議,每種協議的應用場景,優缺點?Dubbo 超時時間怎樣設置?Dubbo 集群的負載均衡有哪些策略Dubbo 的主要應用場景?Dubbo 服務註冊與發現的流程?Dubbo 中 中 zookeeper 做註冊中心,如果註冊中心集群都掛掉,發佈者和訂閱者之間還能通信麼?dubbo 服務負載均衡策略?

05 其他插件

5.1 shiro

怎麼做權限控制為什麼使用shiro,你直接使用aop不也是一樣的嗎,shiro還有標籤~各種扯shiro的兩個最重要的函數認證和授權是怎麼做的

5.2 docker

和vmware的區別你一般是怎麼部署的 IDEA,直接把項目部署到docker並打包到雲服務器docker的好處,小,快

06 Linux

常見的命令sed 和 awk 感覺linux必考。。linux的使用場景,你什麼時候會用linux -- 》 佈置服務器怎麼查看進程和殺死進程打印一個文件夾中的所有文件float在計算機中是怎麼存儲的,當時被問到的時候,我也在問自己,怎麼存的~~~ 佛了線程和進程的區別線程的通信方式,進程的通信方式系統線程的數量上限是多少頁式存儲的概念內存碎片,你有了解過嗎,有想過解決方案嗎~

07 算法

7.1 排序算法

八大排序算法真的是面試寵兒最常考 快速排序 和歸併排序哪些排序算法是穩定的 哪些是不穩定的堆排 也應該掌握

7.2 樹

根據遍歷結果恢復樹,遞歸二叉搜索樹第k大樹的和為k的路徑層次遍歷根據層次遍歷和後序遍歷恢復樹鏡像樹樹的深度是不是平衡二叉樹

7.3 鏈表

反轉鏈表鏈表環的入口交叉鏈表的交點複雜鏈表的複製二叉搜索樹變成雙向鏈表

7.4 回溯算法

走迷宮遊戲通關

7.5 遞推算法

走臺階斷鋼筋

7.6 揹包問題

裝最多的東西

7.7 貪心算法

覆蓋問題時間問題

08 設計模式

面試中設計模式其實也是挺重要的

Java 中什麼叫單例設計模式?請用 Java 寫出線程安全的單例模式在 Java 中,什麼叫觀察者設計模式(observer design pattern)使用工廠模式最主要的好處是什麼?在哪裡使用舉一個用 Java 實現的裝飾模式(decorator design pattern) ?它是作用於對象層次還是類層次?在 Java 中,什麼時候用重載,什麼時候用重寫?舉例說明什麼情況下會更傾向於使用抽象類而不是接口觀察者模式適配模式工廠模式...

總結

記住,面試最重要的事就是:刷題刷題刷題刷題,天天作死的刷~

以上就是我在回想面試過程所能想到的一些問題,可能不夠全面,供大家參考參考,並且上面我列出的這些題目都已整理出答案,全部都是PDF文檔,有需要的朋友可以按照這個方式進行獲取:

評論留言+轉發文章+關注我後私信回覆【面試】即可免費獲取

下面列舉整理資料的部分截圖

1.Java專題面試(Java,數據庫,Redis,中間件,框架,併發,分佈式,線程,微服務,Netty,Spring,設計模式等)

2.算法刷題

3.整理的一些java書籍資料(PDF)

.整理的一些java書籍資料(PDF)

重要的事情再說一遍,資料免費領取方式

評論留言+轉發文章+關注我後私信回覆【面試】即可免費獲取

免費領取:java架構專題+架構資料+大廠面試真題(含解析)+Redis+學習視頻+數據庫+學習書籍+學習思維導圖..

大廠面試真題(含解析)

再分享一下最新的大廠面試題+解析(百度,華為,騰訊,迅雷,網易,中興,北京中軟等)

百度,華為,騰訊,迅雷,網易,中興,北京中軟

總結的66個java面試知識點(含答案解析)

百度,華為,騰訊,迅雷,網易,中興,北京中軟

評論留言+轉發文章+關注我後私信回覆【面試】即可免費獲取