注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)沖刺高薪Offer:Java并發(fā)編程進(jìn)階及面試指南

沖刺高薪Offer:Java并發(fā)編程進(jìn)階及面試指南

沖刺高薪Offer:Java并發(fā)編程進(jìn)階及面試指南

定 價(jià):¥99.90

作 者: 梁建全
出版社: 人民郵電出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

購(gòu)買這本書(shū)可以去


ISBN: 9787115655523 出版時(shí)間: 2025-02-01 包裝: 平裝-膠訂
開(kāi)本: 16開(kāi) 頁(yè)數(shù): 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  本書(shū)是一份旨在幫助Java求職者在面試中脫穎而出的重要指南。本書(shū)涵蓋Java并發(fā)編程的多個(gè)關(guān)鍵主題,如并發(fā)原理和線程安全、并發(fā)關(guān)鍵字原理、并發(fā)鎖和死鎖、并發(fā)容器和工具、并發(fā)線程池以及并發(fā)設(shè)計(jì)與實(shí)戰(zhàn)等。本書(shū)的特色在于將“大廠”“名企”的面試問(wèn)題和實(shí)踐經(jīng)驗(yàn)相結(jié)合,不僅對(duì)面試問(wèn)題和面試官心理進(jìn)行深度剖析,還對(duì)面試問(wèn)題解答和相關(guān)技術(shù)點(diǎn)進(jìn)行詳細(xì)介紹,這樣更有利于讀者全面理解相關(guān)知識(shí)點(diǎn)和技術(shù),并能夠在實(shí)際工作和面試中靈活應(yīng)用。 通過(guò)學(xué)習(xí)本書(shū),讀者可以深入了解“大廠”“名企”的面試問(wèn)題和實(shí)踐經(jīng)驗(yàn)。本書(shū)提供的面試問(wèn)題解答和寶貴經(jīng)驗(yàn)將有助于讀者在實(shí)際工作中提升自己的能力,并在面試中表現(xiàn)更加出色,提高面試成功率,斬獲高薪Offer(職位)。無(wú)論是對(duì)面試準(zhǔn)備還是對(duì)技能提升而言,本書(shū)都是讀者不可或缺的指南,能夠幫助讀者在職業(yè)生涯中取得更大的成功。

作者簡(jiǎn)介

  梁建全,畢業(yè)于北京大學(xué)計(jì)算機(jī)專業(yè),18年以上IT研發(fā)和管理經(jīng)驗(yàn),先后在北大方正、新東方、達(dá)內(nèi)、拉勾網(wǎng)等多家上市企業(yè)擔(dān)任資深架構(gòu)師和技術(shù)總監(jiān)崗位,著有《你必須知道的261個(gè)Java語(yǔ)言問(wèn)題》《輕量級(jí)JavaEE框架整合方案》《ASP.NET開(kāi)發(fā)答疑》《ASP.NET辦公自動(dòng)化開(kāi)發(fā)實(shí)例導(dǎo)航》等多本IT技術(shù)書(shū)籍 ,【西二旗程序員】公號(hào)創(chuàng)辦者,熱衷技術(shù)分享。

圖書(shū)目錄

