持續(xù)更新中······
一、多線程
1.ThreadPoolExecutor
線程池實現(xiàn)原理、關(guān)鍵的方法的作用、常見的應(yīng)用場景
線程池中的線程的狀態(tài),線程池中添加任務(wù)的具體處理,線程池中沒有任務(wù)時線程是什么狀態(tài)
參考:http://www.importnew.com/19011.html
http://m.itdecent.cn/p/87bff5cc8d8c
2.ReentrantLock
可重入鎖的實現(xiàn)機制,如何加鎖、釋放鎖,如何做到可重入
CAS機制
如何實現(xiàn)互斥阻塞的,同關(guān)鍵字synchronized對比
嘗試編碼實現(xiàn)producer & consumer,關(guān)聯(lián)多個condition實現(xiàn)靈活地線程同步
ReentrantReadWriteLock的具體使用
3.synchronized
實現(xiàn)同步的原理,wait/notify/notifyall的使用
4.ThreadLocal
什么是ThreadLocal,具體應(yīng)用,使用ThreadLocal會有哪些風(fēng)險
為什么會發(fā)生內(nèi)存溢出,如何避免,為什么使用ThreadLocal的弱引用作為ThreadLocalMap的key
嘗試使用ThreadLocal實現(xiàn)簡單的數(shù)據(jù)庫連接池
5.CountDownLatch/CyclicBarrier
使用方法,哪一個是可以重用的
嘗試編寫demo
參考:http://ifeve.com/concurrency-cyclicbarrier/
6.Java鎖機制
鎖類型,可重入、共享鎖/排它鎖、樂觀鎖/悲觀鎖
自旋鎖,鎖粗化/鎖消除,偏向鎖/輕量級鎖/重量級鎖
參考:https://blog.csdn.net/nalanmingdian/article/details/77800355
7.volatile
volatile變量在內(nèi)存中的含義,jvm的具體機制是怎么樣的
8.Semaphore
通過構(gòu)造函數(shù)Semaphore(int , boolean)可以控制是否公平
如何使用,嘗試解決哲學(xué)家進餐問題
9.多線程基礎(chǔ)
callable和runnable,future
二、JVM
1.JVM內(nèi)存結(jié)構(gòu)
方法區(qū)/運行時常量池、程序計數(shù)器、Java虛擬機棧、本地方法棧、堆
2.JVM內(nèi)存模型
含義、volatile、final、synchronized
happen-before、重排序
參考:http://m.itdecent.cn/p/d3fda02d4cae
3.類加載機制
加載過程、雙親委托機制
class二進制數(shù)據(jù)加載->驗證->準備->解析->初始化->使用->卸載
類加載器
加載過程中如何保證一個類只被加載一次
參考:http://www.importnew.com/22228.html
http://www.cnblogs.com/paddix/p/5268559.html
http://www.hollischuang.com/archives/199
4.垃圾回收
gc算法
垃圾收集器
如何調(diào)優(yōu),jvm參數(shù)配置
命令使用jps、jstat、jmap、jstack
三、數(shù)據(jù)庫(MySQL)
1.MySQL查詢的完整過程
預(yù)編譯查詢、jdbc查詢過程描述
參考:https://www.cnblogs.com/micrari/p/7112781.html
2.表設(shè)計
字段設(shè)計
3.索引設(shè)計
B+樹實現(xiàn)原理、MySQL索引的種類、如何設(shè)計表的索引,有什么注意的地方
什么時候會用到索引,什么時候索引會失效
4.讀寫分離
怎么配置
5.分庫分表
常見的策略,如何考慮自適應(yīng)擴容,全局主鍵ID生成
拆分后怎么辦,程序怎么連接數(shù)據(jù)庫,跨庫join問題,跨庫事務(wù)問題
中間件的選擇
四、消息
流行的消息隊列Kafka、RabbitMQ、ActiveMQ
嘗試實現(xiàn)producer & consumer模型
五、緩存
1.分布式緩存設(shè)計和應(yīng)用
2.Redis
幾種數(shù)據(jù)類型、Redis集群
六、分布式
1.基本理論
CAP定理
BASE理論
兩階段提交
三階段提交
Paxos算法
2.Zookeeper
實現(xiàn)原理,選舉機制
具體應(yīng)用,實現(xiàn)分布式鎖
3.分布式數(shù)據(jù)一致性解決方案
使用消息隊列MQ·····
4.分布式鎖
redis
zookeeper
七、spring
1.spring框架
spring解決的問題,bean容器是怎么初始化的,bean的加載過程、生命周期
選擇使用Spring框架的原因(Spring框架為企業(yè)級開發(fā)帶來的好處有哪些)?
- 非侵入式:支持基于POJO的編程模式,不強制性的要求實現(xiàn)Spring框架中的接口或繼承Spring框架中的類。
- IoC容器:IoC容器幫助應(yīng)用程序管理對象以及對象之間的依賴關(guān)系,對象之間的依賴關(guān)系如果發(fā)生了改變只需要修改配置文件而不是修改代碼,因為代碼的修改可能意味著項目的重新構(gòu)建和完整的回歸測試。有了IoC容器,程序員再也不需要自己編寫工廠、單例,這一點特別符合Spring的精神”不要重復(fù)的發(fā)明輪子”。
- AOP(面向切面編程):將所有的橫切關(guān)注功能封裝到切面(aspect)中,通過配置的方式將橫切關(guān)注功能動態(tài)添加到目標代碼上,進一步實現(xiàn)了業(yè)務(wù)邏輯和系統(tǒng)服務(wù)之間的分離。另一方面,有了AOP程序員可以省去很多自己寫代理類的工作。
- MVC:Spring的MVC框架是非常優(yōu)秀的,從各個方面都可以甩Struts 2幾條街,為Web表示層提供了更好的解決方案。
- 事務(wù)管理:Spring以寬廣的胸懷接納多種持久層技術(shù),并且為其提供了聲明式的事務(wù)管理,在不需要任何一行代碼的情況下就能夠完成事務(wù)管理。
- 其他:選擇Spring框架的原因還遠不止于此,Spring為Java企業(yè)級開發(fā)提供了一站式選擇,你可以在需要的時候使用它的部分和全部,更重要的是,你甚至可以在感覺不到Spring存在的情況下,在你的項目中使用Spring提供的各種優(yōu)秀的功能。
2.IOC
3.AOP
4.事務(wù)
5.springMVC
處理請求的過程、源碼解析
如何配置
八、mybatis
1.配置
2.初始化過程
3.查詢過程