作為一名優秀的程式設計師,技術面試都是不可避免的一個環節,一般技術面試官都會透過自己的方式去考察程式設計師的技術功底與基礎理論知識。
如果你參加過一些大廠面試,肯定會遇到一些這樣的問題:
1、看你專案都用的框架,熟悉Spring、mybatis等框架實現原理嗎?
2、 看你上面有接觸過訊息中介軟體,負載均衡、RPC框架等技術嗎,MySQL分庫分表有做過嗎?
3、 分散式架構設計,Redis分散式鎖呢?
是不是看上去很難,是不是和自己準備的“題庫”中的問題不一樣?不知道從何處下手?如果你有這種感覺,那麼說明你的技術還需要繼續修煉。
面對如此多的技術面試,怎麼樣才能說自己的技術已經過關了呢?
只有問題沒有參考答案,但是,請允許我說但是,對於下面這些問題,我這裡還是有一份參考學習筆記文件和麵經試題解析的在文末分享,需要各位小夥伴下來逐一學習!
1、自我介紹,專案經驗(介紹下自己最滿意的,有技術亮點的專案或平臺,重點介紹下自己負責那部分的技術細節;這一塊主要考察應聘者對自己做過的事情是否有清晰的描述,判斷做的事情的複雜度)
2、JVM
垃圾回收演算法有幾種型別?他們對應的優缺點又是什麼?
類的載入過程是什麼?簡單描述一下每個步驟
JVM 預定義的類載入器有哪幾種?分別什麼作用?
什麼是雙親委派模式?有什麼作用?
什麼是記憶體溢位, 記憶體洩露? 他們的區別是什麼?
引起類載入操作的行為有哪些?
介紹一下 JVM 提供的常用工具
Full GC 、 Major GC 、Minor GC 之間區別?
什麼時候觸發 Full GC ?
3、Java併發
什麼是可重入鎖、樂觀鎖、悲觀鎖、公平鎖、非公平鎖、獨佔鎖、共享鎖?
講講ThreadLocal 的實現原理?
ThreadLocal 作為變數的執行緒隔離方式,其內部是如何做的?
說說InheritableThreadLocal 的實現原理?
併發包中鎖的實現底層(對AQS的理解)?
講講獨佔鎖 ReentrantLock 原理?
4、Java集合
HashSet 和 TreeSet 有什麼區別?
HashSet 的底層實現是什麼?
LinkedHashMap 的實現原理?
為什麼集合類沒有實現 Cloneable 和 Serializable 介面?
什麼是迭代器 (Iterator)?
Iterator 和 ListIterator 的區別是什麼?
5、Spring全家桶
Spring bean的生命週期能不能結合原始碼回答一下這個問題、或者結合一下bean的生命的意義來回答,就是Spring為什麼需要找個生命週期
Spring容器當中包含了哪些常用元件(至少說5個),作用是什麼,場景是什麼;比如BeanDefinition;再比如BeanDefinitionMap
Spring自動注入的原理是什麼?能不能從原始碼來說明一下這個問題;我們常常說的自動注入,到底怎麼注入的?有什麼坑?怎麼讓你一個屬性不自動注入
Spring原始碼當中如何來搞定迴圈依賴的?Spring支援迴圈依賴?生命情況不支援?支援的原理是什麼?能不能從原始碼來說明一下?
如何來二次擴充套件Spring,比如自定義一個實現自動注入的註解;不使用@Autowried,自己如何開發一個@XXX來完成自動注入?
mybatis原始碼當中利用了Spirng的哪些擴充套件?mybatis擴充套件Spring之後有哪些問題是無法解決的?比如二級快取怎麼解決
eureka原始碼當中如何擴充套件的Spring?比如怎麼動態插拔eureka的功能,利用了Spring的那個技術點,或者從原始碼說一下
6、Redis
Redis 持久化機制有哪些? 區別是什麼?優缺點是什麼?
Redis支援的資料型別
為什麼 Redis 需要把所有資料放到記憶體中?
Redis 是單執行緒的嗎?
Redis 的快取失效策略有哪幾種?
什麼是快取命中率?提高快取命中率的方法有哪些?
Redis全域性命令及資料庫管理
Redis設計訂單應用場景
Redis快取雪崩講講看?
什麼是快取穿透?
Redis重啟時載入AOF與RDB的順序
7、中介軟體
Dubbo完整的一次呼叫鏈路介紹;
Dubbo支援幾種負載均衡策略?
Dubbo Provider服務提供者要控制執行併發請求上限,具體怎麼做?
Dubbo啟動的時候支援幾種配置方式?
瞭解幾種訊息中介軟體產品?各產品的優缺點介紹;
訊息中介軟體如何保證訊息的一致性和如何進行訊息的重試機制?
Spring Cloud熔斷機制介紹;
Spring Cloud對比下Dubbo,什麼場景下該使用Spring Cloud?
8、分散式
訊息中介軟體如何解決訊息丟失問題
Dubbo的服務請求失敗怎麼處理
重連機制會不會造成錯誤
對分散式事務的理解
如何實現負載均衡,有哪些演算法可以實現?
Zookeeper的用途,選舉的原理是什麼?
資料的垂直拆分水平拆分。
zookeeper原理和適用場景
zookeeper watch機制
redis/zk節點宕機如何處理
分散式叢集下如何做到唯一序列號
如何做一個分散式鎖
用過哪些MQ,怎麼用的,和其他mq比較有什麼優缺點,MQ的連線是執行緒安全的嗎
MQ系統的資料如何保證不丟失
列舉出你能想到的資料庫分庫分表策略;分庫分表後,如何解決全表查詢的問題。
9、資料庫
MySQL InnoDB儲存的檔案結構
索引樹是如何維護的?
資料庫自增主鍵可能的問題
MySQL的幾種最佳化
mysql索引為什麼使用B+樹
資料庫鎖表的相關處理
索引失效場景
高併發下如何做到安全的修改同一行資料,樂觀鎖和悲觀鎖是什麼,INNODB的行級鎖有哪兩種,解釋其含義
資料庫會死鎖嗎,舉一個死鎖的例子,mysql怎麼解決死鎖
最後
其實一步一步走過來,不單單隻靠面試之前刷題那麼簡單,更多的還是平時的積累。小編整理出一篇Java進階架構師之路的核心知識,同時也是面試時面試官必問的知識點,篇章也是包括了很多知識點,其中包括了有基礎知識、Java集合、JVM、多執行緒併發、spring原理、微服務、Netty 與RPC 、Kafka、日記、設計模式、Java演算法、資料庫、Zookeeper、分散式快取、資料結構等等