OFFER來了:JAVA面試核心知識(shí)點(diǎn)精講(原理篇) 版權(quán)信息
- ISBN:9787121376184
- 條形碼:9787121376184 ; 978-7-121-37618-4
- 裝幀:平裝-膠訂
- 冊(cè)數(shù):暫無
- 重量:暫無
- 所屬分類:>>
OFFER來了:JAVA面試核心知識(shí)點(diǎn)精講(原理篇) 本書特色
本書是對(duì)Java程序員面試**知識(shí)點(diǎn)的總結(jié),詳細(xì)講解了JVM原理、多線程、數(shù)據(jù)結(jié)構(gòu)和算法、分布式緩存、設(shè)計(jì)模式等面試**知識(shí)點(diǎn),在講解時(shí)不拖泥帶水,力求精簡。本書總計(jì)9章,第1章講解JVM原理,涉及JVM運(yùn)行機(jī)制、JVM內(nèi)存模型、常用垃圾回收算法和JVM類加載機(jī)制等內(nèi)容;第2章講解Java基礎(chǔ)知識(shí),涉及集合、異常分類及處理、反射、注解、內(nèi)部類、泛型和序列化等內(nèi)容;第3章講解Java并發(fā)編程知識(shí),涉及Java多線程的工作原理及應(yīng)用、Java線程池的工作原理及應(yīng)用,以及鎖、進(jìn)程調(diào)度算法等內(nèi)容;第4章講解數(shù)據(jù)結(jié)構(gòu)知識(shí),涉及棧、隊(duì)列、鏈表、散列表、二叉樹、紅黑樹、圖和位圖等內(nèi)容;第5章講解Java中的常用算法,涉及二分查找、冒泡排序、插入排序、快速排序、希爾排序、歸并排序、桶排序、基數(shù)排序等算法;第6章講解網(wǎng)絡(luò)與負(fù)載均衡原理,涉及TCP/IP、HTTP、常用負(fù)載均衡算法和LVS原理等內(nèi)容;第7章講解數(shù)據(jù)庫及分布式事務(wù)原理,涉及數(shù)據(jù)庫存儲(chǔ)引擎、數(shù)據(jù)庫并發(fā)操作和鎖、數(shù)據(jù)庫分布式事務(wù)等內(nèi)容;第8章講解分布式緩存的原理及應(yīng)用,涉及分布式緩存介紹、Ehcache原理及應(yīng)用、Redis原理及應(yīng)用、分布式緩存設(shè)計(jì)的核心問題等內(nèi)容;第9章講解設(shè)計(jì)模式,涉及常見的23種經(jīng)典設(shè)計(jì)模式。本書可作為Java程序員的技術(shù)面試參考用書,也可作為Java程序員、技術(shù)經(jīng)理和架構(gòu)師的日常技術(shù)參考用書。
OFFER來了:JAVA面試核心知識(shí)點(diǎn)精講(原理篇) 內(nèi)容簡介
本書是對(duì)Java程序員面試推薦知識(shí)點(diǎn)的總結(jié),詳細(xì)講解了JVM原理、多線程、數(shù)據(jù)結(jié)構(gòu)和算法、分布式緩存、設(shè)計(jì)模式等面試推薦知識(shí)點(diǎn),在講解時(shí)不拖泥帶水,力求精簡。本書總計(jì)9章,章講解JVM原理,涉及JVM運(yùn)行機(jī)制、JVM內(nèi)存模型、常用垃圾回收算法和JVM類加載機(jī)制等內(nèi)容;第2章講解Java基礎(chǔ)知識(shí),涉及集合、異常分類及處理、反射、注解、內(nèi)部類、泛型和序列化等內(nèi)容;第3章講解Java并發(fā)編程知識(shí),涉及Java多線程的工作原理及應(yīng)用、Java線程池的工作原理及應(yīng)用,以及鎖、進(jìn)程調(diào)度算法等內(nèi)容;第4章講解數(shù)據(jù)結(jié)構(gòu)知識(shí),涉及棧、隊(duì)列、鏈表、散列表、二叉樹、紅黑樹、圖和位圖等內(nèi)容;第5章講解Java中的常用算法,涉及二分查找、冒泡排序、插入排序、快速排序、希爾排序、歸并排序、桶排序、基數(shù)排序等算法;第6章講解網(wǎng)絡(luò)與負(fù)載均衡原理,涉及TCP/IP、HTTP、常用負(fù)載均衡算法和LVS原理等內(nèi)容;第7章講解數(shù)據(jù)庫及分布式事務(wù)原理,涉及數(shù)據(jù)庫存儲(chǔ)引擎、數(shù)據(jù)庫并發(fā)操作和鎖、數(shù)據(jù)庫分布式事務(wù)等內(nèi)容;第8章講解分布式緩存的原理及應(yīng)用,涉及分布式緩存介紹、Ehcache原理及應(yīng)用、Redis原理及應(yīng)用、分布式緩存設(shè)計(jì)的核心問題等內(nèi)容;第9章講解設(shè)計(jì)模式,涉及常見的23種經(jīng)典設(shè)計(jì)模式。本書可作為Java程序員的技術(shù)面試參考用書,也可作為Java程序員、技術(shù)經(jīng)理和架構(gòu)師的日常技術(shù)參考用書。
OFFER來了:JAVA面試核心知識(shí)點(diǎn)精講(原理篇) 目錄
1.1 JVM的運(yùn)行機(jī)制 1
1.2 多線程 2
1.3 JVM的內(nèi)存區(qū)域 3
1.3.1 程序計(jì)數(shù)器:線程私有,無內(nèi)存溢出問題 4
1.3.2 虛擬機(jī)棧:線程私有,描述Java方法的執(zhí)行過程 4
1.3.3 本地方法區(qū):線程私有 5
1.3.4 堆:也叫作運(yùn)行時(shí)數(shù)據(jù)區(qū),線程共享 5
1.3.5 方法區(qū):線程共享 5
1.4 JVM的運(yùn)行時(shí)內(nèi)存 6
1.4.1 新生代:Eden區(qū)、ServivorTo區(qū)和ServivorFrom區(qū) 7
1.4.2 老年代 8
1.4.3 永久代 8
1.5 垃圾回收與算法 9
1.5.1 如何確定垃圾 9
1.5.2 Java中常用的垃圾回收算法 10
1.6 Java中的4種引用類型 13
1.7 分代收集算法和分區(qū)收集算法 14
1.7.1 分代收集算法 14
1.7.2 分區(qū)收集算法 15
1.8 垃圾收集器 15
1.8.1 Serial垃圾收集器:單線程,復(fù)制算法 16
1.8.2 ParNew垃圾收集器:多線程,復(fù)制算法 16
1.8.3 Parallel Scavenge垃圾收集器:多線程,復(fù)制算法 16
1.8.4 Serial Old垃圾收集器:單線程,標(biāo)記整理算法 16
1.8.5 Parallel Old垃圾收集器:多線程,標(biāo)記整理算法 17
1.8.6 CMS垃圾收集器 18
1.8.7 G1垃圾收集器 18
1.9 Java網(wǎng)絡(luò)編程模型 19
1.9.1 阻塞I/O模型 19
1.9.2 非阻塞I/O模型 19
1.9.3 多路復(fù)用I/O模型 20
1.9.4 信號(hào)驅(qū)動(dòng)I/O模型 21
1.9.5 異步I/O模型 21
1.9.6 Java I/O 21
1.9.7 Java NIO 22
1.10 JVM的類加載機(jī)制 28
1.10.1 JVM的類加載階段 28
1.10.2 類加載器 29
1.10.3 雙親委派機(jī)制 30
1.10.4 OSGI 32
第2章 Java基礎(chǔ) 33
2.1 集合 33
2.1.1 List:可重復(fù) 34
2.1.2 Queue 34
2.1.3 Set:不可重復(fù) 35
2.1.4 Map 36
2.2 異常分類及處理 39
2.2.1 異常的概念 39
2.2.2 異常分類 40
2.2.3 異常處理方式:拋出異常、使用try catch捕獲并處理異常 41
2.3 反射機(jī)制 42
2.3.1 動(dòng)態(tài)語言的概念 42
2.3.2 反射機(jī)制的概念 43
2.3.3 反射的應(yīng)用 43
2.3.4 Java的反射API 43
2.3.5 反射的步驟 43
2.3.6 創(chuàng)建對(duì)象的兩種方式 45
2.3.7 Method的invoke方法 45
2.4 注解 46
2.4.1 注解的概念 46
2.4.2 標(biāo)準(zhǔn)元注解:@Target、@Retention、@Documented、@Inherited 46
2.4.3 注解處理器 47
2.5 內(nèi)部類 49
2.5.1 靜態(tài)內(nèi)部類 49
2.5.2 成員內(nèi)部類 50
2.5.3 局部內(nèi)部類 51
2.5.4 匿名內(nèi)部類 51
2.6 泛型 52
2.6.1 泛型標(biāo)記和泛型限定:E、T、K、V、N、? 53
2.6.2 泛型方法 53
2.6.3 泛型類 54
2.6.4 泛型接口 55
2.6.5 類型擦除 56
2.7 序列化 56
2.7.1 Java序列化API的使用 57
2.7.2 序列化和反序列化 58
第3章 Java并發(fā)編程 59
3.1 Java線程的創(chuàng)建方式 59
3.1.1 繼承Thread類 59
3.1.2 實(shí)現(xiàn)Runnable接口 60
3.1.3 通過ExecutorService和Callable<Class>實(shí)現(xiàn)有返回值的線程 61
3.1.4 基于線程池 62
3.2 線程池的工作原理 62
3.2.1 線程復(fù)用 63
3.2.2 線程池的核心組件和核心類 63
3.2.3 Java線程池的工作流程 65
3.2.4 線程池的拒絕策略 66
3.3 5種常用的線程池 68
3.3.1 newCachedThreadPool 68
3.3.2 newFixedThreadPool 68
3.3.3 newScheduledThreadPool 69
3.3.4 newSingleThreadExecutor 69
3.3.5 newWorkStealingPool 69
3.4 線程的生命周期 70
3.4.1 新建狀態(tài):New 71
3.4.2 就緒狀態(tài):Runnable 71
3.4.3 運(yùn)行狀態(tài):Running 71
3.4.4 阻塞狀態(tài):Blocked 71
3.4.5 線程死亡:Dead 72
3.5 線程的基本方法 72
3.5.1 線程等待:wait方法 72
3.5.2 線程睡眠:sleep方法 73
3.5.3 線程讓步:yield方法 73
3.5.4 線程中斷:interrupt方法 73
3.5.5 線程加入:join方法 74
3.5.6 線程喚醒:notify方法 75
3.5.7 后臺(tái)守護(hù)線程:setDaemon方法 75
3.5.8 sleep方法與wait方法的區(qū)別 76
3.5.9 start方法與run方法的區(qū)別 76
3.5.10 終止線程的4種方式 77
3.6 Java中的鎖 79
3.6.1 樂觀鎖 79
3.6.2 悲觀鎖 79
3.6.3 自旋鎖 80
3.6.4 synchronized 81
3.6.5 ReentrantLock 89
3.6.6 synchronized和ReentrantLock的比較 94
3.6.7 Semaphore 95
3.6.8 AtomicInteger 96
3.6.9 可重入鎖 97
3.6.10 公平鎖與非公平鎖 97
3.6.11 讀寫鎖:ReadWriteLock 98
3.6.12 共享鎖和獨(dú)占鎖 98
3.6.13 重量級(jí)鎖和輕量級(jí)鎖 99
3.6.14 偏向鎖 99
3.6.15 分段鎖 100
3.6.16 同步鎖與死鎖 100
3.6.17 如何進(jìn)行鎖優(yōu)化 100
3.7 線程上下文切換 101
3.7.1 上下文切換 102
3.7.2 引起線程上下文切換的原因 102
3.8 Java阻塞隊(duì)列 103
3.8.1 阻塞隊(duì)列的主要操作 104
3.8.2 Java中的阻塞隊(duì)列實(shí)現(xiàn) 108
3.9 Java并發(fā)關(guān)鍵字 113
3.9.1 CountDownLatch 113
3.9.2 CyclicBarrier 114
3.9.3 Semaphore 116
3.9.4 volatile關(guān)鍵字的作用 117
3.10 多線程如何共享數(shù)據(jù) 119
3.10.1 將數(shù)據(jù)抽象成一個(gè)類,并將對(duì)這個(gè)數(shù)據(jù)的操作封裝在類的方法中 119
3.10.2 將Runnable對(duì)象作為一個(gè)類的內(nèi)部類,將共享數(shù)據(jù)作為這個(gè)類的成員變量 121
3.11 ConcurrentHashMap并發(fā) 122
3.11.1 減小鎖粒度 122
3.11.2 ConcurrentHashMap的實(shí)現(xiàn) 123
3.12 Java中的線程調(diào)度 123
3.12.1 搶占式調(diào)度 123
3.12.2 協(xié)同式調(diào)度 124
3.12.3 Java線程調(diào)度的實(shí)現(xiàn):搶占式 124
3.12.4 線程讓出CPU的情況 125
3.13 進(jìn)程調(diào)度算法 125
3.13.1 優(yōu)先調(diào)度算法 125
3.13.2 高優(yōu)先權(quán)優(yōu)先調(diào)度算法 126
3.13.3 時(shí)間片的輪轉(zhuǎn)調(diào)度算法 127
3.14 什么是CAS 128
3.14.1 CAS的概念:比較并交換 128
3.14.2 CAS的特性:樂觀鎖 128
3.14.3 CAS自旋等待 129
3.15 ABA問題 129
3.16 什么是AQS 130
3.16.1 AQS的原理 130
3.16.2 state:狀態(tài) 131
3.16.3 AQS共享資源的方式:獨(dú)占式和共享式 131
第4章 數(shù)據(jù)結(jié)構(gòu) 133
4.1 棧及其Java實(shí)現(xiàn) 133
4.2 隊(duì)列及其Java實(shí)現(xiàn) 136
4.3 鏈表 138
4.3.1 鏈表的特點(diǎn) 139
4.3.2 單向鏈表的操作及其Java實(shí)現(xiàn) 139
4.3.3 雙向鏈表及其Java實(shí)現(xiàn) 143
4.3.4 循環(huán)鏈表 146
4.4 散列表 146
4.4.1 常用的構(gòu)造散列函數(shù) 147
4.4.2 Hash的應(yīng)用 148
4.5 二叉排序樹 148
4.5.1 插入操作 149
4.5.2 刪除操作 149
4.5.3 查找操作 151
4.5.4 用Java實(shí)現(xiàn)二叉排序樹 151
4.6 紅黑樹 155
4.6.1 紅黑樹的特性 156
4.6.2 紅黑樹的左旋 156
4.6.3 紅黑樹的右旋 157
4.6.4 紅黑樹的添加 157
4.6.5 紅黑樹的刪除 158
4.7 圖 159
4.7.1 無向圖和有向圖 159
4.7.2 圖的存儲(chǔ)結(jié)構(gòu):鄰接矩陣 160
4.7.3 圖的存儲(chǔ)結(jié)構(gòu):鄰接表 161
4.7.4 圖的遍歷 162
4.8 位圖 164
4.8.1 位圖的數(shù)據(jù)結(jié)構(gòu) 164
4.8.2 位圖的Java實(shí)現(xiàn) 165
第5章 Java中的常用算法 167
5.1 二分查找算法 167
5.1.1 二分查找算法的原理 168
5.1.2 二分查找算法的Java實(shí)現(xiàn) 168
5.2 冒泡排序算法 169
5.2.1 冒泡排序算法的原理 169
5.2.2 冒泡排序算法的Java實(shí)現(xiàn) 170
5.3 插入排序算法 171
5.3.1 插入排序算法的原理 171
5.3.2 插入排序算法的Java實(shí)現(xiàn) 172
5.4 快速排序算法 173
5.4.1 快速排序算法的原理 173
5.4.2 快速排序算法的Java實(shí)現(xiàn) 174
5.5 希爾排序算法 175
5.5.1 希爾排序算法的原理 176
5.5.2 希爾排序算法的Java實(shí)現(xiàn) 177
5.6 歸并排序算法 178
5.6.1 歸并排序算法的原理 178
5.6.2 歸并排序算法的Java實(shí)現(xiàn) 178
5.7 桶排序算法 180
5.7.1 桶排序算法的原理 180
5.7.2 桶排序算法的Java實(shí)現(xiàn) 181
5.8 基數(shù)排序算法 182
5.8.1 基數(shù)排序算法的原理 182
5.8.2 基數(shù)排序算法的Java實(shí)現(xiàn) 183
5.9 其他算法 184
5.9.1 剪枝算法 184
5.9.2 回溯算法 186
5.9.3 *短路徑算法 186
第6章 網(wǎng)絡(luò)與負(fù)載均衡 188
6.1 網(wǎng)絡(luò) 188
6.1.1 OSI七層網(wǎng)絡(luò)模型 188
6.1.2 TCP/IP四層網(wǎng)絡(luò)模型 189
6.1.3 TCP三次握手/四次揮手 190
6.1.4 HTTP的原理 195
6.1.5 CDN的原理 199
6.2 負(fù)載均衡 201
6.2.1 四層負(fù)載均衡與七層負(fù)載均衡的對(duì)比 201
6.2.2 負(fù)載均衡算法 203
6.2.3 LVS的原理及應(yīng)用 205
6.2.4 Nginx反向代理與負(fù)載均衡 211
第7章 數(shù)據(jù)庫及分布式事務(wù) 214
7.1 數(shù)據(jù)庫的基本概念及原則 214
7.1.1 存儲(chǔ)引擎 214
7.1.2 創(chuàng)建索引的原則 216
7.1.3 數(shù)據(jù)庫三范式 217
7.1.4 數(shù)據(jù)庫事務(wù) 218
7.1.5 存儲(chǔ)過程 219
7.1.6 觸發(fā)器 219
7.2 數(shù)據(jù)庫的并發(fā)操作和鎖 220
7.2.1 數(shù)據(jù)庫的并發(fā)策略 220
7.2.2 數(shù)據(jù)庫鎖 220
7.2.3 數(shù)據(jù)庫分表 223
7.3 數(shù)據(jù)庫分布式事務(wù) 223
7.3.1 CAP 223
7.3.2 兩階段提交協(xié)議 224
7.3.3 三階段提交協(xié)議 225
7.3.4 分布式事務(wù) 227
第8章 分布式緩存的原理及應(yīng)用 230
8.1 分布式緩存介紹 230
8.2 Ehcache的原理及應(yīng)用 231
8.2.1 Ehcache的原理 231
8.2.2 Ehcache的應(yīng)用 234
8.3 Redis的原理及應(yīng)用 235
8.3.1 Redis的原理 235
8.
OFFER來了:JAVA面試核心知識(shí)點(diǎn)精講(原理篇) 作者簡介
王磊,現(xiàn)任國內(nèi)某知名互聯(lián)網(wǎng)公司大數(shù)據(jù)技術(shù)架構(gòu)師,有十余年豐富的物聯(lián)網(wǎng)及大數(shù)據(jù)研發(fā)和技術(shù)架構(gòu)經(jīng)驗(yàn),對(duì)物聯(lián)網(wǎng)及大數(shù)據(jù)的原理和技術(shù)實(shí)現(xiàn)有深刻的理解。長期從事海外項(xiàng)目的研發(fā)和交付工作,對(duì)異地多活數(shù)據(jù)中心的建設(shè)及高可用、高并發(fā)系統(tǒng)的設(shè)計(jì)有豐富的實(shí)戰(zhàn)經(jīng)驗(yàn)。
- >
羅庸西南聯(lián)大授課錄
- >
巴金-再思錄
- >
中國人在烏蘇里邊疆區(qū):歷史與人類學(xué)概述
- >
莉莉和章魚
- >
中國歷史的瞬間
- >
煙與鏡
- >
上帝之肋:男人的真實(shí)旅程
- >
月亮虎