第1章 并發(fā)原理和線程安全 001
1.1 面試官:談?wù)勀銓?duì)線程和線程安全的理解 001
1.1.1 Java創(chuàng)建和啟動(dòng)線程的方式有哪些?它們之間有什么區(qū)別? 003
1.1.2 Java線程都有哪些狀態(tài)?其狀態(tài)是如何切換的? 006
1.1.3 Java線程使用到了哪些調(diào)度策略? 008
1.1.4 為什么使用并發(fā)編程?需注意哪些問(wèn)題? 010
1.1.5 并發(fā)編程和并行編程有什么區(qū)別? 012
1.1.6 什么是線程同步和阻塞?它們有什么關(guān)系? 013
1.1.7 什么是線程安全?如何確保線程安全? 014
1.2 面試官:介紹JMM與線程安全的關(guān)系 016
1.2.1 什么是JMM?它有哪些特征和作用? 017
1.2.2 JMM和Java內(nèi)存結(jié)構(gòu)有什么區(qū)別? 019
1.2.3 JMM內(nèi)存是如何交互的?都有哪些操作? 020
1.2.4 什么是happens-before原則?它有什么作用? 022
1.2.5 什么是指令重排序和內(nèi)存屏障? 025
1.2.6 如何保證程序的可見(jiàn)性、原子性和有序性? 029
1.3 面試官:談?wù)劧嗑€程中的上下文切換 031
1.3.1 什么是上下文切換?上下文切換會(huì)帶來(lái)哪些問(wèn)題? 033
1.3.2 什么是進(jìn)程上下文切換?引起進(jìn)程上下文切換的原因有哪些? 034
1.3.3 什么是線程上下文切換?與進(jìn)程上下文切換有何區(qū)別? 036
1.3.4 如何查看線程上下文切換信息? 038
1.3.5 如何減少線程上下文切換的次數(shù)? 040
1.4 面試官:談?wù)勀銓?duì)AQS的理解 042
1.4.1 什么是AQS ?它有什么作用? 043
1.4.2 AQS支持哪些資源共享方式? 045
1.4.3 AQS的底層數(shù)據(jù)結(jié)構(gòu)和工作原理是什么? 047
1.4.4 什么是Condition ?它有哪些使用場(chǎng)景? 054
1.4.5 AQS中的Condition是如何實(shí)現(xiàn)的? 056
1.5 面試官:講講CAS實(shí)現(xiàn)機(jī)制和原理 059
1.5.1 什么是CAS ?它有什么作用? 061
1.5.2 Java中有哪些CAS工具?如何使用它們? 062
1.5.3 Unsafe類和CAS有什么關(guān)系? 064
1.5.4 使用CAS會(huì)產(chǎn)生什么問(wèn)題?如何解決這些問(wèn)題? 065

第2章 并發(fā)關(guān)鍵字原理 071
2.1 面試官:談?wù)刦inal關(guān)鍵字對(duì)并發(fā)編程的作用 071
2.1.1 final 關(guān)鍵字的底層原理是什么? 072
2.1.2 final 關(guān)鍵字對(duì)并發(fā)編程有什么作用? 076
2.1.3 為什么final 引用不能從構(gòu)造函數(shù)內(nèi)“逸出”? 079
2.2 面試官:談?wù)剆ynchronized關(guān)鍵字的特性和原理 082
2.2.1 synchronized關(guān)鍵字的底層實(shí)現(xiàn)原理是什么? 085
2.2.2 synchronized關(guān)鍵字是怎么保證線程安全的? 091
2.2.3 synchronized是可重入鎖嗎?其底層如何實(shí)現(xiàn)? 094
2.2.4 Java對(duì)synchronized關(guān)鍵字做了哪些優(yōu)化? 096
2.2.5 說(shuō)說(shuō)synchronized鎖升級(jí)過(guò)程及實(shí)現(xiàn)原理 100
2.2.6 什么是synchronized鎖消除和鎖粗化? 102
2.3 面試官:說(shuō)說(shuō)volatile 關(guān)鍵字的使用及原理 104
2.3.1 volatile 關(guān)鍵字的使用場(chǎng)景有哪些? 107
2.3.2 volatile關(guān)鍵字如何做到內(nèi)存可見(jiàn)性? 111
2.3.3 volatile關(guān)鍵字如何實(shí)現(xiàn)禁止指令重排序? 113
2.3.4 volatile變量的內(nèi)存屏障插入策略是什么? 114
2.3.5 volatile關(guān)鍵字能保證操作的原子性嗎? 115
2.3.6 雙重檢查鎖為什么要使用volatile關(guān)鍵字? 116
2.3.7 volatile和synchronized關(guān)鍵字有什么區(qū)別? 117

