本篇筆記是我五年來的工作學習面試經驗&記錄,希望對大家有一些幫助
一、Java基礎
Object類的所有方法:getClass hashCode equals clone toString notify notifyAll wait finalize
八種基本數據類型&取值範圍
自動拆裝箱&包裝類型的緩存機制
ThreadLocal 理解String&不可變性 StringBuffer StringBuilder源碼
ArrayList LinkedList HashMap(重點,可以花一天時間徹底掌握) LinkedHashMap TreeMap HashSet LinkedHashSet TreeSet源碼
異常體系結構
Java8:理解函數式編程 流式操作 CompletableFuture
二、併發編程(必考,高併發處理的必要手段,對於juc以及線程模型的演進過程的掌握非常重要)
理解併發與並行
線程池的原理:理解每個參數
Thread Runnable Callable
AQS(重要:常常會配合synchronized來說) Condition
Lock:ReentrantLock ReentrantReadWriteLock
Semaphore CountDownLatch CyclicBarrier
各種Atomic
ConcurrentHashMap BlockingQueue CopyOnWriteArrayList
Executors
線程的狀態轉換:wait sleep notify notifyAll join park
停止線程的方法
線程模型:理解BIO、NIO(重點)、AIO、瞭解netty
併發包就那些東西,掌握AQS之後其他的很快就打通了,所以不用
三、jvm(《深入理解java虛擬機》每年都至少看一遍,每次都會有新的理解)
jvm內存結構
常用調優參數
gc算法
gc的工具:CMS&G1重點&ZGC
java內存模型:
可見性、原子性、順序性、happens-before、內存屏障、volatile、final
synchronized(對象頭):偏向鎖->輕量級鎖->重量級鎖、monitor、鎖優化、鎖消除、鎖粗化、自旋鎖、可重入鎖
常用工具以及命令
類加載過程
對象創建過程
fullGC的排查思路
工具:jps, jstack, jmap、jstat, jconsole, jinfo, jhat, javap, Arthas
四、設計模式
創建型:單例模式、抽象工廠模式、建造者模式、工廠模式、原型模式。
結構型模式:適配器模式、橋接模式、裝飾模式、組合模式、外觀模式、享元模式、代理模式。
行爲型模式:模版方法模式、命令模式、迭代器模式、觀察者模式、中介者模式、備忘錄模式、解釋器模式(Interpreter模式)、狀態模式、策略模式、職責鏈模式(責任鏈模式)、訪問者模式。
五、mysql(下面列出來的全是重點)
常用sql以及內置函數
索引
hash索引
b+樹的索引
聚集索引&非聚集索引
回表
聯合索引:最左前綴&覆蓋索引&索引下沉
事務&隔離級別&實現原理:readview undolog redolog mvcc
鎖的使用&鎖算法&行鎖&表鎖&樂觀鎖&悲觀鎖
連接查詢的原理(算法)
binlog&使用場景
分庫分表:垂直&水平
工具:explain
六、redis(《redis的設計與實現》看完這本書就行了)
熟練五種類型對象&適用場景:字符串 列表 哈希 集合 有序集合
瞭解底層數據結構:SDS 鏈表 字典 跳躍表 整數集合 壓縮列表
淘汰策略
RDB&AOF
複製功能的實現
Sentinel&集羣的結構
發佈訂閱&事務
分佈式鎖
常見問題&解決方案:緩存擊穿,緩存穿透,緩存雪崩
七、web(感覺很少有人問了,應屆生可能問的多些)
三次握手與四次揮手
http/1.0 http/1.1 http/2之間的區別
http中 get和post區別
理解https加密過程
forward&redirect的區別
CSRF&XSS攻擊與防範
常見的web請求返回的狀態碼
cookie&session
Servlet&filter&listener
DNS
tomcat&nginx區別
八、spring(說實話問到我的不多,感覺掌握下面幾個足夠了)
IOC&DI&AOP
掌握常用註解
如何解決循環依賴
事務傳播機制
事務失效場景
springMVC的理解
springboot的理解
九、分佈式&高可用(平時多注意怎麼處理好程序可能遇到的極端情況,保證服務的高可用率)
zookeeper
理解使用:文件系統+監聽器
瞭解選舉算法&分佈式鎖的實現
mq(重要,有時候面試官直接一串mq連環炮就可以決定要不要一個人了)
設計架構
如何保證高可用
如何保證高吞吐
如何實現局部有序
重複消費的問題
延遲消息
作用:異步 解耦 削峯
kafka(之後會就kafka寫一個系列)
瞭解dubbo&spring cloud&Consul工作流程
限流&熔斷:Hystrix/Resilience4j(高可用的必須中間件)
鏈路追蹤(瞭解實現原理)
十、算法&數據結構(常刷leetcode)
棧、隊列、鏈表、數組、哈希表、樹、堆、圖
快排&二分&分治&遞歸&滑動窗口/雙指針&BFS&DFS
屬於基本素養了(畢竟據說微軟5輪面試全是算法,每輪一個小時)
十一、工具
git多分支協作流程
maven常用命令&生命週期
linux常用命令:tail grep awk sed等等
備註
個人難免有盲區,歡迎評論區指正&補充,會持續更新
種一棵樹,最好的時間是十年前,其次是現在,大家共勉
碼字實在辛苦,歡迎 關注 收藏
點贊 轉發
ps:大家感興趣的主題可以打在評論區,我這邊好安排節奏哈(畢竟10 10 5/6,精力有限)
本文分享自微信公衆號 - 豬哥Java(pig-python)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。