目錄介紹
- 01.Java基礎[30篇]
- 02.面向對象[15篇]
- 03.數據結構[27篇]
- 04.IO流知識[11篇]
- 05.線程進程[9篇]
- 06.虛擬機[5篇]
- 07.類的加載[7篇]
- 08.反射原理[12篇]
- 09.Java併發[27篇]
- 10.Java異常[11篇]
- 11.枚舉與註解[1篇]
- 12.設計模式[8篇]
- 13.Java深入[2篇]
好消息
- 博客筆記大彙總【16年3月到至今】,包括Java基礎及深入知識點,Android技術博客,Python學習筆記等等,還包括平時開發中遇到的bug彙總,當然也在工作之餘收集了大量的面試題,長期更新維護並且修正,持續完善……開源的文件是markdown格式的!同時也開源了生活博客,從12年起,積累共計N篇[近100萬字,陸續搬到網上],轉載請註明出處,謝謝!
- 鏈接地址:https://github.com/yangchong211/YCBlogs
- 如果覺得好,可以star一下,謝謝!當然也歡迎提出建議,萬事起於忽微,量變引起質變!
01.Java基礎
-
- 常見的關鍵字,重要關鍵字說明,持續彙總中。
-
- 知識點:基礎知識點總結,標識符規則,進制,字符編碼,運算符,方法,內存分配以及棧和堆
-
- 基本類型有哪些,基本類型轉換,字面值有哪些類型,表達式中的自動類型提升
-
- 知識點:常用api
-
- 知識點:Integer的值緩存的原理,理解自動裝箱和拆箱,如何驗證int類型是否線程安全,Java 原始數據類型和引用類型侷限性,原始類型線程安全問題等等
-
- new Integer(123) 與 Integer.valueOf(123) 的區別,基本類型對應的緩衝池
-
- 有哪些運算符,算術運算符,位運算符,關係運算符,邏輯運算符
-
- 訪問控制符有哪些,類訪問控制符,類成員訪問控制符
-
- static變量存儲位置,用static靜態變量潛在性問題,靜態變量的生命週期,靜態變量何時銷燬,靜態引用的對象回收
-
- final關鍵字概述,final,finally,finalize之間的比較
-
- 局部變量存儲位置,成員變量存儲位置,靜態變量存儲位置
-
- 泛型的概述,引入泛型的目的,泛型初步探索,泛型的格式,泛型的好處
-
- 泛型類的概述及使用,泛型接口的概述和使用,泛型高級之通配符,泛型只能使用引用類型
-
- 編譯器類型檢查,可讀性和靈活性,泛型方法和泛型類的比較
-
- 什麼是泛型擦除,泛型擦除案例
-
- 通過反射獲得泛型的實際類型參數
-
- 不能實例化類型參數,對靜態成員的限制,對泛型數組的限制,對泛型異常的限制
-
- String的創建機理,StringBuffer/StringBuilder,String類的考點分析,String不可變的好處
-
- Switch支持哪些類型,switch對整型支持,switch對字符串支持,switch對字符型支持
02.面向對象
-
- 面向對象的思想【思想,特徵】,類和對象及其應用,對象的內存圖,成員變量和局部變量區別等等
-
- 什麼是封裝,封裝好處分析,封裝的原則,封裝的案例展示
-
- 繼承簡單概述,繼承格式,繼承好處和弊端,繼承的注意事項,繼承中成員變量的關係,不支持多繼承影響
-
- 什麼是多態,多態的實現條件,多態實現方式,多態好處和弊端
-
- 什麼是接口,接口特點,Marker Interface,Java 8接口變化,接口如何被加載
-
- 爲何需要抽象類,抽象類特點,抽象類可以new嗎,抽象類設計注意要點,抽象類名作爲形參
-
- 理解抽象和接口概念,抽象和接口語法上不同,抽象和接口編程角度不同,抽象類與接口的區別
-
- Java中的內部類分類,內部類概述和訪問特點,內部類和外部類聯繫,匿名內部類介紹,成員內部類介紹,爲什麼內部類調用的外部變量必須是final修飾的?
-
- 什麼是形參和實參,類名作爲形式參數,抽象類名作爲形式參數,接口名作爲形式參數
-
- 構造方法概述和作用,構造方法注意事項,看一個構造方法案例,構造方法加載機制
-
- 什麼是方法重寫,什麼是方法重載,父類的靜態方法能否被子類重寫
-
- import關鍵字的概述和使用,四種權限修飾符的測試,類及其組成所使用的常見修飾符
-
- 待完善
-
- 什麼是綁定,靜態和動態綁定,動態綁定編譯原理,動態綁定運行原理,多態的劃分情況
-
- 基本類型和引用類型,什麼是值傳遞,什麼是引用傳遞,通過案例分析
-
- 三大特點,六大原則,實踐案例分析
03.數據結構
-
- 常見的數據類型,數組,集合,棧,堆,鏈表,圖,隊列,樹。主要是羅列開發中比較常見的數據類型……
-
- 集合概括與總結,集合的遍歷,迭代器的原理,List集合如何選擇合適的
-
- ArrayList,Vector,LinkedList等集合的特點與區別。ArrayList的擴容消耗,List怎麼實現排序?System.arraycopy()和Arrays.copyOf()方法區別與聯繫,list集合讀寫機制和讀寫效率,ArrayList核心源代碼分析等等
-
- HashSet,LinkedHashSet,TreeSet等集合特點和區別
-
- HashMap,LinkedHashMap,TreeMap等集合案例分享和基礎內容介紹
-
- ArrayList由來介紹,ArrayList的特點,ArrayList如何使用,ArrayList結構圖,ArrayList類聲明
-
- ArrayList內部結構,構造方法,add(E e)方法,set和get函數,remove(Object o),ArrayList擴容消耗
-
- ArrayList的序列化,ArrayList的clone,System.arraycopy()和Arrays.copyOf(),ArrayList的Fail-Fast,List怎麼實現排序
-
- LinkedList簡介,內部結構分析,LinkedList類聲明,幾個常用的方法,list效率比較
-
- 構造方法和成員變量,add方法,get方法,indexOf方法,remove()方法
-
- HashMap簡單使用 ,查找數據,遍歷數據,HashMap特點,HashMap底層實現
-
- HashMap內部結構,構造函數,put(K key, V value),get(Object key),resize()擴容,Hash函數實現
-
- 容量和裝載因子,HashTable和HashMap,hashCode和equal,Key爲何需要不可變,HashMap爲啥要擴容,HashMap的table下標
-
- HashMap線程問題,測試HashMap效率,HashMap性能分析
-
- TreeMap特點,何時用TreeMap,TreeMap簡單使用,案例訓練
-
- 構造函數和成員變量,put插入函數源碼,get獲取函數源碼,如何保證有序性
-
- HashMap使用的弊端,ConcurrentHashMap底層知識點
-
- ConcurrentHashMap內部結構,table初始化initTable(),put插入數據操作
-
- LinkedHashMap使用,LinkedHashMap特點,爲何有LinkedHashMap,節點類說明介紹
-
- 成員變量分析,構造函數分析,put插入元素分析,get訪問元素,移除元素源碼分析
-
- HashSet特點,HashSet如何去重,HashSet源碼分析
-
- LinkedHashSet的特點,LinkedHashSet源碼分析
-
- TreeSet特點說明,TreeSet的案例,TreeSet原理,TreeSet源碼分析
-
- 什麼是CopyOnWriteArrayList,它與ArrayList有何不同?CopyOnWriteArrayList讀寫分離
04.IO流知識
-
- IO流概述及其前奏,IO流整體學習知識體系有哪些東西,IO流的概念,輸入流和輸出流
-
- 什麼是字節,什麼是字符,unicode編碼,如何獲取字節,字節和字符區別,String中編解碼問題
-
- File類介紹,File類構造函數,創建與刪除方法,File判斷方法,File獲取方法
-
- IO流體系圖,按照流向進行劃分圖,按操作方式分類結構圖,InputStream字節輸入流,OutputStream字節輸出流,Reader字符輸入流,Writer字符輸出流
-
- 什麼是字節流,字節流複製文本文件,字節流複製MP3,字節流四種方式複製MP3效率比較
-
- 字符流OutputStreamWriter,字符流InputStreamReader,字符流讀寫方式,字符流複製文本文件,複製單級文件夾,複製指定目錄下指定後綴名的文件並修改名稱
-
- 什麼是Buffer緩衝流,字節緩衝流BufferedOutputStream,字節緩衝流BufferedInputStream
-
- 什麼是高效字符流,字符緩衝流的特殊功能,高效字符流複製文本文件,集合數據存儲到文本文件,文本數據存儲到集合中,隨機獲取文本中姓名
-
- 如何實現對象克隆?克隆有哪些方式?深克隆和淺克隆有何區別?深克隆和淺克隆分別說的是什麼意思?淺拷貝會創建新的對象嗎?對於基本類型拷貝的是什麼?怎麼樣實現淺拷貝,淺拷貝前後對象地址值會一樣嗎?
-
- RandomAccessFile簡介,RandomAccessFile構造函數,RandomAccessFile使用
05.線程進程
-
- 什麼是線程,多線程意義,並行和併發,JVM啓動線程
-
- 什麼是進程,多進程的意義,進程狀態有哪些,進程狀態轉換,進程通信,進程死鎖,進程調度算法
-
- 進程與線程概念區別,進程與線程調度區別,進程與線程併發行區別,進程與線程擁有資源對比,進程與線程系統開銷對比
-
- 創建線程的方式,繼承Thread類創建線程類,通過Runnable接口創建線程類,通過Callable和Future創建線程,三種創建線程區別
-
- 線程執行流程,線程調度,sleep休眠線程,join加入線程,yield禮讓線程, setDaemon守護線程,stop中斷線程,start開啓線程
-
- start和run區別,爲何不能重複start,wait和sleep方法,run方法的作用,Runnable和Callable
-
- 結束Thread線程的幾種方法,使用退出標誌終止線程,使用interrupt()方法終止線程,使用stop方法終止線程
-
- 線程間通信的兩種方式 ,wait()/notify(),notify()方法使用注意事項,Condition實現等待/通知
-
- 生產者消費者模型發生場景,一生產與一消費案例,多生產與多消費案例,會遇到哪些關鍵問題,如何解決關鍵問題
06.虛擬機
-
- JVM內存管理圖,JVM內存分配的幾種策略,內存泄漏簡單介紹
-
- GC回收機制,GC過程與對象的引用類型關係,檢測垃圾的算法,處理垃圾的算法,分代收集算法(當今最常用的方法),將對象按其生命週期劃分
-
- Java對象的訪問定位方式,通過句柄訪問方式,通過直接指針訪問方式,這兩種方式區別和優勢
-
- Java對象銷燬分析,JVM內存分配與回收,判斷對象是否死亡,不可達的對象並非“非死不可”,如何判斷一個常量是廢棄常量,如何判斷一個類是無用的類,GC回收算法詳解
-
- JVM加載類過程,對構造方法賦值,通過對象調用方法
07.類的加載
-
- 類加載器分類
-
- Java對象的創建過程 ,Java內存區域 ,Java對象的訪問定位方式 ,Java對象銷燬分析 ,類的加載過程。類信息,常量,變量,方法分別放到內存中哪裏?本地方法棧和Java虛擬機棧有什麼區別?本地方法棧在什麼情況下會造成OOM?Java對象訪問定位方式有哪些?主要有什麼區別?爲什麼說使用指針效率更高?
-
- 什麼是類的生命週期?類加載的過程包括了加載、驗證、準備、解析、初始化五個階段。都做了些什麼?
-
- 詳細介紹一下什麼是雙親委派機制?它的工作流程是什麼?爲何說具有不同優先級?代碼實現雙親委派模型?
-
- 對象的創建的條件有哪些?
-
- 類在加載過程中的流程
08.反射原理
-
- Java反射機制定義,反射的應用場景,Class與.class文檔,反射之動態交互,使用反射的初衷
-
- 反射查看類信息,獲得Class對象 ,Class.forName(),類.class, 對象.getClass()
-
- 獲取class對象的信息,獲取對象的變量,獲取class對象的方法,獲取class對象的構造函數,獲取對象信息案例
-
- 反射生成類實例對象,反射調用類的方法,反射訪問成員變量值
-
- 建立實例對象
-
- 反射調用公有方法,反射調用私有方法
-
- 泛型和Class類,使用反射來獲取泛型信息,泛型和反射案例
-
- 如何防止反射序列化攻擊單例
09.Java併發
-
- 繼承Thread類的方式賣電影票案例,實現Runnable接口的方式賣電影票,買電影票出現了同票和負數票的原因分析,線程安全問題的產生原因分析,同步代碼塊的方式解決線程安全問題
-
- 什麼是線程安全,線程安全級別,多線程三要素,如何理解原子性,如何理解可見性,如何理解有序性
-
- 有哪些方式處理多線程併發,如何保證原子性,如何保證可見性,如何保證有序性,平時項目中使用鎖和synchronized比較多,而很少使用volatile,難道就沒有保證可見性?
-
- Synchronize用法,同步代碼塊synchronized (this),同步方法synchronized void test,Synchronize作用於方法和靜態方法區別,sychonized method 和 synchonized代碼塊的效率問題
-
- 簡單理解Synchronize鎖機制,同步方法和代碼塊實現原理
-
- ReentrantLock是什麼,ReentrantLock使用方法,ReentrantLock鎖機制測試,何時用ReentrantLock,
-
09.Synchronize和ReentrantLock區別
- Synchronize和ReentrantLock區別,Synchronize在編譯時如何實現鎖機制,ReentrantLock鎖機制測試案例分析,公平鎖和非公平鎖有何區別等等
-
- 死鎖產生的條件,靜態的鎖順序死鎖,動態的鎖順序死鎖,協作對象之間發生的死鎖
-
- Java中導致死鎖的原因 ,出現死鎖需要滿足條件 ,死鎖診斷步驟
-
- volatile輕量級鎖,volatile測試案例,volatile實現原理 ,volatile的happens-before關係 ,volatile的內存語義 ,volatile的應用場景
-
- CAS簡單介紹,CAS操作案例分析,CAS存在的問題
-
- 線程池的優勢,ThreadPoolExecutor參數,線程池執行流程,線程池的使用技巧
10.Java異常
-
- 異常體系結構圖,Throwable類常用方法,異常處理關鍵字
-
- 什麼是Error(錯誤),常見的異常Error有哪些?
-
- 什麼是Exception,常見的Exception有哪些,編譯期異常和運行期異常
-
- 什麼是拋出異常,異常先拋出後捕獲,異常處理兩種方式,異常的注意事項,如何選合適處理方法
-
- 待更新
-
- try...catch處理異常,try-catch-finally規則,try...catch使用建議,catch執行注意要點,finally一定會執行嗎,try...catch語句塊的執行順序,多條catch子句
-
- throws的用法介紹,throw的用法介紹,throws和throw區別
-
- 未捕獲的異常,鏈式異常
-
- 驗證finally執行,finally中return和try的return,try塊裏的return一定執行嗎
- 10.自定義異常
-
- 儘量捕獲原始的異常,不要打印堆棧後再拋出異常,不要用異常處理機制代替判斷
11.枚舉與註解
12.設計模式
13.Java深入
-
- 強引用,軟引用,弱引用,虛引用的使用場景與區別,軟引用SoftReference源碼,弱引用WeakReference源碼,虛引用PhantomReference源碼分析
-
- Java採用GC進行內存管理思維導圖,JVM內存分配的幾種策略,GC簡單介紹,內存泄漏帶來的影響,GC回收機制,垃圾回收思路及方法
-
- Hash的定義,Hash的使用場景,HashCode是什麼,爲什麼要重寫HashCode,可直接用hashcode判斷兩個對象是否相等嗎,Hash表是什麼 ,Hash中的算法應用 ,Hash在Java中的應用場景
其他介紹
01.關於博客彙總鏈接
02.關於我的博客
- 我的個人站點:www.yczbj.org,www.ycbjie.cn
- github:https://github.com/yangchong211
- 知乎:https://www.zhihu.com/people/yczbj/activities
- 簡書:http://www.jianshu.com/u/b7b2c6ed9284
- csdn:http://my.csdn.net/m0_37700275
- 喜馬拉雅聽書:http://www.ximalaya.com/zhubo/71989305/
- 開源中國:https://my.oschina.net/zbj1618/blog
- 泡在網上的日子:http://www.jcodecraeer.com/member/content_list.php?channelid=1
- 郵箱:[email protected]
- 阿里雲博客:https://yq.aliyun.com/users/article?spm=5176.100- 239.headeruserinfo.3.dT4bcV
- segmentfault頭條:https://segmentfault.com/u/xiangjianyu/articles
- 掘金:https://juejin.im/user/5939433efe88c2006afa0c6e