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