Java應用開發關鍵技術與面試技巧(簡體書)
商品資訊
ISBN13:9787302676874
出版社:清華大學出版社(大陸)
作者:周冠亞
出版日:2025/01/01
裝訂/頁數:平裝/606頁
規格:26cm*18.5cm (高/寬)
版次:一版
商品簡介
作者簡介
周冠亞(筆名無雙)
上海交大軟件工程碩士,先後就職於大潤發、美團點評和中國電信等,現就職於移動互聯網行業一家知名智能製造公司,對高並發、高可用、高性能、海量數據的分布式複雜系統的架
構設計有豐富經驗,先後負責過電商、支付、營銷、供應、製造等業務領域的研發工作,現階段主要從事企業架構相關工作。在企業內經常參與招聘面試,最高記錄一年面試超400人。出版著作:《Spring 5企業級開發實戰》(與人合著)。作者個人技術星球:【IT職場說】
名人/編輯推薦
《Java應用開發關鍵技術與面試技巧》從架構師與面試官的雙重視角出發,全面而系統地梳理了當前主流的Java應用開發關鍵技術及面試中可能涉及的核心知識點。內容覆蓋基本概念、技術原理,直至項目實踐和解決方案,為讀者提供了詳盡且實用的指導。此外,書中還收錄了大量高頻面試題,供候選人進行實戰演練。
隨著Java生態系統的迅速發展,企業在招聘過程中對候選人的專業能力提出了更高的要求。對於求職者而言,能否深入理解並掌握相關技術的廣度與深度,往往成為決定其能否脫穎而出的關鍵因素之一。通過閱讀《Java應用開發關鍵技術與面試技巧》,不僅能夠幫助您提升自身的軟件開發技能,還能讓您在激烈的求職競爭環境中更好地了解行業需求,明確個人定位,解決困惑,從而最終贏得理想的工作機會。
序
隨著Java生態系統的快速發展,軟件開發行業對軟件質量和性能等方面的訴求也在不斷增加,這導致企業在招聘時對候選人的專業能力要求更為嚴格。如何在當前激烈的招聘競爭中脫穎而出,獲得滿意的Offer,這是每個求職者都非常關注的問題。
作為曾面試超過400多位應聘者的一個資深開發人,筆者寫作本書的目的,一是幫助讀者梳理Java企業級開發中用到的關鍵技術,以提升讀者的技能水平;二是試圖為讀者提供一個了解行業需求的面試指南,以幫助讀者獲得滿意的工作機會。
以下是筆者的一些想法。
【宏觀視角】
你不應該只將自己定位成執行代碼的機器,而應該主動培養自己的架構能力和全局視角,以實現向架構師的成功轉型。
本書介紹並總結了目前行業主流的Java應用開發技術,包括概念、原理剖析、產品優缺點和技術選型等,旨在幫助讀者構建全局的系統架構視角,使你在面試時可以站在架構師或團隊Leader的視角與面試官就技術、架構、管理、團隊和職場等方面進行深入交流。
例如本書第3章介紹高並發分流,筆者從20多年的Web 1.0時代開始講起,逐步講解企業系統架構的演進過程,分析為什麼現在大多數企業都要採用分布式、為什麼越來越多的面試題都跟高並發相關。
又如本書第9章介紹ShardingSphere,該技術並非現代企業的技術,因為很多企業的用戶體量、數據規模還很小,還沒有ShardingSphere的用武之地。筆者講解了在什麼樣的業務場景、用戶體量和數據規模下選擇ShardingSphere是明智之舉。
本書的定位不僅僅是為了使你可以應對日常工作,還為你自身的發展和未來有可能應對的高並發、海量數據場景做準備。
【微觀洞察】
開源項目提供了透明度,使得開發者可以查看並學習技術組件的內部實現,從而更好地掌握和使用這些技術。但開源軟件也有一定的弊端,如開源軟件是技術愛好者利用業余時間兼職創作的,少不了有一些缺陷(bug)。為了幫助讀者理解複雜系統的工作方式,在系統出現故障時快速分析和定位問題,本書對很多工具或技術進行了源碼級別的分析,其意義在於:
(1)源碼解讀可以幫助你加深對編程語言、設計模式、算法和數據結構等專業知識的理解。
(2)在技術面試中展示對源碼的熟悉和理解可以提高你的職業競爭力,增加獲得理想工作的 機會。
(3)對源碼的深入理解可以提升個人在團隊中的技術領導力,使你能夠更好地指導和帶領團隊。
(4)隨著技術深度的提升,你將更有可能獲得晉升機會,向架構師、技術經理等高級職位邁進。
(5)深入理解源碼可以增強你的技術決策能力,幫助你在項目中做出更明智的技術選型。
例如本書第1章介紹Spring,筆者對Spring IoC、BeanFactory和FactoryBean等Spring的關鍵源碼進行了分析,使讀者可以更好地理解Spring,為日後學習和理解其他技術框架的源碼打下基礎(很多技術組件,如數據庫連接池、MQ等技術都會用到第1章中分析的源代碼)。
又如本書第2章介紹MyBatis,要知道很多企業系統中存在大量的慢SQL,這不僅會影響系統的性能,而且存在一定的安全隱患——隨著時間的積累,企業系統中積累的數據越來越多,大量的慢SQL最終會導致系統崩潰。如果能夠優雅地監控系統中的慢SQL,你需要懂得MyBatis插件機制的工作原理,這樣才能開發出優雅的慢SQL監控插件,為團隊產生額外的價值。
【面試預測】
仔細復習面試題不僅能夠提高獲得工作的機會,還能夠促進個人技術成長、增強職業技能,並為未來的職業發展打下堅實的基礎。面試題可以幫助你評估自己的技術水平,識別知識盲點,了解當前市場上的技術趨勢和最新技術,促使你不斷學習和更新知識。
本書介紹的每一種技術都配有高頻面試題及答案,通過面試題的復習,讀者可以更好地了解行業需求,幫助自己在市場上定位。
筆者還創建了免費的星球【IT職場說】,會在其中不斷更新面試題及答案,歡迎讀者的加入。
【面試洞察】
技術實力是基礎,但在面試時的臨門一腳同樣至關重要。例如,面試官會考查你的職業熱情(面試時的熱情和對工作的興趣可以感染面試官,展示你對職業的熱愛)、文化契合度(面試官會通過你的言行舉止來評估你是否符合公司文化)、職業規劃(你如何談論自己的職業規劃和目標,可以反映你對未來的規劃和期望)、誠信和專業(面試中的言行是否一致,可以體現你的誠信和專業性)、綜合能力展示(面試是展示個人技術能力、問題解決能力、溝通能力等綜合能力的機會)、溝通技巧(技術實力需要通過有效的溝通技巧來表達,這對於評估你是否適合團隊環境很重要)、壓力管理(面試時的臨場發揮可以體現你在壓力下工作和管理壓力的能力)、個人潛力(面試官會通過面試時的臨場表現來評估你的潛力)。
例如本書第19章的面試技巧中,筆者對簡歷編寫、個人亮點塑造、投遞簡歷的策略、可能遇到的面試形式、面試技巧和面試總結等方面做了總結,助你在面試前知己知彼,在面試中披荊斬棘,在面試後總結經驗。
最後,感謝王金柱、王葉編輯的熱情指導,感謝出版社其他人員的辛勤工作,感謝筆者的家人一直以來的支持,感謝各位師長的諄諄教導。沒有他們的鼎力相助,本書就無法順利完成。
如果你在閱讀本書時遇到問題,請發郵件至booksaga@126.com獲得幫助,郵件標題為“Java應用開發關鍵技術與面試技巧”。
周冠亞
2024年8月
目次
第1篇 應用框架
第 1 章 Spring 2
1.1 Spring概述 2
1.1.1 Spring是什麼 2
1.1.2 Spring的優點是什麼 3
1.2 IoC 3
1.2.1 軟件設計的七大原則分別是什麼 4
1.2.2 依賴倒置原則與案例分析 5
1.2.3 控制反轉與案例分析 6
1.2.4 Spring IoC的配置方式有哪些 11
1.2.5 BeanFactory是什麼 18
1.2.6 FactoryBean及其應用案例 23
1.2.7 BeanDefinition是什麼 34
1.2.8 ApplicationContext是什麼 54
1.2.9 Spring IoC的啟動過程是什麼 60
1.3 AOP 82
1.3.1 AOP是什麼 82
1.3.2 企業開發中常用的AOP技術 83
1.3.3 JDK動態代理使用案例 84
1.3.4 JDK動態代理的工作原理 87
1.3.5 CGLib動態代理使用案例 91
1.3.6 CGLib動態代理的工作原理 93
1.3.7 Spring AOP使用案例 104
1.3.8 Spring AOP代理方式的選擇 107
1.4 Spring事務管理 108
1.4.1 事務的ACID特性 108
1.4.2 事務並發執行引發的問題 109
1.4.3 事務隔離級別及案例分析 109
1.4.4 Spring事務傳播行為 115
1.4.5 Spring事務使用案例 116
1.4.6 Spring Boot自動事務配置 118
1.4.7 Spring事務管理原理 128
1.5 Spring Web MVC 146
1.5.1 Spring Boot搭建MVC案例 146
1.5.2 Spring MVC的工作原理及關鍵代碼分析 148
1.6 Spring面試押題 165
1.6.1 Spring IoC的設計思想是什麼 166
1.6.2 BeanFactory和FactoryBean有什麼區別 166
1.6.3 BeanFactory和ApplicationContext有什麼區別 166
1.6.4 Spring Bean的生命周期包含哪些過程 167
1.6.5 Spring Bean的作用域有哪幾種 167
1.6.6 Spring如何解決循環依賴 168
1.6.7 Spring的自動裝配是如何實現的 168
1.6.8 Spring框架中使用到哪些常用的設計模式 168
1.6.9 Spring框架中有哪些類型的事件 169
1.6.10 什麼是AOP 169
1.6.11 引入AOP能解決什麼問題 169
1.6.12 項目中使用AOP的場景 170
1.6.13 AOP中有哪些比較重要的概念 170
1.6.14 什麼是JDK動態代理 170
1.6.15 什麼是CGLib動態代理 171
1.6.16 JDK動態代理與CGLib動態代理有什麼區別 171
1.6.17 Spring AOP中有哪些Advice類型 171
1.6.18 動態代理與靜態代理的區別是什麼 172
1.6.19 什麼是事務,為什麼需要事務 172
1.6.20 事務有哪些特性 172
1.6.21 MySQL支持哪些事務隔離級別 173
1.6.22 Spring中有哪些事務傳播行為 173
1.6.23 Spring事務在什麼場景下會失效 174
1.6.24 Spring事務管理遇到哪些異常不會回滾 174
1.6.25 什麼是Spring MVC 174
1.6.26 Spring MVC的主要組件有哪些 174
1.6.27 DispatcherServlet是什麼,它有什麼作用 175
1.6.28 Spring MVC中的控制器是不是線程安全的 175
1.6.29 Spring MVC的工作流程 175
1.6.30 Spring MVC與Struts2有哪些異同點 176
第 2 章 MyBatis 177
2.1 MyBatis概述 177
2.2 Spring Boot集成MyBatis案例 178
2.3 使用MyBatis Generator案例分析 181
2.4 MyBatis緩存分為哪幾種 184
2.5 MyBatis一級緩存有哪些特性 185
2.5.1 一級緩存默認是開啟的 185
2.5.2 一級緩存可以優化查詢效率 185
2.5.3 一級緩存會因修改而失效 186
2.5.4 一級緩存僅在會話內共享 188
2.6 MyBatis一級緩存的原理是什麼 189
2.6.1 SqlSession分析 190
2.6.2 SqlSessionFactory分析 192
2.6.3 Executor分析 192
2.6.4 Cache分析 193
2.6.5 一級緩存執行原理分析 194
2.7 MyBatis二級緩存有哪些特性 200
2.7.1 二級緩存非默認開啟 200
2.7.2 在事務提交前二級緩存不生效 201
2.7.3 在事務提交後二級緩存會生效 202
2.7.4 當發生更新時二級緩存會被刷新 204
2.8 MyBatis二級緩存的原理是什麼 205
2.9 如何編寫MyBatis插件 211
2.9.1 實現Interceptor接口 211
2.9.2 MyBatis插件植入 212
2.9.3 MyBatis插件執行邏輯 214
2.10 簡述MyBatis執行SQL的過程 215
2.10.1 MyBatis創建代理物件分析 216
2.10.2 MyBatis代理物件邏輯分析 218
2.10.3 SQL語句執行過程分析 223
2.11 MyBatis面試押題 227
2.11.1 什麼是MyBatis 227
2.11.2 MyBatis有哪些優缺點 227
2.11.3 MyBatis框架的適用場景有哪些 227
2.11.4 MyBatis與Hibernate有哪些異同點 228
2.11.5 MyBatis中的#{}和${}的區別是什麼 228
2.11.6 Mapper接口的工作原理是什麼 229
2.11.7 MyBatis分頁插件的原理是什麼 230
2.11.8 簡述MyBatis緩存的工作原理 231
2.11.9 為什麼MyBatis是半自動ORM框架 231
2.11.10 如何提升基於MyBatis開發的應用程序的性能 231
2.11.11 MyBatis如何實現數據庫的讀寫分離 232
第2篇 分布式高並發
第 3 章 高並發分流 234
3.1 分布式架構概念解釋 234
3.2 企業系統架構的演進歷程 235
3.2.1 單機架構 235
3.2.2 第一次演進:Web服務器與數據庫獨立部署 236
3.2.3 第二次演進:引入本地緩存和分布式緩存 237
3.2.4 第三次演進:引入反向代理 237
3.2.5 第四次演進:引入數據庫讀寫分離 238
3.2.6 第五次演進:引入按業務拆分數據庫 238
3.2.7 第六次演進:引入分庫分表 240
3.2.8 第七次演進:引入使用LVS或F5 240
3.2.9 第八次演進:通過DNS實現機房間的負載均衡 241
3.2.10 第九次演進:引入NoSQL/NewSQL等技術 242
3.2.11 第十次演進:應用拆分 243
3.2.12 第十一次演進:引入ESB架構 244
3.2.13 第十二次演進:微服務拆分 245
3.2.14 第十三次演進:引入容器化架構 246
3.2.15 第十四次演進:引入云平臺架構 247
3.3 Nginx反向代理與負載均衡 248
3.3.1 正向代理 249
3.3.2 反向代理 249
3.4 Nginx配置詳解 251
3.5 OpenResty 255
3.5.1 OpenResty的安裝 255
3.5.2 OpenResty限流案例 256
3.6 高並發分流面試押題 258
3.6.1 什麼是分布式架構 258
3.6.2 什麼是面向服務的架構 258
3.6.3 什麼是微服務架構 258
3.6.4 SOA架構和微服務架構的區別和聯繫 259
3.6.5 什麼是容器化架構 259
3.6.6 正向代理與反向代理的區別是什麼 260
3.6.7 微服務拆分的依據 260
3.6.8 OpenResty和Nginx的區別與聯繫 261
3.6.9 如何使用Nginx實現灰度發布 261
第 4 章 分布式協調服務 263
4.1 ZooKeeper的基礎知識 263
4.1.1 什麼是ZooKeeper 263
4.1.2 什麼是CAP理論 263
4.1.3 ZooKeeper對CAP的支持 265
4.1.4 ZooKeeper與其他注冊中心對比 265
4.2 ZooKeeper有哪些節點類型 265
4.3 ZooKeeper節點有哪幾種角色 266
4.4 什麼是ZooKeeper的Watch機制 267
4.5 什麼是ZooKeeper ACL權限控制 268
4.6 Paxos算法的原理是什麼 269
4.6.1 分布式系統面臨的挑戰 269
4.6.2 分布式系統難題的轉換 270
4.6.3 Paxos算法的執行過程 271
4.6.4 Paxos算法示例 273
4.7 基於Paxos的優化算法有哪些 275
4.7.1 Multi Paxos算法 275
4.7.2 Fast Paxos算法 275
4.8 ZAB協議的原理是什麼 276
4.8.1 原子廣播 276
4.8.2 故障恢復 278
4.8.3 ZXID生成規則 279
4.9 ZooKeeper代碼分析 279
4.9.1 ZooKeeper單機模式代碼分析 281
4.9.2 ZooKeeper集群模式代碼分析 284
4.9.3 ZooKeeper Leader選舉代碼分析 288
4.10 ZooKeeper面試押題 297
4.10.1 什麼是ZooKeeper 297
4.10.2 ZooKeeper的節點類型有哪些 298
4.10.3 ZooKeeper保障的是CP還是AP機制 298
4.10.4 ZooKeeper是如何實現通知機制的 298
4.10.5 ZooKeeper的節點有哪幾種角色 299
4.10.6 簡述Paxos算法的原理 299
4.10.7 簡述ZAB協議的原理 299
4.10.8 如何利用ZooKeeper實現分布式鎖 300
4.10.9 ZooKeeper在哪些中間件中被使用 300
4.10.10 ZooKeeper腦裂問題及其處理辦法 301
第 5 章 Dubbo 302
5.1 Dubbo架構解析 302
5.1.1 Dubbo組件架構 302
5.1.2 Dubbo分層架構 303
5.2 Dubbo如何實現集群容錯 304
5.2.1 Failover Cluster 304
5.2.2 Failfast Cluster 304
5.2.3 Failsafe Cluster 304
5.2.4 Failback Cluster 304
5.2.5 Forking Cluster 304
5.2.6 Broadcast Cluster 305
5.2.7 Available Cluster 305
5.2.8 Mergeable Cluster 305
5.2.9 ZoneAware Cluster 305
5.2.10 Dubbo集群容錯代碼分析 305
5.3 Dubbo如何實現負載均衡 308
5.3.1 加權隨機策略 308
5.3.2 加權輪詢策略 308
5.3.3 加權最少活躍策略 309
5.3.4 加權最短響應策略 309
5.3.5 一致性哈希策略 309
5.4 Dubbo的線程模型是什麼 312
5.4.1 IO線程 313
5.4.2 業務線程 314
5.5 Dubbo跨多注冊中心的能力 314
5.6 Dubbo服務分組 319
5.7 Dubbo SPI機制的原理是什麼 320
5.7.1 SPI和API的區別和聯繫 320
5.7.2 JDK SPI機制的實現 320
5.7.3 JDK SPI機制原理分析 322
5.7.4 Dubbo SPI機制的使用方式 327
5.7.5 Dubbo SPI機制原理分析 331
5.8 Dubbo面試押題 336
5.8.1 Dubbo的核心功能有哪些 336
5.8.2 Dubbo的核心組件有哪些 337
5.8.3 簡述Dubbo服務注冊與發現的流程 337
5.8.4 簡述主流RPC框架的異同點 338
5.8.5 Dubbo支持哪些負載均衡策略 338
5.8.6 Dubbo負載均衡在客戶端還是服務端實現 338
5.8.7 Dubbo支持的通信協議 338
5.8.8 簡述Dubbo SPI與Java SPI的異同點 339
5.8.9 Dubbo如何實現服務提供方失效移除 339
5.8.10 如何合理地設置Dubbo超時時間 340
第 6 章 Redis 341
6.1 Redis常用的數據類型 341
6.1.1 String 341
6.1.2 List 342
6.1.3 Hash 342
6.1.4 Set 343
6.1.5 Zset 343
6.2 Redis支持哪些數據結構 343
6.2.1 簡單動態字符串 344
6.2.2 鏈表 344
6.2.3 跳躍表 345
6.2.4 壓縮列表 345
6.2.5 哈希表 346
6.2.6 整數集合 348
6.3 Redis如何實現持久化 349
6.3.1 RDB 349
6.3.2 AOF 351
6.4 Redis主從部署架構的原理是什麼 352
6.5 Redis哨兵部署架構 353
6.5.1 Redis哨兵架構的工作流程 353
6.5.2 主觀下線 354
6.5.3 客觀下線 354
6.5.4 Redis哨兵仲裁 355
6.5.5 哨兵領導者選舉規約 355
6.5.6 哨兵領導者選舉過程 356
6.5.7 Redis哨兵架構故障轉移 356
6.6 Redis集群部署架構 357
6.6.1 Redis集群架構的工作原理 357
6.6.2 Redis集群架構數據分片 358
6.6.3 Redis集群架構搭建 358
6.6.4 Redis集群架構擴容 362
6.6.5 Redis集群架構收縮 368
6.6.6 Redis集群架構選舉 369
6.7 緩存一致性解決方案有哪些 369
6.7.1 方案一:先更新數據庫後更新緩存 369
6.7.2 方案二:先更新緩存後更新數據庫 370
6.7.3 方案三:先刪除緩存後更新數據庫 370
6.7.4 方案四:先更新數據庫後刪除緩存 371
6.7.5 方案五:緩存延時雙刪解決方案 372
6.7.6 方案六:監聽數據庫解決方案 374
6.8 緩存預熱方案有哪些 374
6.9 緩存穿透及解決方案 375
6.10 緩存擊穿及解決方案 377
6.11 緩存雪崩及解決方案 377
6.12 布隆過濾器及適用場景 378
6.13 熱點緩存識別及解決方案 380
6.13.1 熱點緩存識別 380
6.13.2 熱點緩存解決方案 380
6.14 Redis面試押題 381
6.14.1 Redis是什麼 381
6.14.2 簡述企業開發中使用到Redis緩存的場景 381
6.14.3 Redis與Guava Cache有哪些異同點 382
6.14.4 Redis與Memcached相比有哪些異同點 383
6.14.5 Redis為什麼能實現高性能 384
6.14.6 Redis支持哪些數據類型 384
6.14.7 Redis內部的數據結構有哪些 384
6.14.8 如何使用Redis實現計數器 384
6.14.9 如何使用Redis實現消息隊列的發布訂閱 384
6.14.10 如何使用Redis實現分布式鎖 385
6.14.11 Redis支持的持久化機制有哪些 385
6.14.12 Redis過期鍵的刪除策略有哪些 386
6.14.13 Redis的內存淘汰策略有哪些 386
6.14.14 Redis的線程模型是什麼 386
6.14.15 Redis事務有哪些優缺點 387
6.14.16 Redis的部署架構有哪些 387
6.14.17 什麼是緩存穿透 387
6.14.18 什麼是緩存擊穿 388
6.14.19 什麼是緩存雪崩 388
6.14.20 Jedis與Redisson有哪些異同點 388
第 7 章 RocketMQ 389
7.1 核心概念 389
7.1.1 Producer 389
7.1.2 Consumer 390
7.1.3 Broker 390
7.1.4 Topic 390
7.1.5 Message Queue 391
7.1.6 Tag 391
7.1.7 NameServer 391
7.1.8 集群消費 391
7.1.9 廣播消費 391
7.1.10 分區順序消息 391
7.1.11 全局順序消息 391
7.1.12 RocketMQ消息模型 392
7.2 RocketMQ如何實現事務消息 393
7.3 RocketMQ如何實現順序消息 396
7.4 RocketMQ如何實現延遲消息 400
7.5 RocketMQ如何實現消息重試 404
7.5.1 生產者消息重試 404
7.5.2 消費者消息重試 404
7.5.3 消息冪等 405
7.6 RocketMQ如何實現死信消息 405
7.7 RocketMQ如何實現消息過濾 406
7.7.1 基於tag的消息過濾 406
7.7.2 基於SQL表達式的消息過濾 408
7.7.3 基於消費者端的消息過濾 410
7.8 RocketMQ如何實現消息負載均衡 410
7.8.1 生產者端負載均衡 410
7.8.2 消費者端負載均衡 411
7.9 如何解決消息積壓問題 411
7.9.1 消息積壓的場景 411
7.9.2 消息積壓的解決方案 412
7.10 RocketMQ面試押題 412
7.10.1 企業開發中使用MQ的場景有哪些 412
7.10.2 簡述RocketMQ的架構 413
7.10.3 RocketMQ如何實現消息過濾 413
7.10.4 如何保障RocketMQ的消息不重不丟 413
7.10.5 RocketMQ如何實現事務消息 413
7.10.6 什麼是RocketMQ的半消息 413
7.10.7 RocketMQ的刷盤機制是什麼 414
7.10.8 RocketMQ如何實現負載均衡 414
7.10.9 什麼是RocketMQ的死信隊列 414
7.10.10 什麼是消息冪等 414
7.10.11 什麼是RocketMQ的推模式和拉模式 415
7.10.12 RocketMQ如何實現順序消息 415
7.10.13 RocketMQ如何實現延遲消息 415
7.10.14 簡述RocketMQ、RabbitMQ和Kafka之間的異同點 415
第 8 章 Kafka 417
8.1 Kafka的核心概念 417
8.1.1 Kafka的基本概念 417
8.1.2 Kafka的核心API 418
8.2 Kafka消息處理原理 419
8.2.1 Kafka架構原理 419
8.2.2 Kafka的存儲機制 420
8.2.3 Kafka副本機制 423
8.2.4 Kafka ISR機制 423
8.2.5 Kafka HW&LEO 424
8.3 Kafka有哪些消息語義 425
8.3.1 at most once 425
8.3.2 at least once 425
8.3.3 exactly once 426
8.4 Kafka消息丟失的場景有哪些 426
8.4.1 生產者消息丟失 426
8.4.2 Broker消息丟失 426
8.4.3 消費者消息丟失 427
8.5 Kafka控制器的選舉流程是什麼 427
8.6 Kafka分區副本的選舉策略有哪些 430
8.7 Kafka的協調器有哪些 430
8.7.1 消費者協調器 431
8.7.2 組協調器 431
8.8 Kafka的分區重平衡機制有哪些 433
8.8.1 RangeAssignor 433
8.8.2 RoundRobinAssignor 434
8.8.3 StickyAssignor 434
8.9 Kafka消費者的提交方式有哪些 434
8.10 Kafka面試押題 435
8.10.1 Kafka是什麼 435
8.10.2 Kafka Replicas是如何管理的 435
8.10.3 Kafka中如何確定當前應該讀取什麼消息 436
8.10.4 Kafka生產者發送消息有哪些模式 437
8.10.5 Kafka如何實現負載均衡 437
8.10.6 Kafka的Topic分區數越多越好嗎 438
8.10.7 如何增強Kafka消費者的消費能力 439
8.10.8 Kafka控制器是什麼 439
8.10.9 Kafka為什麼高性能 440
8.10.10 Kafka如何使用零拷貝 441
第 9 章 ShardingSphere 442
9.1 ShardingSphere的組成 442
9.1.1 ShardingSphere-JDBC 442
9.1.2 ShardingSphere-Proxy 443
9.1.3 ShardingSphere-Sidecar 443
9.2 核心概念 444
9.2.1 分庫 444
9.2.2 分表 445
9.2.3 垂直分片 445
9.2.4 水平分片 445
9.2.5 表 446
9.2.6 數據節點 447
9.2.7 分片算法 447
9.3 ShardingSphere如何實現分布式主鍵 448
9.4 ShardingSphere支持哪些類型的事務 449
9.4.1 LOCAL事務 449
9.4.2 XA事務 450
9.4.3 BASE事務 451
9.5 ShardingSphere如何實現讀寫分離 451
9.5.1 主庫和從庫 452
9.5.2 主從同步 452
9.5.3 ShardingSphere讀寫分離支持 452
9.6 ShardingSphere支持哪些數據分片算法 452
9.7 ShardingSphere-JDBC的工作原理是什麼 453
9.7.1 SQL解析 453
9.7.2 SQL路由 454
9.7.3 SQL改寫 454
9.7.4 SQL執行 454
9.7.5 結果歸並 454
9.8 ShardingSphere面試押題 455
9.8.1 ShardingSphere是什麼 455
9.8.2 ShardingSphere支持哪些數據庫 455
9.8.3 企業開發中哪些場景會用到ShardingSphere 456
9.8.4 ShardingSphere的核心功能有哪些 456
9.8.5 ShardingSphere支持的數據分片技術有哪些 457
9.8.6 數據分片技術有哪些優缺點 457
9.8.7 ShardingSphere與Mycat有哪些異同點 458
9.8.8 數據分片技術和分布式數據庫之間如何權衡 459
9.8.9 如何優化一張大數據量表的查詢速度 459
第 10 章 分布式事務 461
10.1 什麼是強一致性事務 461
10.2 分布式架構理論基礎 462
10.2.1 什麼是CAP理論 462
10.2.2 什麼是BASE理論 463
10.2.3 什麼是2PC 463
10.2.4 什麼是3PC 464
10.3 Atomikos分布式事務 465
10.3.1 TransactionsEssentials 466
10.3.2 ExtremeTransactions 467
10.4 TCC分布式事務 468
10.4.1 2PC和3PC的缺點 468
10.4.2 TCC的原理 468
10.4.3 TCC的改進 469
10.5 Saga分布式事務 469
10.5.1 Saga編排模式 470
10.5.2 Saga控制模式 471
10.6 Seata分布式事務 473
10.6.1 AT一階段 474
10.6.2 AT二階段 475
10.6.3 AT寫隔離 475
10.6.4 AT讀隔離 477
10.7 基於MQ的分布式事務 478
10.7.1 可靠的消息生產和消費 478
10.7.2 非可靠的消息生產和消費 480
10.8 分布式事務面試押題 481
10.8.1 什麼是分布式事務 481
10.8.2 企業開發中產生分布式事務的場景有哪些 481
10.8.3 強一致性、弱一致性和最終一致性的異同點 482
10.8.4 什麼是CAP理論 482
10.8.5 什麼是BASE理論 482
10.8.6 分布式事務常見的解決方案有哪些 483
10.8.7 簡述工作中遇到的分布式事務場景及挑戰 483
10.8.8 簡述常見的中間件及其面臨的分布式事務問題 484
第 11 章 MongoDB 485
11.1 MongoDB支持哪些數據類型 485
11.2 MongoDB的核心概念 486
11.2.1 數據庫 486
11.2.2 集合 486
11.2.3 文檔 487
11.2.4 數據字段/域 487
11.2.5 索引 487
11.2.6 主鍵 488
11.3 MongoDB支持的索引類型 488
11.3.1 單鍵索引 488
11.3.2 復合索引 489
11.3.3 多鍵索引 489
11.3.4 地理空間索引 489
11.3.5 全文索引 489
11.3.6 哈希索引 489
11.4 MongoDB的執行計劃 490
11.5 MongoDB的索引原理是什麼 494
11.6 MongoDB集群搭建 495
11.6.1 主從復制架構 495
11.6.2 副本集架構 496
11.6.3 分片集群架構 497
11.7 MongoDB面試押題 498
11.7.1 什麼是MongoDB 498
11.7.2 簡述MongoDB與傳統關係數據庫的異同點 499
11.7.3 簡述MongoDB與MySQL數據庫中的概念對比 500
11.7.4 簡述MongoDB與CouchBase的異同點 500
11.7.5 MongoDB中的分析器有什麼用途 501
11.7.6 MongoDB的主節點和從節點如何實現數據同步 501
11.7.7 MongoDB的ObjectId生成規則是什麼 502
11.7.8 企業開發中使用MongoDB的場景有哪些 502
11.7.9 在MongoDB中如何處理事務 502
11.7.10 MongoDB的寫關注是什麼 503
第 12 章 Elasticsearch 504
12.1 Elasticsearch的特性有哪些 504
12.2 核心概念 504
12.2.1 索引 504
12.2.2 索引別名 505
12.2.3 類型 506
12.2.4 文檔 506
12.2.5 分詞 506
12.2.6 分詞器 507
12.2.7 keyword 514
12.2.8 text 514
12.3 什麼是倒排索引 514
12.3.1 正排索引 515
12.3.2 倒排索引 515
12.3.3 單詞索引 516
12.3.4 FST 517
12.4 Elasticsearch如何實現集群發現 519
12.5 分片和副本 520
12.5.1 分片 520
12.5.2 副本 520
12.5.3 索引寫入流程 520
12.6 Elasticsearch的存儲原理是什麼 521
12.6.1 Segment 521
12.6.2 文檔寫入 522
12.6.3 Refresh 523
12.6.4 Translog 523
12.6.5 Segment合並 525
12.7 Elasticsearch如何實現一致性 526
12.7.1 寫一致性 526
12.7.2 讀一致性 526
12.8 Elasticsearch面試押題 526
12.8.1 什麼是Elasticsearch 526
12.8.2 什麼是倒排索引 527
12.8.3 Elasticsearch與Solr有哪些異同點 527
12.8.4 Elasticsearch支持的分詞器有哪些 528
12.8.5 Elasticsearch中的keyword和text有什麼區別 529
12.8.6 Elasticsearch中的query和filter有什麼區別 529
12.8.7 簡述Elasticsearch的數據寫入流程 530
12.8.8 Elasticsearch的數據是如何存儲的 531
12.8.9 Elasticsearch如何保證讀寫一致性 531
12.8.10 簡述Elasticsearch的分布式原理 532
12.8.11 如何使用Elasticsearch解決深分頁問題 533
12.8.12 什麼是Elasticsearch Bulk API 534
第3篇 微服務架構
第 13 章 微服務架構演進 536
13.1 單體架構 536
13.2 垂直架構 537
13.3 面向服務的架構 537
13.4 微服務架構 539
13.5 微服務架構演進面試押題 540
13.5.1 什麼是微服務架構 540
13.5.2 微服務架構常用的RPC框架有哪些 540
13.5.3 微服務架構常用的注冊中心框架有哪些 541
13.5.4 微服務架構常用的負載均衡框架有哪些 542
13.5.5 微服務架構常用的網關框架有哪些 543
13.5.6 微服務架構常用的流量管控框架有哪些 543
13.5.7 微服務架構常用的配置中心框架有哪些 544
13.5.8 簡述企業開發中的微服務架構 544
第 14 章 Eureka 546
14.1 Eureka的核心概念 546
14.1.1 服務提供方 546
14.1.2 服務消費方 546
14.1.3 Eureka Server 546
14.1.4 Eureka Client 546
14.2 Eureka的工作流程是什麼 547
14.3 Eureka的集群原理是什麼 548
14.4 Eureka面試押題 548
14.4.1 什麼是Eureka 548
14.4.2 Eureka中的服務消費方如何感知服務提供方 549
14.4.3 Eureka中的服務消費方如何選擇服務提供方 549
14.4.4 Eureka中的服務消費方如何感知服務提供方下線 550
14.4.5 簡述Eureka、Nacos和ZooKeeper的異同點 550
14.4.6 Eureka保證了CAP中的哪幾點 551
第 15 章 Ribbon 552
15.1 Ribbon的工作原理是什麼 552
15.2 Ribbon支持哪些負載均衡策略 553
15.2.1 RoundRobinRule 553
15.2.2 WeightedResponseTimeRule 554
15.2.3 RandomRule 555
15.2.4 BestAvailableRule 556
15.2.5 RetryRule 557
15.2.6 AvailabilityFilteringRule 558
15.2.7 ZoneAvoidanceRule 559
15.3 Ribbon面試押題 560
15.3.1 什麼是Ribbon 560
15.3.2 Ribbon與Nginx有哪些異同點 560
15.3.3 Ribbon支持哪些負載均衡策略 562
15.3.4 如何實現自定義的Ribbon負載均衡策略 562
第 16 章 OpenFeign 563
16.1 OpenFeign與Feign有哪些異同點 563
16.2 OpenFeign的架構原理 564
16.3 OpenFeign的實現原理是什麼 564
16.4 OpenFeign面試押題 567
16.4.1 什麼是OpenFeign 567
16.4.2 OpenFeign與Feign有哪些異同點 568
16.4.3 OpenFeign的工作原理是什麼 568
16.4.4 OpenFeign與Dubbo有哪些異同點 568
16.4.5 OpenFeign與RestTemplate有什麼區別 569
第 17 章 Hystrix 571
17.1 Hystrix的核心概念 571
17.1.1 限流 571
17.1.2 隔離 571
17.1.3 降級 572
17.1.4 熔斷 572
17.1.5 緩存 572
17.1.6 合並 573
17.2 Hystrix的工作流程是什麼 573
17.3 Hystrix面試押題 574
17.3.1 什麼是Hystrix 574
17.3.2 Hystrix的工作流程是什麼 574
17.3.3 Hystrix如何實現請求緩存 575
17.3.4 Hystrix如何實現限流 575
17.3.5 Hystrix如何實現熔斷 575
17.3.6 什麼場景會觸發Hystrix降級 576
17.3.7 簡述Hystrix、Sentinel和Resilience4j之間的異同點 576
第 18 章 API網關 578
18.1 API網關概述 578
18.2 多種API網關對比 579
18.2.1 Nginx 579
18.2.2 Zuul 579
18.2.3 Kong 580
18.2.4 Gateway 581
18.3 API網關面試押題 583
18.3.1 什麼是API網關 583
18.3.2 對比常見的API網關 583
18.3.3 如何在網關實現用戶統一鑒權 583
18.3.4 如何在網關實現灰度發布 584
第4篇 面試技巧
第 19 章 面試籌劃 586
19.1 簡歷構造 586
19.1.1 個人信息 586
19.1.2 個人優勢 588
19.1.3 期望職位 588
19.1.4 工作經歷 589
19.1.5 項目經歷 589
19.1.6 教育經歷 590
19.2 面試攻略 591
19.2.1 海投簡歷 591
19.2.2 小試牛刀 591
19.2.3 厚積薄發 592
19.3 面試心態 593
19.3.1 候選人分析 593
19.3.2 面試官分析 595
19.4 面試刷題 597
19.4.1 機試刷題 597
19.4.2 現場面試刷題 597
19.5 面試技巧 599
19.5.1 合格性面試 599
19.5.2 合適性面試 599
19.5.3 冰山模型 600
19.5.4 面試方法 601
19.6 面試跟進 603
19.7 面試總結 604
參考文獻 607
主題書展
更多書展購物須知
大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。
特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。
無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。
為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。
若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。



















