Offer來了:Java面試核心知識點精講(第2版) 版權信息
- ISBN:9787121435959
- 條形碼:9787121435959 ; 978-7-121-43595-9
- 裝幀:一般膠版紙
- 冊數:暫無
- 重量:暫無
- 所屬分類:>
Offer來了:Java面試核心知識點精講(第2版) 本書特色
——1. 不僅是Java開發者的應試經典,更是面試官的參考題庫——
本書以Java技術為主,從Java基礎、Java生態技術到設計模式等都做了詳細介紹,幫你深入理解Java核心技術,對Java知識點查漏補缺。章節架構由淺入深,內容講解細致入微,對架構及知識點的梳理清晰明了。 ——2. 能幫助讀者梳理Java面試知識脈絡,總結和提升Java技能——
本書從Java基礎、Spring、緩存、分布式到NoSQL等多方面做了應用和原理方面的介紹,各知識點講解力求精簡,直擊痛點,不拖泥帶水。 ——3. 在第1版的基礎上進行內容升級,對Java知識點重新梳理和補充——
本書在第1版的基礎上,對理論基礎、常用算法、應用場景、大廠常用技術框架和數據處理框架等都重新做了知識點梳理和補充。這些內容在大規模、高并發、低延遲的場景的互聯網大規模應用開發中會被頻繁用到。 ——4. 超強Java面試書,一書在手,Offer我有——
作為面試類的圖書,本書全面覆蓋了面試、筆試環節中的各個知識點,并附有詳細的示例代碼,可幫助讀者在提高理論水平的基礎上加強動手能力。
Offer來了:Java面試核心知識點精講(第2版) 內容簡介
本書講解Java面試中常被問及的核心知識點,涉及Java基礎、Java并發編程、JVM、Java高并發網絡編程、Spring基礎、Netflix的原理及應用、Spring Cloud Alibab的原理及應用、數據結構、Java中常用算法的原理及其Java實現、關系數據庫及分布式事務、分布式緩存的原理及應用、ZooKeeper的原理及應用、Kafka的原理及應用、Elasticsearch的原理及應用、設計模式的概念及其Java實現。
本書內容全面、細致,既可幫助讀者迅速查找Java知識點,也可幫助讀者完善其Java知識體系;不但可以作為Java面試知識速通手冊,也可以作為Java程序員的案頭手冊。
Offer來了:Java面試核心知識點精講(第2版) 目錄
》》》第1章 Java基礎 1《《《
1.1 集合 2
1.1.1 List:可重復 2
1.1.2 Queue 3
1.1.3 Set:不可重復 4
1.1.4 Map 5
1.2 異常的分類及處理 8
1.2.1 異常的概念 8
1.2.2 異常的分類 9
1.2.3 處理異常的方式 10
1.3 反射機制 12
1.3.1 動態語言的概念 12
1.3.2 反射機制的概念 12
1.3.3 反射的應用 12
1.3.4 Java的反射API 13
1.3.5 反射的過程 13
1.3.6 創建對象的兩種方式 14
1.3.7 Method的invoke方法 15
1.4 注解 16
1.4.1 注解的概念 16
1.4.2 標準元注解:@Target、@Retention、@Documented、@Inherited 16
1.4.3 注解處理器 17
1.5 內部類 19
1.5.1 靜態內部類 19
1.5.2 成員內部類 20
1.5.3 局部內部類 21
1.5.4 匿名內部類 21
1.6 泛型 22
1.6.1 泛型標記和泛型限定:E、T、K、V、N、? 23
1.6.2 泛型方法 24
1.6.3 泛型類 25
1.6.4 泛型接口 25
1.6.5 類型擦除 26
1.7 序列化 27
1.7.1 Java序列化API的應用 27
1.7.2 Kryo序列化 29
1.7.3 Avro序列化 31
1.7.4 ProtoBuf序列化 33
1.8 Java I/O 35
1.8.1 輸入流和輸出流 35
1.8.2 字節流和字符流 36
1.8.3 節點流和處理流 42
1.8.4 內存映射文件技術 43
》》》第2章 Java并發編程 46《《《
2.1 常見的Java線程的創建方式 47
2.1.1 繼承Thread類 47
2.1.2 實現Runnable接口 48
2.1.3 通過ExecutorService和Callable<Class>接口實現有返回值的線程 49
2.1.4 基于線程池 50
2.2 Java線程池的原理 50
2.2.1 線程復用 51
2.2.2 線程池的核心組件和核心類 51
2.2.3 Java線程池的工作流程 52
2.2.4 線程池的拒絕策略 53
2.3 5種常用的線程池 56
2.3.1 newCachedThreadPool 56
2.3.2 newFixedThreadPool 57
2.3.3 newScheduledThreadPool 57
2.3.4 newSingleThreadExecutor 58
2.3.5 newWorkStealingPool 58
2.4 線程的生命周期 58
2.4.1 新建狀態:New 60
2.4.2 就緒狀態:Runnable 60
2.4.3 阻塞狀態:Blocked 60
2.4.4 等待狀態:Waiting 61
2.4.5 超時等待狀態:Timed_Waiting 61
2.4.6 線程終止:Terminated 61
2.5 線程的基本方法 61
2.5.1 線程等待:wait方法 62
2.5.2 線程睡眠:sleep方法 62
2.5.3 線程讓步:yield方法 62
2.5.4 線程中斷:interrupt方法 62
2.5.5 線程加入:join方法 63
2.5.6 線程喚醒:notify方法 64
2.5.7 后臺守護線程:setDaemon方法 64
2.5.8 sleep方法和wait方法的區別 65
2.5.9 start方法和run方法的區別 65
2.5.10 終止線程的4種方式 65
2.6 Java中的鎖 67
2.6.1 樂觀鎖 68
2.6.2 悲觀鎖 68
2.6.3 自旋鎖 68
2.6.4 synchronized 69
2.6.5 ReentrantLock 77
2.6.6 synchronized與ReentrantLock的對比 83
2.6.7 Semaphore 83
2.6.8 AtomicInteger 84
2.6.9 可重入鎖 85
2.6.10 公平鎖和非公平鎖 85
2.6.11 讀寫鎖 86
2.6.12 共享鎖和獨占鎖 86
2.6.13 重量級鎖和輕量級鎖 87
2.6.14 偏向鎖 87
2.6.15 分段鎖 88
2.6.16 同步鎖和死鎖 88
2.6.17 如何進行鎖優化 88
2.7 線程上下文切換 90
2.7.1 線程上下文切換的流程 90
2.7.2 導致線程上下文切換的原因 91
2.8 Java中的阻塞隊列 91
2.8.1 阻塞隊列的主要操作 92
2.8.2 Java中阻塞隊列的實現 96
2.9 Java并發關鍵字 101
2.9.1 CountDownLatch 101
2.9.2 CyclicBarrier 103
2.9.3 Semaphore 104
2.9.4 volatile的作用 106
2.10 多線程如何共享數據 108
2.10.1 將數據抽象成一個類,將對這個數據的操作封裝在類的方法中 108
2.10.2 將Runnable對象作為一個類的內部類,將共享數據作為其成員變量 109
2.11 Fork/Join并發框架 111
2.11.1 工作竊取算法 111
2.11.2 Fork/Join框架的應用 112
2.11.3 Fork/Join的核心組件 116
2.11.4 Fork/Join的任務調度流程 117
2.12 Java中的線程調度 117
2.12.1 搶占式調度 117
2.12.2 協同式調度 118
2.12.3 Java線程調度的實現:搶占式 119
2.12.4 線程讓出CPU的情況 119
2.13 進程調度算法 119
2.13.1 優先調度算法 119
2.13.2 高優先權優先調度算法 120
2.13.3 時間片的輪轉調度算法 121
2.14 CAS 122
2.14.1 CAS的特性:樂觀鎖 123
2.14.2 CAS自旋等待 123
2.15 ABA問題 124
2.16 AQS 124
2.16.1 AQS的原理 125
2.16.2 state:狀態 125
2.16.3 AQS共享資源的方式:獨占式和共享式 126
2.17 Java 8中的流 127
2.17.1 并行流和串行流的原理 128
2.17.2 流的常用函數 130
2.17.3 流的創建方式 131
2.17.4 流和集合的區別 132
》》》第3章 JVM 133《《《
3.1 JVM結構規范(Java SE 8) 134
3.2 多線程 135
3.3 HotSpot JVM內存模型 136
3.3.1 程序計數器:線程私有,無內存溢出問題 137
3.3.2 Java虛擬機棧:線程私有,描述Java方法的執行過程 137
3.3.3 本地方法棧:線程私有 138
3.3.4 Java堆:線程共享 139
3.3.5 元空間:方法區在HotSpot JVM中的實現,線程共享 139
3.3.6 直接內存 139
3.4 HotSpot JVM堆 140
3.4.1 新生代:Eden區、SurvivorTo區和SurvivorFrom區 140
3.4.2 老年代 141
3.5 垃圾回收的原理與算法 142
3.5.1 如何確定垃圾 142
3.5.2 如何回收垃圾 143
3.6 Java中的4種引用類型 147
3.7 分代回收算法和分區回收算法 148
3.7.1 分代回收算法 148
3.7.2 分區回收算法 148
3.8 垃圾回收器 149
3.8.1 Serial垃圾回收器:單線程,復制算法 150
3.8.2 ParNew垃圾回收器:多線程,復制算法 150
3.8.3 Parallel Scavenge垃圾回收器:多線程,復制算法 150
3.8.4 Serial Old垃圾回收器:單線程,標記整理算法 150
3.8.5 Parallel Old垃圾回收器:多線程,標記整理算法 151
3.8.6 CMS垃圾回收器 152
3.8.7 G1垃圾回收器 152
3.9 JVM的參數配置 153
3.9.1 JVM參數設置入門案例 153
3.9.2 JVM參數設置實戰 154
3.10 JVM的類加載機制 156
3.10.1 JVM的類加載階段 156
3.10.2 類加載器 158
3.10.3 雙親委派機制 159
3.10.4 OSGI 160
3.11 JVM的性能監控與分析工具 161
3.11.1 jps 161
3.11.2 jinfo 162
3.11.3 jstat 162
3.11.4 jstack 163
3.11.5 jmap 164
3.11.6 GC日志分析 166
》》》第4章 Java高并發網絡編程 168《《《
4.1 網絡 169
4.1.1 OSI七層網絡模型 169
4.1.2 TCP/IP四層網絡模型 170
4.1.3 TCP三次握手/四次揮手 171
4.1.4 HTTP的原理 176
4.1.5 CDN的原理 180
4.2 負載均衡 182
4.2.1 四層負載均衡與七層負載均衡的對比 182
4.2.2 負載均衡算法 18
展開全部
Offer來了:Java面試核心知識點精講(第2版) 節選
》》》》》》推薦序1
拿到本書并閱讀之后,作為一個從業二十多年的“大齡”程序員,我不禁回憶起自己經歷豐富的面試官生涯。入行多年以來,我為不同的公司、團隊、產品和項目組面試過許多技能、背景和水平各不相同的程序員,可以說是閱人無數了。每個公司都希望招聘到市場上非常優秀的程序員,每個新手程序員也都想成為“技術大牛”。
這些年的面試經驗和工作經驗告訴我,*好的程序員往往具備兩個突出特點:
(1)不管工作經驗是否豐富,其基礎都非常扎實,無論是操作系統、數據結構和編程語言等基礎知識,還是開發框架的原理和常用算法,都可以信手拈來、觸類旁通;
(2)視野非常開闊,能夠把理論知識和工程實踐非常恰當地結合起來,而不是紙上談兵,并且總能夠根據項目或者產品的實際情況活學活用,找到適合的技術棧和工程方法。
本書幾乎講解了優秀的Java程序員所應掌握的核心技術,可以讓讀者一站式掌握Java新技術生態中的核心知識,同時了解到如何將這些知識運用到具體的工程實踐之中。本書的內容由淺到深、循序漸進,非常豐富和翔實,不僅適合新手程序員入門學習,也適合作為每個程序員的案頭手冊,更適合每個程序員不斷學習。
相信本書不僅能夠幫助面試者在面試過程中做到滴水不漏、揮灑自如,順利拿到心儀的Offer,也能夠幫助在職程序員開拓眼界、不斷提高,成為未來的“技術大牛”。————————西安翼輝愛智物聯技術有限公司研發總監 李強 》》》》》》 推薦序2
我是王磊的大學老師,聽說他的書要再版了,非常開心。我知道他為本書付出了很多心血,但卻把自己在編寫過程中遇到的困難說得云淡風輕。我認真閱讀了他送來的樣書,也非常理解他的寫書初衷:他希望自己的書能成為讀者成長路上的墊腳石。
寫書的人都是真誠的,都相信書是人類進步的階梯,而且一旦進步了,習得了,就成為刻在基因里的能力。我相信他傳遞的是思維,也是方法,更是一種可以終生受益的能力。
王磊的大學同學都戲稱他為“才子”,一是因為他所知甚廣,二是因為他所研甚深。在美麗的大學時光里,他和老師、同學們曾蹲在路邊打開計算機討論軟件操作,腿麻得無法站立,還被蚊子叮得渾身是包;他在讀本科的時候就已經在團隊討論會上給研究生們講技術和算法的原理了,并且能耐心地回答所有問題。我當時就對他說:“我覺得你可以寫書了,你寫的文檔比大學老師寫的書都細致,還更容易上手!”大學畢業前,他果然寫了一本厚厚的書。我非常驚嘆他的行動能力。
在知識產權保護意識越來越強的時代,我希望他的付出能得到社會的認可,也能得到應有的回饋。他帶著滿懷的真誠,認真對待每一顆求知的心!希望他和讀者能相互成就!
————————陜西師范大學地理科學與旅游學院副教授 蘇惠敏 》》》》》》 推薦序3
認真閱讀了王磊寄給我的樣稿,我有驚喜也有感慨:驚喜的是,在公司業務快速發展和系統架構不斷演進的過程中,王磊仍然可以編寫出這樣高質量和高含金量的內容;感慨的是,如果自己在十年前找工作時也能有這樣的知識點完備的圖書,一定會讓自己信心百倍,即使是現在,本書仍然讓我有溫故知新的感受。
每一位做技術的同學,一定都非常喜歡在技術氛圍濃厚、有創造力的團隊里工作,這樣既能感受討論問題時抽絲剝繭和撥云見日的快感,也能體會業務飛漲時跨越巔峰和突破極限的喜悅。王磊作為Java專家加入我們團隊,使得我們團隊的能力板塊得到了補充和加強,也給我們帶來了新的創造力;而且他領導了多個分布式系統的設計和開發,參與了大數據平臺從Lambda架構到Kappa架構的升級,還實現了PB級大數據實時數倉的構建。
在十余年的技術管理工作中,我面試了很多人,發現優秀的人在對原理的掌握和對知識的貫通上都非常突出。只有理解JVM的內存模型和垃圾回收方式,我們才能知道在頻繁Full GC的情況下用什么工具去分析JVM的性能;只有理解同步、異步的底層原理,我們才能知道高并發場景下技術選型的重點;只有理解HBase的存儲引擎原理,我們才能理解在高讀高寫場景下如何應用它,也才能理解冷熱分離的存儲模式的可行性。本書能夠幫助我們梳理這些知識點,*終實現融會貫通的效果。
作為面試類的圖書,本書全面覆蓋了面試、筆試環節中的各個知識點,從Java基礎、Spring實戰、分布式系統的概念、大數據應用等方面層層展開,并附有詳細的示例代碼,可幫助讀者在提高理論水平的基礎上加強動手能力。本書不僅適合正在應聘的應屆生閱讀,對正在從事Java開發、分布式系統應用開發、大數據開發的一線人員也有很高的參考價值。
————————Yeahmobi廣告平臺技術總監 蘆康平
Offer來了:Java面試核心知識點精講(第2版) 作者簡介
王磊 飛輪數據(Apache Doris商業化公司)大數據架構師、阿里云MVP、極客時間“每日一課”專欄作者。對分布式架構、DevOps、Serverless、PB級數據處理等有豐富的實戰經驗,深入理解數據治理、數據湖和實時數倉技術。熱愛技術,喜歡創新,關注社區的技術發展狀態。 已出版的圖書有:
-《Offer來了:Java面試核心知識點精講(原理篇)》
-《Offer來了:Java面試核心知識點精講(框架篇)》
-《圖解Spark:大數據快速分析實戰》