來源:hollischuang 發(fā)布時間:2019-02-23 16:52:22 閱讀量:1113
主要版本 | 更新時間 | 備注 |
---|---|---|
v1.0 | 2015-08-01 | 首次發(fā)布 |
v1.1 | 2018-03-12 | 增加新技術(shù)知識、完善知識體系 |
v2.0 | 2019-02-19 | 結(jié)構(gòu)調(diào)整,更適合從入門到精通; 進(jìn)一步完善知識體系; 新技術(shù)補(bǔ)充; |
面向?qū)ο?、面向過程
面向?qū)ο蟮娜蠡咎卣骱臀宕蠡驹瓌t
Java如何實現(xiàn)的平臺無關(guān)
JVM還支持哪些語言(Kotlin、Groovy、JRuby、Jython、Scala)
值傳遞、引用傳遞
為什么說Java中只有值傳遞
什么是多態(tài)、方法重寫與重載
Java的繼承與實現(xiàn)
構(gòu)造函數(shù)與默認(rèn)構(gòu)造函數(shù)
類變量、成員變量和局部變量
成員變量和方法作用域
8種基本數(shù)據(jù)類型:整型、浮點型、布爾型、字符型
整型中byte、short、int、long的取值范圍
什么是浮點型?什么是單精度和雙精度?為什么不能用浮點型表示金額?
什么是包裝類型、什么是基本類型、什么是自動拆裝箱
Integer的緩存機(jī)制
字符串的不可變性
JDK 6和JDK 7中substring的原理及區(qū)別、
replaceFirst、replaceAll、replace區(qū)別、
String對“+”的重載、字符串拼接的幾種方式和區(qū)別
String.valueOf和Integer.toString的區(qū)別、
switch對String的支持
字符串池、常量池(運(yùn)行時常量池、Class常量池)、intern
transient、instanceof、volatile、synchronized、final、static、const 原理及用法。
常用集合類的使用、ArrayList和LinkedList和Vector的區(qū)別 、SynchronizedList和Vector的區(qū)別、HashMap、HashTable、ConcurrentHashMap區(qū)別、
Set和List區(qū)別?Set如何保證元素不重復(fù)?
Java 8中stream相關(guān)用法、apache集合處理工具類的使用、不同版本的JDK中HashMap的實現(xiàn)的區(qū)別以及原因
Collection和Collections區(qū)別
Arrays.asList獲得的List使用時需要注意什么
Enumeration和Iterator區(qū)別
fail-fast 和 fail-safe
CopyOnWriteArrayList、ConcurrentSkipListMap
枚舉的用法、枚舉的實現(xiàn)、枚舉與單例、Enum類
Java枚舉如何比較
switch對枚舉的支持
枚舉的序列化如何實現(xiàn)
枚舉的線程安全性問題
字符流、字節(jié)流、輸入流、輸出流、
同步、異步、阻塞、非阻塞、Linux 5種IO模型
BIO、NIO和AIO的區(qū)別、三種IO的用法與原理、netty
反射與工廠模式、 反射有什么作用
Class類
java.lang.reflect.*
靜態(tài)代理、動態(tài)代理
動態(tài)代理和反射的關(guān)系
動態(tài)代理的幾種實現(xiàn)方式
AOP
什么是序列化與反序列化、為什么序列化、序列化底層原理、序列化與單例模式、protobuf、為什么說序列化并不安全
元注解、自定義注解、Java中常用注解使用、注解與反射的結(jié)合
Spring常用注解
什么是Java消息服務(wù)、JMS消息傳送模型
java.lang.management.*
、 javax.management.*
泛型與繼承、類型擦除、泛型中K T V E ? object等的含義、泛型各種用法
限定通配符和非限定通配符、上下界限定符extends 和 super
List
List<?>和List
junit、mock、mockito、內(nèi)存數(shù)據(jù)庫(h2)
java.lang.util.regex.*
commons.lang
, commons.*...
guava-libraries
netty
API、API和SPI的關(guān)系和區(qū)別
如何定義SPI、SPI的實現(xiàn)原理
異常類型、正確處理異常、自定義異常
Error和Exception
異常鏈、try-with-resources
finally和return的執(zhí)行順序
時區(qū)、冬令時和夏令時、時間戳、Java中時間API
格林威治時間、CET,UTC,GMT,CST幾種常見時間的含義和關(guān)系
SimpleDateFormat的線程安全性問題
Java 8中的時間處理
如何在東八區(qū)的計算機(jī)上獲取美國時間
Unicode、有了Unicode為啥還需要UTF-8
GBK、GB2312、GB18030之間的區(qū)別
UTF8、UTF16、UTF32區(qū)別
URL編解碼、Big Endian和Little Endian
如何解決亂碼問題
Java中語法糖原理、解語法糖
語法糖:switch 支持 String 與枚舉、泛型、自動裝箱與拆箱、方法變長參數(shù)、枚舉、內(nèi)部類、條件編譯、 斷言、數(shù)值字面量、for-each、try-with-resource、Lambda表達(dá)式、
String、Integer、Long、Enum、BigDecimal、ThreadLocal、ClassLoader & URLClassLoader、ArrayList & LinkedList、 HashMap & LinkedHashMap & TreeMap & CouncurrentHashMap、HashSet & LinkedHashSet & TreeSet
什么是并發(fā)
什么是并行
并發(fā)與并行的區(qū)別
線程的實現(xiàn)、線程的狀態(tài)、優(yōu)先級、線程調(diào)度、創(chuàng)建線程的多種方式、守護(hù)線程
線程與進(jìn)程的區(qū)別
自己設(shè)計線程池、submit() 和 execute()、線程池原理
為什么不允許使用Executors創(chuàng)建線程池
死鎖、死鎖如何排查、線程安全和內(nèi)存模型的關(guān)系
CAS、樂觀鎖與悲觀鎖、數(shù)據(jù)庫相關(guān)鎖機(jī)制、分布式鎖、偏向鎖、輕量級鎖、重量級鎖、monitor、
鎖優(yōu)化、鎖消除、鎖粗化、自旋鎖、可重入鎖、阻塞鎖、死鎖
死鎖的原因
死鎖的解決辦法
synchronized是如何實現(xiàn)的?
synchronized和lock之間關(guān)系、不使用synchronized如何實現(xiàn)一個線程安全的單例
synchronized和原子性、可見性和有序性之間的關(guān)系
happens-before、內(nèi)存屏障、編譯器指令重排和CPU指令重
volatile的實現(xiàn)原理
volatile和原子性、可見性和有序性之間的關(guān)系
有了symchronized為什么還需要volatile
Thread、Runnable、Callable、ReentrantLock、ReentrantReadWriteLock、Atomic*、Semaphore、CountDownLatch、、ConcurrentHashMap、Executors
class文件格式、運(yùn)行時數(shù)據(jù)區(qū):堆、棧、方法區(qū)、直接內(nèi)存、運(yùn)行時常量池、
堆和棧區(qū)別
Java中的對象一定在堆上分配嗎?
計算機(jī)內(nèi)存模型、緩存一致性、MESI協(xié)議
可見性、原子性、順序性、happens-before、
內(nèi)存屏障、synchronized、volatile、final、鎖
GC算法:標(biāo)記清除、引用計數(shù)、復(fù)制、標(biāo)記壓縮、分代回收、增量式回收
GC參數(shù)、對象存活的判定、垃圾收集器(CMS、G1、ZGC、Epsilon)
-Xmx、-Xmn、-Xms、Xss、-XX:SurvivorRatio、
-XX:PermSize、-XX:MaxPermSize、-XX:MaxTenuringThreshold
oop-klass、對象頭
即時編譯器、編譯優(yōu)化
jps, jstack, jmap、jstat, jconsole, jinfo, jhat, javap, btrace、TProfiler
Arthas
classLoader、類加載過程、雙親委派(破壞雙親委派)、模塊化(jboss modules、osgi、jigsaw)
什么是編譯(前端編譯、后端編譯)、什么是反編譯
JIT、JIT優(yōu)化(逃逸分析、棧上分配、標(biāo)量替換、鎖優(yōu)化)
編譯工具:javac
反編譯工具:javap 、jad 、CRF
用位運(yùn)算實現(xiàn)加、減、乘、除、取余
設(shè)計模式的六大原則:
開閉原則(Open Close Principle)、里氏代換原則(Liskov Substitution Principle)、依賴倒轉(zhuǎn)原則(Dependence Inversion Principle)
接口隔離原則(Interface Segregation Principle)、迪米特法則(最少知道原則)(Demeter Principle)、合成復(fù)用原則(Composite Reuse Principle)
創(chuàng)建型模式:單例模式、抽象工廠模式、建造者模式、工廠模式、原型模式。
結(jié)構(gòu)型模式:適配器模式、橋接模式、裝飾模式、組合模式、外觀模式、享元模式、代理模式。
行為型模式:模版方法模式、命令模式、迭代器模式、觀察者模式、中介者模式、備忘錄模式、解釋器模式(Interpreter模式)、狀態(tài)模式、策略模式、職責(zé)鏈模式(責(zé)任鏈模式)、訪問者模式。
單例的七種寫法:懶漢——線程不安全、懶漢——線程安全、餓漢、餓漢——變種、靜態(tài)內(nèi)部類、枚舉、雙重校驗鎖
工廠模式、適配器模式、策略模式、模板方法模式、觀察者模式、外觀模式、代理模式等必會
三次握手與四次關(guān)閉、流量控制和擁塞控制、OSI七層模型、tcp粘包與拆包
http中 get和post區(qū)別
常見的web請求返回的狀態(tài)碼
404、302、301、500分別代表什么
cookie被禁用,如何實現(xiàn)session
什么是DNS 、記錄類型:A記錄、CNAME記錄、AAAA記錄等
域名解析、根域名服務(wù)器
DNS污染、DNS劫持、公共DNS:114 DNS、Google DNS、OpenDNS
正向代理、反向代理
反向代理服務(wù)器
生命周期
線程安全問題
filter和listener
web.xml中常用配置及作用
什么是OR Mapping
Hibernate的緩存機(jī)制
Hibernate的懶加載
Hibernate/Ibatis/MyBatis之間的區(qū)別
Bean的初始化
AOP原理
實現(xiàn)Spring的IOC
spring四種依賴注入方式
什么是MVC
Spring mvc與Struts mvc的區(qū)別
Spring Boot 2.0、起步依賴、自動配置、
Spring Boot的starter原理,自己實現(xiàn)一個starter
服務(wù)發(fā)現(xiàn)與注冊:Eureka、Zookeeper、Consul
負(fù)載均衡:Feign、Spring Cloud Loadbalance
服務(wù)配置:Spring Cloud Config
服務(wù)限流與熔斷:Hystrix
服務(wù)鏈路追蹤:Dapper
服務(wù)網(wǎng)關(guān)、安全、消息
常用插件:Maven Helper 、FindBugs-IDEA、阿里巴巴代碼規(guī)約檢測、GsonFormat
Lombok plugin、.ignore、Mybatis plugin
lambda表達(dá)式、Stream API、時間API
Jigsaw、Jshell、Reactive Streams
局部變量類型推斷、G1的并行Full GC、ThreadLocal握手機(jī)制
ZGC、Epsilon、增強(qiáng)var、
響應(yīng)式編程
使用單例、使用Future模式、使用線程池、選擇就緒、減少上下文切換、減少鎖粒度、數(shù)據(jù)壓縮、結(jié)果緩存
線程Dump、內(nèi)存Dump、gc情況
分析死鎖、分析內(nèi)存泄露
jstack、jstat、jmap、jhat、Arthas
HeapOutOfMemory、 Young OutOfMemory、MethodArea OutOfMemory、ConstantPool OutOfMemory、DirectMemory OutOfMemory、Stack OutOfMemory Stack OverFlow
jvm相關(guān)、class/classloader相關(guān)、monitor/watch/trace相關(guān)、
options、管道、后臺異步任務(wù)
文檔:https://alibaba.github.io/arthas/advanced-use.html
內(nèi)存溢出、線程死鎖、類加載沖突
當(dāng)一個Java程序響應(yīng)很慢時如何查找問題、
當(dāng)一個Java程序頻繁FullGC時如何解決問題、
如何查看垃圾回收日志、
當(dāng)一個Java應(yīng)用發(fā)生OutOfMemory時該如何解決、
如何判斷是否出現(xiàn)死鎖、
如何判斷是否存在內(nèi)存泄露
使用Arthas快速排查Spring Boot應(yīng)用404/401問題
使用Arthas排查線上應(yīng)用日志打滿問題
利用Arthas排查Spring Boot應(yīng)用NoSuchMethodError
javap 、jad 、CRF
生產(chǎn)者消費(fèi)者問題、哲學(xué)家就餐問題、讀者寫者問題
如何查看執(zhí)行計劃,如何根據(jù)執(zhí)行計劃進(jìn)行SQL優(yōu)化
Hash索引、B樹索引(B+樹、和B樹、R樹)
普通索引、唯一索引
覆蓋索引、最左前綴原則、索引下推
事務(wù)的隔離級別、事務(wù)能不能實現(xiàn)鎖的功能
行鎖、表鎖、使用數(shù)據(jù)庫鎖實現(xiàn)樂觀鎖、
內(nèi)連接,左連接,右連接
h2
redis、memcached
棧、隊列、鏈表、數(shù)組、哈希表、
棧和隊列的相同和不同之處
棧通常采用的兩種存儲結(jié)構(gòu)
二叉樹、字典樹、平衡樹、排序樹、B樹、B+樹、R樹、多路樹、紅黑樹
大根堆、小根堆
有向圖、無向圖、拓?fù)?/p>
穩(wěn)定的排序:冒泡排序、插入排序、雞尾酒排序、桶排序、計數(shù)排序、歸并排序、原地歸并排序、二叉排序樹排序、鴿巢排序、基數(shù)排序、侏儒排序、圖書館排序、塊排序
不穩(wěn)定的排序:選擇排序、希爾排序、Clover排序算法、梳排序、堆排序、平滑排序、快速排序、內(nèi)省排序、耐心排序
各種排序算法和時間復(fù)雜度
分治,hash映射,堆排序,雙層桶劃分,Bloom Filter,bitmap,數(shù)據(jù)庫索引,mapreduce等。
基本概念、常見用法
在linux上部署solr,solrcloud,,新增、刪除、查詢索引
在linux上部署storm,用zookeeper做協(xié)調(diào),運(yùn)行storm hello world,local和remote模式運(yùn)行調(diào)試storm topology。
HDFS、MapReduce
XSS的防御
SQL注入、XML注入、CRLF注入
對稱加密、非對稱加密、哈希算法、加鹽哈希算法
MD5,SHA1、DES、AES、RSA、DSA
彩虹表
DOS攻擊、DDOS攻擊
memcached為什么可以導(dǎo)致DDos攻擊、什么是反射型DDoS
如何通過Hash碰撞進(jìn)行DOS攻擊
數(shù)據(jù)一致性、服務(wù)治理、服務(wù)降級
2PC、3PC、CAP、BASE、 可靠消息最終一致性、最大努力通知、TCC
服務(wù)注冊、服務(wù)發(fā)現(xiàn),服務(wù)治理
http://dubbo.apache.org/zh-cn/
怎樣打造一個分布式數(shù)據(jù)庫、什么時候需要分布式數(shù)據(jù)庫、mycat、otter、HBase
mfs、fastdfs
緩存一致性、緩存命中率、緩存冗余
Hystrix、Sentinal
共識算法、Raft協(xié)議、Paxos 算法與 Raft 算法、拜占庭問題與算法
2PC、3PC
SOA、康威定律
sidecar
ActiveMQ
CPU、內(nèi)存、磁盤I/O、網(wǎng)絡(luò)I/O等
進(jìn)程監(jiān)控、語義監(jiān)控、機(jī)器資源監(jiān)控、數(shù)據(jù)波動
日志、埋點
tomcat負(fù)載均衡、Nginx負(fù)載均衡
四層負(fù)載均衡、七層負(fù)載均衡
DNS原理、DNS的設(shè)計
數(shù)據(jù)一致性
IaaS、SaaS、PaaS、虛擬化技術(shù)、openstack、Serverlsess
Solr、Lucene、Nutch、Elasticsearch
Shiro
哈希算法、Merkle樹、公鑰密碼算法、共識算法、Raft協(xié)議、Paxos 算法與 Raft 算法、拜占庭問題與算法、消息認(rèn)證碼與數(shù)字簽名
挖礦、共識機(jī)制、閃電網(wǎng)絡(luò)、側(cè)鏈、熱點問題、分叉
數(shù)學(xué)基礎(chǔ)、機(jī)器學(xué)習(xí)、人工神經(jīng)網(wǎng)絡(luò)、深度學(xué)習(xí)、應(yīng)用場景。
TensorFlow、DeepLearning4J
Groovy、Python、Go、NodeJs、Swift、Rust
《深入理解Java虛擬機(jī)》
《Effective Java》
《深入分析Java Web技術(shù)內(nèi)幕》
《大型網(wǎng)站技術(shù)架構(gòu)》
《代碼整潔之道》
《架構(gòu)整潔之道》
《Head First設(shè)計模式》
《maven實戰(zhàn)》
《區(qū)塊鏈原理、設(shè)計與應(yīng)用》
《Java并發(fā)編程實戰(zhàn)》
《鳥哥的Linux私房菜》
《從Paxos到Zookeeper》
《架構(gòu)即未來》