金九銀十已經要到來,2019的接近尾聲,做爲一個開發人員,你是否面上了本身理想的公司,薪資達到心中理想的高度?web
面試:若是不許備充分的面試,徹底是浪費時間,更是對本身的不負責。面試
今天給你們分享下我整理的Java架構面試專題及答案,其中大部分都是大企業面試常問的面試題,能夠對照這查漏補缺,固然了,這裏所列的確定不可能覆蓋所有方式,不過也但願能對即將找工做的朋友起到一些幫助!redis
數據結構與算法,JVM內存結構、垃圾回收器、回收算法、GC、併發編程相關(多線程、線程池等)、NIO/BIO、性能優化、設計模式、Spring框架:分佈式相關:Redis緩存、一致Hash算法、分佈式存儲、負載均衡等,微服務以及Docker容器等。在這因爲文字不少,小編已將金九銀十的面試高頻考點都整理爲了一份PDFJava面經文檔,同時還會有對應的書籍pdf資料。(文末有資料獲取方式)算法
Java面經.pdf文檔資料數據庫
1、JVM與性能優化編程
描述一下 JVM 加載 Class 文件的原理機制?
什麼是類加載器?
類加載器有哪些?
什麼是tomcat類加載機制?
類加載器雙親委派模型機制?
Java 內存分配?
Java 堆的結構是什麼樣子的?
簡述各個版本內存區域的變化?
說說各個區域的做用?
Java 中會存在內存泄漏嗎,簡述一下?
Java 類加載過程?什麼是GC? 爲何要有 GC?
簡述一下Java 垃圾回收機制?
如何判斷一個對象是否存活?
垃圾回收的優勢和原理,並考慮 2 種回收機制?
基本原理是什麼?
深拷貝和淺拷貝?
什麼是分佈式垃圾回收(DGC)?
它是如何工做的?
在 Java 中,對象何時能夠被垃圾回收?
簡述Minor GC 和 Major GC?Java 中垃圾收集的方法有哪些?
講講你理解的性能評價及測試指標?
經常使用的性能優化方式有哪些?
說說分佈式緩存和一致性哈希?
什麼是GC調優?設計模式
對應學習資料:《深刻理解JVM虛擬機》.pdf文檔資料緩存
2、Redistomcat
redis數據結構有哪些?
Redis緩存穿透,緩存雪崩?
如何使用Redis來實現分佈式鎖?
Redis的併發競爭問題如何解決?
Redis持久化的幾種方式,優缺點是什麼,怎麼實現的?
Redis的緩存失效策略?
Redis集羣,高可用,原理?
Redis緩存分片?
Redis的數據淘汰策略?
redis隊列應用場景?
分佈式使用場景(儲存session)?安全
對應學習資料:《Redis實戰》.pdf文檔資料
3、網絡編程
TCP創建鏈接和斷開鏈接的過程?
HTTP協議的交互流程• HTTP和HTTPS的差別,SSL的交互流程?
TCP的滑動窗口協議有什麼用?
HTTP協議都有哪些方法?
Socket交互的基本流程?
講講tcp協議(建連過程,慢啓動,滑動窗口,七層模型)?
webservice協議(wsdl/soap格式,與restt辦議的區別)?
說說Netty線程模型,什麼是零拷貝?
TCP三次握手、四次揮手?
DNS解析過程
?TCP如何保證數據的可靠傳輸的?
4、設計模式與重構
說說幾個常見的設計模式(23種設計模式)?
設計一個工廠的包的時候會遵循哪些原則?
列舉一個使用了 Visitor/ Decorator模式的開源項目/庫?
如何實現一個單例?
代理模式(動態代理)?
單例模式(懶漢模式,惡漢模式,併發初始化如何解決, volatile與lock的使用)?
JDK源碼裏面都有些什麼讓你印象深入的設計模式使用,舉例看看?
對應學習資料:45種設計模式與六大原則.pdf文檔資料
5、分佈式
什麼是CAP定理?
說說CAP理論和BASE理論?
什麼是最終一致性?最終一致性實現方式?
什麼是一致性Hash?
講講分佈式事務?
如何實現分佈式鎖?
如何實現分佈式 Session?
如何保證消息的一致性?
負載均衡的理解?
正向代理和反向代理?
CDN實現原理?
怎麼提高系統的QPS和吞吐?
Dubbo的底層實現原理和機制?
描述一個服務從發佈到被消費的詳細過程?
分佈式系統怎麼作服務治理?
消息中間件如何解決消息丟失問題?
Dubbo的服務請求失敗怎麼處理?
對分佈式事務的理解?
如何實現負載均衡,有哪些算法能夠實現?
Zookeeper的用途,選舉的原理是什麼?
講講數據的垂直拆分水平拆分?
zookeeper原理和適用場景?
zookeeper watch機制?
redis/zk節點宕機如何處理?
分佈式集羣下如何作到惟一序列號?
用過哪些MQ,怎麼用的,和其餘mq比較有什麼優缺點,MQ的鏈接是線程安全的嗎?
MQ系統的數據如何保證不丟失?
列舉出能想到的數據庫分庫分表策略?
對應學習資料:《分佈式服務架構原理、設計與實戰》.pdf文檔資料
6、SpringBoot
什麼是 Spring Boot?
爲何要用 Spring Boot?
Spring Boot 的核心配置文件有哪幾個?它們的區別是什麼?
Spring Boot 的配置文件有哪幾種格式?它們有什麼區別
Spring Boot 的核心註解是哪一個?它主要由哪幾個註解組成的?
開啓 Spring Boot 特性有哪幾種方式?
Spring Boot 須要獨立的容器運行嗎?
運行 Spring Boot 有哪幾種方式?
Spring Boot 自動配置原理是什麼?
你如何瞭解 Spring Boot 中的 Starters?
如何在 Spring Boot 啓動的時候運行少許特定的代碼?
Spring Boot 有哪幾種讀取配置的方式?
Spring Boot 支持哪些日誌框架?推薦和默認的日誌框架是哪一個?
SpringBoot 實現熱部署有哪幾種方式?
你如何瞭解 Spring Boot 配置加載順序?
Spring Boot 能夠兼容老 Spring 項目嗎,如何作?
保護 Spring Boot 應用有哪些方法
Spring Boot 2.X 有什麼新特性?與 1.X 有什麼區別?
對應學習資料:《深刻實踐SpringBoot》.pdf
整理不易,以爲此文不錯的讀者朋友們能夠轉發分享一下,大家的點贊是我最大的動力,須要獲取上述資料的讀者朋友們能夠加一下企鵝羣:168170861,進羣便可獲取上訴全部對應學習資料,同時還有一些開源電子書送給你們。