第3章 并發(fā)鎖和死鎖 119
3.1 面試官:談?wù)凧ava并發(fā)鎖的使用和原理 119
3.1.1 Java都有哪些鎖?它們有什么區(qū)別? 122
3.1.2 樂(lè)觀鎖和悲觀鎖的應(yīng)用和原理有什么區(qū)別? 124
3.1.3 樂(lè)觀鎖如何解決ABA問(wèn)題? 127
3.1.4 在Java中如何應(yīng)用讀鎖和寫(xiě)鎖? 130
3.1.5 Java獨(dú)享鎖和共享鎖有何區(qū)別? 132
3.1.6 偏向鎖、輕量級(jí)鎖、重量級(jí)鎖是什么? 133
3.1.7 什么是公平鎖?什么是非公平鎖? 135
3.1.8 分段鎖的設(shè)計(jì)思想和目的是什么? 137
3.1.9 什么是可重入鎖?其實(shí)現(xiàn)原理是什么? 140
3.1.10 什么是自旋鎖?它有哪些實(shí)現(xiàn)方式? 142
3.1.11 常用的鎖優(yōu)化手段和方法有哪些? 145
3.2 面試官:如何預(yù)防和解決多線程死鎖? 147
3.2.1 什么是線程死鎖?其產(chǎn)生原因有哪些? 149
3.2.2 如何避免和解決線程死鎖? 152
3.2.3 如何分析和定位死鎖問(wèn)題源頭? 156
3.2.4 什么是饑餓和活鎖?它們與死鎖有什么區(qū)別? 159
3.2.5 什么是鎖的分級(jí)?如何使用它預(yù)防死鎖? 163
3.2.6 Java并發(fā)API有哪些高級(jí)特性可用于避免死鎖? 164

第4章 并發(fā)容器和工具 167
4.1 面試官:談?wù)勀銓?duì)JUC的理解 167
4.1.1 什么是JUC ?它包含哪些內(nèi)容? 169
4.1.2 什么是原子類?它有哪些作用和優(yōu)點(diǎn)? 170
4.1.3 Lock框架有哪些常用的鎖?它們有什么優(yōu)缺點(diǎn)? 172
4.1.4 常用的并發(fā)容器有哪些?適用于哪些場(chǎng)景? 174
4.1.5 同步容器與并發(fā)容器有什么區(qū)別? 177
4.1.6 JUC包含哪些同步工具類?有什么作用? 179
4.2 面試官:談?wù)凧UC容器的實(shí)現(xiàn)原理 181
4.2.1 ConcurrentHashMap的底層存儲(chǔ)結(jié)構(gòu)是什么? 183
4.2.2 ConcurrentHashMap如何保證線程安全? 185
4.2.3 ConcurrentHashMap如何實(shí)現(xiàn)擴(kuò)容? 187
4.2.4 在ConcurrentHashMap中什么情況下鏈表會(huì)轉(zhuǎn)換
為紅黑樹(shù)? 193
4.2.5 什么是Copy-on-Write ?常見(jiàn)的CopyOnWrite容器有哪些? 195
4.2.6 CopyOnWriteArrayList是如何保證線程安全的? 197
4.3 面試官:談?wù)勀銓?duì)并發(fā)隊(duì)列的理解 200
4.3.1 BlockingQueue和BlockingDeque有什么區(qū)別? 201
4.3.2 BlockingQueue阻塞隊(duì)列的實(shí)現(xiàn)原理是什么? 204
4.3.3 ArrayBlockingQueue和LinkedBlockingQueue有什么區(qū)別? 206
4.3.4 SynchronousQueue底層有幾種數(shù)據(jù)結(jié)構(gòu)?有什么區(qū)別? 207
4.3.5 ConcurrentLinkedQueue是如何保證線程安全的? 208
4.4 面試官:介紹JUC同步工具的使用及實(shí)現(xiàn)原理 212
4.4.1 CountDownLatch如何使用?其實(shí)現(xiàn)原理是什么? 214
4.4.2 CyclicBarrier 和CountDownLatch有什么區(qū)別? 216
4.4.3 使用Semaphore需注意哪些問(wèn)題?其底層如何實(shí)現(xiàn)? 219
4.4.4 Exchanger主要解決什么問(wèn)題?實(shí)現(xiàn)機(jī)制是什么? 224
4.5 面試官:談?wù)勀銓?duì)ThreadLocal的理解 230
4.5.1 工作中遇到過(guò)哪些ThreadLocal的使用場(chǎng)景? 231
4.5.2 ThreadLocal底層是如何實(shí)現(xiàn)線程隔離的? 234
4.5.3 為什么ThreadLocal會(huì)導(dǎo)致內(nèi)存泄漏?如何解決? ......235

