會這些Java工程師面試知識點,月薪至少3W
本文已收錄至公衆號:灰太狼學爪哇。(一個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各階段的學習、面試資料)