若是你參加過一些大廠面試,確定會遇到一些開放性的問題:java
一、寫一段程序,讓其運行時的表現爲觸發了5次Young GC、3次Full GC、而後3次Young GC;node
二、若是一個Java進程忽然消失了,你會怎麼去排查這種問題?面試
三、給了一段Spring加載Bean的代碼片斷,闡述一下具體的執行流程?redis
是否是看上去很難,是否是和本身準備的「題庫」中的問題不同?不知道從何處下手?若是你有這種感受,那麼說明你的技術還須要繼續修煉。算法
是否是看上去很難,是否是和本身準備的「題庫」中的問題不同?不知道從何處下手?若是你有這種感受,那麼說明你的技術還須要繼續修煉,篇幅緣由,沒展現完,關注末尾數據庫
面對如此多的技術面試,怎麼樣才能說本身的技術已通過關了呢?設計模式
1、開場白數組
簡單的介紹一下本身的工做經歷與職責,在校或者工做中主要的工做內容,主要負責的內容;(你的信息一清二白的寫在簡歷上,這個主要爲了緩解面試者的壓力)緩存
介紹下本身最滿意的,有技術亮點的項目或平臺,重點介紹下本身負責那部分的技術細節;(主要考察應聘者對本身作過的事情是否有清晰的描述,判斷作的事情的複雜度)安全
2、Java多線程
線程池的原理,爲何要建立線程池?建立線程池的方式;
線程的生命週期,何時會出現僵死進程;
說說線程安全問題,什麼實現線程安全,如何實現線程安全;
建立線程池有哪幾個核心參數? 如何合理配置線程池的大小?
volatile、ThreadLocal的使用場景和原理;
ThreadLocal何時會出現OOM的狀況?爲何?
synchronized、volatile區別、synchronized鎖粒度、模擬死鎖場景、原子性與可見性;
3、JVM相關
JVM內存模型,GC機制和原理;
GC分哪兩種,Minor GC 和Full GC有什麼區別?何時會觸發Full GC?分別採用什麼算法?
JVM裏的有幾種classloader,爲何會有多種?
什麼是雙親委派機制?介紹一些運做過程,雙親委派模型的好處;
什麼狀況下咱們須要破壞雙親委派模型;
常見的JVM調優方法有哪些?能夠具體到調整哪一個參數,調成什麼值?
JVM虛擬機內存劃分、類加載器、垃圾收集算法、垃圾收集器、class文件結構是如何解析的;
4、Java擴展篇
紅黑樹的實現原理和應用場景;
NIO是什麼?適用於何種場景?
Java9比Java8改進了什麼;
HashMap內部的數據結構是什麼?底層是怎麼實現的?(還可能會延伸考察ConcurrentHashMap與HashMap、HashTable等,考察對技術細節的深刻了解程度);
說說反射的用途及實現,反射是否是很慢,咱們在項目中是否要避免使用反射;
說說自定義註解的場景及實現;
List 和 Map 區別,Arraylist 與 LinkedList 區別,ArrayList 與 Vector 區別;
5、Spring相關
Spring AOP的實現原理和場景?
Spring bean的做用域和生命週期;
Spring Boot比Spring作了哪些改進? Spring 5比Spring4作了哪些改進;
如何自定義一個Spring Boot Starter?
Spring IOC是什麼?優勢是什麼?
SpringMVC、動態代理、反射、AOP原理、事務隔離級別;
6、中間件篇
Dubbo完整的一次調用鏈路介紹;
Dubbo支持幾種負載均衡策略?
Dubbo Provider服務提供者要控制執行併發請求上限,具體怎麼作?
Dubbo啓動的時候支持幾種配置方式?
瞭解幾種消息中間件產品?各產品的優缺點介紹;
消息中間件如何保證消息的一致性和如何進行消息的重試機制?
Spring Cloud熔斷機制介紹;
Spring Cloud對比下Dubbo,什麼場景下該使用Spring Cloud?
7、數據庫篇
鎖機制介紹:行鎖、表鎖、排他鎖、共享鎖;
樂觀鎖的業務場景及實現方式;
事務介紹,分佈式事物的理解,常見的解決方案有哪些,什麼事兩階段提交、三階段提交;
MySQL記錄binlog的方式主要包括三種模式?每種模式的優缺點是什麼?
MySQL鎖,悲觀鎖、樂觀鎖、排它鎖、共享鎖、表級鎖、行級鎖;
分佈式事務的原理2階段提交,同步\異步\阻塞\非阻塞;
數據庫事務隔離級別,MySQL默認的隔離級別、Spring如何實現事務、JDBC如何實現事務、嵌套事務實現、分佈式事務實現;
SQL的整個解析、執行過程原理、SQL行轉列;
8、Redis
Redis爲何這麼快?redis採用多線程會有哪些問題?
Redis支持哪幾種數據結構;
Redis跳躍表的問題;
Redis單進程單線程的Redis如何可以高併發?
Redis如何使用Redis實現分佈式鎖?
Redis分佈式鎖操做的原子性,Redis內部是如何實現的?
9、其餘
看過哪些源代碼?而後會根據你說的源碼問一些細節的問題?
(這裏主要考察面試者是否對技術有鑽研的精神,仍是隻停留在表面,仍是背了幾道面經,這個對於不少有強迫症的面試官,若是你連源碼都沒看過,基本上是會pass掉的,好比我也是這樣的!)
JVM
線程
JVM內存區域
JVM運行時內存
垃圾回收與算法
JAVA 四中引用類型
GC分代收集算法 VS 分區收集算法
GC垃圾收集器
JAVA IO/NIO
JVM 類加載機制
因爲篇幅限制小編,細節內容實在太多啦,因此只把部分知識點截圖出來粗略的介紹,每一個小節點裏面都有更細化的內容!
java架構資料免費領取(面試題、視頻、進階路線)shimo.im
JAVA集合
接口繼承關係和實現
List
ArrayList(數組)
Vector(數組實現、線程同步)
LinkList(鏈表)
Set
HashSet(Hash表)
TreeSet(二叉樹)
JAVA多線程併發
JAVA併發知識庫
JAVA線程實現/建立方式
4種線程池
線程生命週期(狀態)
終止線程4種方式
sleep與wait 區別
start與run區別
JAVA後臺線程
JAVA鎖
線程基本方法4.1.11. 線程上下文切換
同步鎖與死鎖
線程池原理
JAVA阻塞隊列原理
CyclicBarrier、CountDownLatch、Semaphore的用法
volatile關鍵字的做用(變量可見性、禁止重排序)
如何在兩個線程之間共享數據
JAVA基礎
JAVA異常分類及處理
JAVA反射
JAVA註解
JAVA內部類
JAVA泛型
JAVA序列化(建立可複用的Java對象)
JAVA複製
Spring 原理
Spring 特色
Spring 核心組件
Spring 經常使用模塊
Spring 主要包
Spring 經常使用註解
Spring第三方結合
Spring IOC原理
Spring APO原理
Spring MVC原理
Spring Boot原理
JPA原理
Mybatis緩存
Tomcat架構
微服務
服務註冊發現
API 網關
配置中心
事件調度(kafka)
服務跟蹤(starter-sleuth)
服務熔斷(Hystrix)
Hystrix斷路器機制
API管理
Netty 與RPC
Netty 原理
Netty 高性能
Netty RPC實現
關鍵技術
核心流程
消息編解碼
通信過程
RMI實現方式
分佈式緩存
緩存雪崩
緩存穿透
緩存預熱
緩存更新
緩存降級
網絡
網絡7層架構
TCP/IP原理
TCP三次握手/四次揮手
HTTP原理
CDN 原理
分發服務系統
負載均衡系統
管理系統
日誌
Slf4j
Log4j
LogBack
Logback優勢
ELK
Zookeeper
Zookeeper概念
Zookeeper角色
Zookeeper工做原理(原子廣播)
Znode有四種形式的目錄節點
Kafka
Kafka概念
Kafka數據存儲設計
partition的數據文件(offset,MessageSize,data)
數據文件分段segment(順序讀寫、分段命令、二分查找)
數據文件索引(分段索引、稀疏存儲)
生產者設計
負載均衡(partition會均衡分佈到不一樣broker上)
批量發送
壓縮(GZIP或Snappy)
消費者設計
RabbitMQ
RabbitMQ概念
RabbitMQ架構
Exchange 類型
Hbase
Hbase概念
列式存儲
Hbase核心概念
Hbase核心架構
Hbase的寫邏輯
HBase vs Cassandra
MongoDB
MongoDB概念
MongoDB特色
Cassandra
Cassandra概念
數據模型
Cassandra一致Hash和虛擬節點
Gossip協議
數據複製
數據寫請求和協調者
數據讀請求和後臺修復
數據存儲(CommitLog、MemTable、SSTable)
二級索引(對要索引的value摘要,生成RowKey)
數據讀寫
設計模式
設計原則
工廠方法模式
抽象工廠模式
單例模式
建造者模式
原型模式
適配器模式
裝飾器模式
代理模式
外觀模式
橋接模式
組合模式
享元模式
策略模式
模板方法模式
觀察者模式
迭代子模式
責任鏈模式
命令模式
備忘錄模式
負載均衡
四層負載均衡 vs 七層負載均衡
負載均衡算法/策略
LVS
Keepalive
Nginx反向代理負載均衡
HAProxy
數據庫
存儲引擎
索引
數據庫三範式
數據庫是事務
存儲過程(特定功能的SQL 語句集)
觸發器(一段能自動執行的程序)
數據庫併發策略
數據庫鎖
基於Redis分佈式鎖
分區分表
兩階段提交協議
三階段提交協議
柔性事務
CAP
一致性算法
Paxos
Zab
Raft
NWR
Gossip
一致性Hash
一致性Hash特性
一致性Hash原理
JAVA算法
二分查找
冒泡排序算法
插入排序算法
快速排序算法
希爾排序算法
歸併排序算法
桶排序算法
基數排序算法
剪枝算法
回溯算法
最短路徑算法
最大子數組算法
最長公共子序算法
最小生成樹算法
數據結構
棧(stack)
隊列(queue)
鏈表(Link)
散列表(Hash Table)
排序二叉樹
紅黑樹
B-TREE
位圖
答案,關注公衆號下面二維碼,便可