第5章 并發(fā)線程池 237
5.1 面試官:說(shuō)說(shuō)線程池的設(shè)計(jì)思想和實(shí)現(xiàn)原理 237
5.1.1 什么是線程池?它有哪些適用場(chǎng)景? 240
5.1.2 線程池有哪些狀態(tài)?這些狀態(tài)如何轉(zhuǎn)換? 242
5.1.3 線程池主要有哪些參數(shù)?它們有什么作用? 244
5.1.4 核心線程和非核心線程有什么區(qū)別? 247
5.1.5 Java線程池的線程復(fù)用原理是什么? 249
5.1.6 線程池是如何進(jìn)行任務(wù)調(diào)度的? 255
5.1.7 線程池為什么要使用阻塞隊(duì)列? 258
5.1.8 Java線程池的底層實(shí)現(xiàn)原理是什么? 259
5.2 面試官:談?wù)勀闶褂肑ava線程池的一些經(jīng)驗(yàn) 262
5.2.1 Java有哪些類型的線程池?它們各自適用于什么場(chǎng)景? 265
5.2.2 為什么不推薦使用Executors創(chuàng)建線程池? 269
5.2.3 如何合理配置Java線程池的參數(shù)? 270
5.2.4 Java線程池線程拋出的異常該如何處理? 273
5.2.5 如何優(yōu)雅且安全地關(guān)閉一個(gè)線程池? 276
5.2.6 如何監(jiān)控和優(yōu)化線程池的性能? 277

第6章 并發(fā)設(shè)計(jì)與實(shí)戰(zhàn) 283
6.1 面試官:講講并發(fā)編程中有哪些常用的線程操作 283
6.1.1 如何正確處理一個(gè)線程發(fā)生的異常? 285
6.1.2 如何正確停止一個(gè)正在運(yùn)行的線程? 288
6.1.3 如何喚醒一個(gè)阻塞的線程? 290
6.1.4 如何保證多個(gè)線程的執(zhí)行順序? 294
6.1.5 如何在兩個(gè)線程之間共享數(shù)據(jù)? 298
6.1.6 怎么檢查一個(gè)線程是否持有某個(gè)對(duì)象鎖? 304
6.2 面試官:談?wù)劜l(fā)編程中的一些設(shè)計(jì)實(shí)踐和經(jīng)驗(yàn) 306
6.2.1 如何解決單例模式的線程安全問(wèn)題? 307
6.2.2 如何使用阻塞隊(duì)列來(lái)實(shí)現(xiàn)生產(chǎn)者- 消費(fèi)者模型? 310
6.2.3 如何使用AQS實(shí)現(xiàn)互斥鎖? 312
6.2.4 怎樣設(shè)計(jì)一個(gè)線程池? 314
6.2.5 設(shè)計(jì)一個(gè)并發(fā)系統(tǒng),如何確保系統(tǒng)不會(huì)出現(xiàn)死鎖? 316

本目錄推薦

掃描二維碼
Copyright ? 讀書(shū)網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)