總結2021年最全180道Java崗面試題,Java大廠高頻面試題解析

代碼席爾瓦 2021-09-19 04:11:10 阅读数:158

最全 java java 解析

一面(個人感覺回答得還不錯)

1. 自我介紹
2. 說項目,項目問的非常深(本人提到之前做過的一篇關於FULL GC的問題定比特和優化的項目以及一個多並發的項目)

2.1 對於自己產於過項目的系統定比特是否清楚?
2.2 對於系統的各個模塊是否清楚?
2.3 每個接口的tps?
2.4 對於上下遊系統的依賴?
2.5 對於使用到的中間件、框架是否清楚?

3. 你覺得你做的項目中最有亮點的事情?
4. memcache redis同類中間的差异、優缺點?使用注意點有哪些?

memcache可以存儲的數據類型只有字符串類型,而redis可以存儲字符,list,sorted List,hash數據類型的數據;
memcache不支持數據持久化,redis支持RDB,AOF持久化;
memcache不支持集群,redis支持redis-cluster集群

5. redis分布式鎖說說

我提到了redis的setnx()方法,以及使用redis的KV結構,lock作為key,key對應的value使用map結構,map中使用請求requestId作為map的key,過期時間作為map的value,獲取鎖使用cas算法,比較時間是否過期來獲取鎖和釋放鎖

6. TCP,UDP
7. 多並發項目的並發量,有沒有壓測過,以及QPS,請求的消息量太大,使用自己創建的任務隊列會不會使內存爆?
8. Redis集群主從數據同步

主從集群實現了數據的讀寫分離,主服務器負責讀寫,偏重寫,從服務器只負責讀。主服務器啟動之後向從服務器發送日志文件,從服務器根據日志文件進行數據的更新,之後如果主服務器有寫操作,也會向從服務器發送相應的寫操作

9. Zookeeper實現選舉的原理

zk的選舉過程中其起始所有結點的狀態為looking,當某個結點的選票超過所有結點數的一半,該結點就會成為leader,結點狀態為leading,其他結點會成為followers,結點狀態為following。選舉的依據是(sid,zxid)數據,sid代錶結點的ID,zxid代錶事務ID,選舉過程中每個結點第一輪選舉會選舉自己作為leader,將(sid,zxid)發送給其他結點,其他結點收到數據(sid,zxid)與自身的數據做比較,如果zxid比自身zxid的要大,則直接選舉當前結點;如果小於,堅持選舉自己;如果zxid相等,比較sid哪個大,大者作為leader。

10. 說說分布式(我說的是Dubbo)
11. 數據庫事務,分布式數據一致性如何實現?

讀者可以了解一下ZAB協議,我大概就是圍著ZAB協議說的

12. SpringIOC,SpringAOP

我簡單說了說IOC,AOP的原理,以及原理依賴的模式

13. 數據庫事務的隔離級別

四大隔離界別:Uncommitted-read Commited-read Repeated-read Serializable分別針對數據庫髒讀,不可重複讀,虛讀問題

14. 談談RPC

RPC遠程調用,說了說原理,使用到的組件,以及RPC主要的任務:序列化,傳輸數據,方法調用(方法對應的ID)

15. 算法題:筆試題-最短路徑問題(這道題是通過的)
某物流派送員p,需要給a、b、c、d4個快遞點派送包裹,請問派送員需要選擇什麼的路線,才能完成最短路程的派送。假設如圖派送員的起點坐標(0,0),派送路線只能沿著圖中的方格邊行駛,每個小格都是正方形,且邊長為1,如p到d的距離就是4。隨機輸入n個派送點坐標,求輸出最短派送路線值(從起點開始完成n個點派送並回到起始點的距離)。

我的做法是使用排列算法,將所有的情况排列出來,計算最短路徑

二面(個人感覺回答的特別垃圾,六道問題回答了兩道)

1. 自我介紹
2. 懟項目,各個角度刁難
3. FULL GC問題排查工具

我做項目時其實沒有使用什麼工具,就是用Linux命令TOP,TOP交互命令 1,H;jsatck,jstat以及JVM的相關參數和JVM日志的查看

4. 從事開發遇到最具有難度的問題
5. Spring事務,嵌套事務

這道題其實我是被問懵了,我回答得相當不好,一直回答事務隔離那一塊,面試完我總結了一下有關Spring事務相關知識點

6. 面向接口編程的好處是什麼

問的問題太抽象,我回答不好,面試官說不够完善

7. 數據庫兩個insert同時操作同一張錶,第一個線程操作一半,問第二個線程會發生什麼?

我回答的稀巴爛,下來查了一下,大概就是說這裏涉及到的鎖是間歇鎖,讀者可以看看相關知識

8. 說說死鎖

舉個例子,兩個線程1和2,兩個鎖a和b,線程1拿到a鎖後申請要b鎖,而同時線程2已經拿到b鎖,要申請a鎖,兩個線程之間陷入僵持狀態

Java核心架構進階知識點

 CodeChina開源項目:【一線大廠Java面試題解析+核心總結學習筆記+最新講解視頻】

面試成功其實都是必然發生的事情,因為在此之前我做足了充分的准備工作,不單單是純粹的刷題,更多的還會去刷一些Java核心架構進階知識點,比如:JVM、高並發、多線程、緩存、Spring相關、分布式、微服務、RPC、網絡、設計模式、MQ、Redis、MySQL、設計模式、負載均衡、算法、數據結構、kafka、ZK、集群等。而這些也全被整理濃縮到了一份pdf——《Java核心架構進階知識點整理》,全部都是精華中的精華,本著共贏的心態,好東西自然也是要分享的

總結2021年最全180道Java崗面試題,Java大廠高頻面試題解析_程序員

總結2021年最全180道Java崗面試題,Java大廠高頻面試題解析_程序員_02

總結2021年最全180道Java崗面試題,Java大廠高頻面試題解析_後端_03

內容頗多,篇幅卻有限,這就不在過多的介紹了,大家可根據以上截圖自行腦補

版权声明:本文为[代碼席爾瓦]所创,转载请带上原文链接,感谢。 https://gsmany.com/2021/09/20210919041109780c.html