本文已收錄至公眾號:灰太狼學爪哇。(一個java程序員都在關注的公眾號)
花了一下午擼了這份完整的java工程師知識(面試)清單,很負責任的說,掌握了這些知識點秒殺一切java面試,迎娶白富美走上人生巔峰是遲早的事。
整理這些知識點的目的是,第一,幫助自己梳理下我們需要掌握的知識點;第二,發現自己的不足,有針對性查缺補漏;第三,明確了自己接下來公眾號分享內容的方向。
接下來公眾號的分享我會根據小伙伴的留言或者隨機選擇下面專題中的某個問題,采用模擬面試的方式,隨着面試官的層層逼問,用近乎完美的答案吊打面試官,歡迎大家有所期待。
基礎
javaSE
- 多態
- 接口和抽象類
- 序列化
- 集合
- 代理(動態代理、靜態代理)
- 反射
- 設計模式
- IO
javaWeb
- cookie和session
- servet知識
- tomcat知識
JVM
- java類加載機制
- 雙親委派模型
- 常用的GC算法
- 常用垃圾收集器及其原理
- JVM內存模型
- 常見JVM內存分析工具及分析方法
- CUP到了100%怎么排查
- JDK1.7和JDK1.8區別
- JDK1.8新特性
- 常用JVM調優參數
- 判斷對象是否存活算法
- 引用的四種級別
- finalize()方法
- 碰到過什么樣的JVM線上問題,怎么排查的(最喜歡問的)
網絡編程
- tcp和udp
- tcp的三次握手和四次揮手
- AIO、BIO和NIO
- 描述一個請求完整的執行過程(最常問)
- http和https
互聯網工具
- git
- maven
- linux
並發專題
JMM內存模型
- 線程和程序,並行和並發
- volatile
- 指令重排序,原子性,可見性
並發同步處理
- synchronized內置鎖實現原理
- AQS原理
- CAS算法樂觀鎖
- atomic原子類
- threadLocal類
- 各種鎖(悲觀鎖、樂觀鎖、可重入鎖、公平鎖、非公平鎖等)
- ReentrantLock/ReentrantReadWriteLock/ReentrantWriteLock詳解
- Condition條件隊列、同步隊列
JUC並發包
- CountDownlatch詳解
- Semaphore詳解
- CyclicBarrier詳解
- 阻塞隊列(ArrayBlockingQueue、CurrentLinkedQueue、DelayQueue、PriorityBlockingQueue)
- ForkJoin框架
- 線程池詳解
- HashMap和ConcurrentHashMap詳解
- ArrayList、LinkedList、CopyOnWriteArrayList詳解
- Set、CopyOnWriteArraySet詳解
分布式專題
Redis緩存
- 什么是redis?
- 為什么要用redis?使用redis的好處
- 怎么用redis
- redis五種數據結構以及使用場景
- 使用redis會有哪些問題?以及怎么解決
- redis集群的搭建和原理
- redis五種數據結構底層實現是怎樣的
RocketMq(RabbitMq、kafka)消息隊列
- RocketMq、RabbitMq和kafka三者有什么不同?優缺點以及使用場景
- RocketMq是什么?
- RocketMq使用場景?
- RocketMq消息發送原理
- RocketMq消息丟失怎么辦?
- RocketMq集群同步機制
- RocketMq事務原理
Zookeeper
- 什么是zookeeper?
- 為什么要使用zookeeper?(優缺點)
- zookeeper使用場景
- zookeeper原理
Dubbo
- dubbo是什么?
- 為什么要使用dubbo?
- dubbo使用場景
- dubbo的rpc調用和http調用的區別,有什么優點
- dubbo原理
- 使用dubbo有沒有碰到什么問題?怎么解決?(如:dubbo重試)
- dubbo怎么做到高可用
- dubbo注冊中心的服務發現
- dubbo源碼分析
netty
- 為什么使用netty
- 內部實現原理
- netty我還沒用過,后面再總結
mysql分庫分表
- 什么是分庫分表
- 分庫分表應用場景
- 有什么優缺點
- 分庫分表規則(算法),為什么考慮設計這樣的規則,有沒有可替代的其他規則
- 如何做到從一個單庫應用平滑過渡到分庫分表的應用
- 如果做到分庫分表的數據,按條件分頁查詢
框架源碼專題
spring源碼
- spring IOC 容器設計原理
- spring的bean的生命周期
- spring Context的裝載過程源碼分析
- FactoryBean和BeanFactory區別
- AOP注解編程
- AOP源碼分析
- spring事務控制與源碼分析
- spring攔截器
springMVC源碼
- MVC設計思想
- springMVC原理(請求過程)
- springMVC組成的體系結構(映射器、執行器、視圖解析器、異常捕捉等)
- springMVC中的常用注解
springboot
- springboot原理(啟動流程)
- springboot優缺點,使用它有什么好處
- springboot常用注解
mybatis源碼
- 使用mybatis解決了什么問題?有什么好處
- mybatis原理
- 初始化過程
- 一條sql語句執行過程
- Configuration、Mapper、SqlSession、Excutor源碼分析
- mybatis的一級緩存和二級緩存
- 如果讓你手寫一套mybatis,你會怎么設計(面試被問過)
數據結構和算法
數據結構
- 數組
- 鏈表
- 跳躍表
- 堆棧
- 隊列
- 各種樹
- 矩陣
算法
- 常用排序算法以及時間、空間復雜度
- 《劍指offer》
- 《LeetCode》
- 常見top K問題
數據庫專題
mysql
- 數據庫設計三范式
- 事務(特性和隔離級別)
- MVCC多版本並發控制
- 事務並發問題
- 事務日志(binlog、redo log、undo log)
- 索引數據結構類型
- 索引分類(聚簇索引和非聚簇索引)
- mysam和InnoDb區別
- 架構原理(一條SQL的執行過程)
- SQL調優
- mysql高可用(MMM、MHA、PXC)
ElasticSearch
- es集群原理
- 一條查詢請求的完整過程
- es的優缺點
- es應用場景
- 滾動查詢
- es的倒排索引原理
- 怎么保證es和mysql的數據一致性
MongoDB
- mongoDB的特性
- mongoDB的使用場景
- mongoDB的優缺點
- 使用過程中有沒有碰到什么問題
項目
常用項目的設計
- 登錄注冊
- 單點登錄
- 短鏈接
描述自己項目
- 你在這個項目中參與了哪些部分?
- 你是怎么設計的?
- 為什么這么設計?
- 有沒有其他方案替代?
- 用到了什么技術?為什么要用這個技術?有沒有可替代的?
- 開發過程中有沒有碰到什么(沒考慮到的)難點?你是怎么解決的
- 還能不能優化?
- 你有什么收獲?
- 讓你來做跟別人來做,你的優勢在哪?(這個有點扯淡,但是有些面試官還是會問)
最后
有些人花了三五年就能掌握這些知識點,成功面上高薪架構師,
有些人花了十多年卻只知道些皮毛,每天做着CRUD的工作。
相信點贊關注我的都是第一種 _
我是灰太狼,一個95后自我精進的java程序員。個人運營的公眾號:灰太狼學爪哇。你想知道的都在這里。(關注免費領取100G各階段的學習、面試資料)