Java程序員面試筆試寶典 第2版
內容描述
本書是一本講解Java程序員面試筆試的實用工具書。
在寫法上,除了講解如何解答Java程序員面試筆試問題以外,
還引入了相關知識點輔以說明,讓讀者能夠更加容易地理解和掌握。
本書囊括Java程序員面試筆試過程中的各類知識點。
在內容廣度上,蒐集了近3年來幾乎所有IT企業針對Java崗位的筆試面試涉及的知識點,
包括但不限於Java核心知識點(容器、多線程和IO等)、Java Web(Struts、MyBatis、Kafka、Spring等)、數據庫,
所選擇知識點均為企業招聘時所考查的知識點。
在講解的深度上,本書由淺入深,詳細分析每一個知識點,並提煉歸納,
同時,引入相關知識點,並對其進行深度剖析,讓讀者不僅能夠理解每個知識點,
還能在遇到相似問題的時候,也能游刃有餘地解決,而這些內容很多是其他同類書籍所沒有的。
書中根據知識點進行分門別類,結構合理,條理清晰,便於讀者進行學習與檢索。
本書是一本計算機相關專業畢業生面試、筆試的求職用書,
同時也適合期望在計算機軟、硬件行業大顯身手的計算機愛好者閱讀。
目錄大綱
前言
第1部分
Java核心知識
第1章 Java基礎知識/2
1.1 Java程序初始化的順序/2
1.2 構造方法/3
1.3 Java中clone方法的作用/4
1.4 反射/8
1.5 Lambda表達式/11
1.6 多態的實現機制/13
1.7 Overload和Override的區別/14
1.8 abstract class(抽像類)與
interface(接口)的異同/15
1.9 break、continue以及return的
區別/17
1.10 switch使用時的注意事項/17
1.11 volatile的作用/20
1.12 Java基本的數據類型/23
1.13 不可變類/24
1.14 值傳遞與引用傳遞的區別/26
1.15 ++i與i++的區別/29
1.16 字符串創建與存儲的機制/30
1.17 “==”、equals和hashCode的
區別/36
1.18 String、StringBuffer、StringBuilder
和StringTokenizer的區別/37
1.19 finally塊中的代碼什麼時候被
執行/39
1.20 異常處理/42
1.21 常見面試筆試真題/42
第2章 流/52
2.1 輸入輸出流/52
2.1.1 Java IO流的實現機制/52
2.1.2 管理文件和目錄的類/54
2.1.3 Java Socket/55
2.1.4 Java序列化/55
2.2 同步與異步、阻塞與非阻塞/58
2.3 BIO/59
2.4 NIO/60
2.4.1 Buffer/61
2.4.2 Channel/63
2.4.3 Selector/65
2.4.4 AIO/69
2.5 常見面試筆試真題/72
第3章 容器/74
3.1 Collections框架/74
3.2 ArrayList、Vector和LinkedList的
區別/75
3.3 Map/76
3.3.1 HashMap/76
3.3.2 Java8之前的HashMap/78
3.3.3 Java8提供的HashMap/79
3.3.4 TreeMap/80
3.3.5 LinkedhashMap/81
3.3.6 Java8之前的LinkedHashMap/81
3.3.7 Java8中的LinkedHashMap/82
3.3.8 Hashtable/86
3.3.9 WeakHashMap/87
3.3.10 HashMap、HashTable、TreeMap
和WeakHashMap的區別/90
3.3.11 用自定義類型作為HashMap或Hashtable
的key需要注意的問題/90
3.3.12 ConcurrentHashMap/94
3.4 Set/98
3.4.1 HashSet/99
3.4.2 LinkedHashSet/99
3.4.3 TreeSet/100
3.5 BlockingQueue/100
3.5.1 ArrayBlockingQueue/101
3.5.2 LinkedBlockingQueue/103
3.5.3 PriorityBlockingQueue/104
3.5.4 ConcurrentLinkedQueue/106
3.5.5 DelayQueue/108
3.6 Collection 和 Collections的
區別/110
3.7 迭代器/111
3.8 並行數組/112
3.9 常見面試筆試真題/113
第4章 多線程/121
4.1 線程與進程/121
4.2 同步和異步有什麼區別/122
4.3 如何實現Java多線程/122
4.4 run與start的區別/125
4.5 多線程同步/126
4.6 Lock的分類/129
4.7 synchronized與Lock的異同/135
4.8 sleep與wait的區別/139
4.9 終止線程的方法/140
4.10 死鎖/141
4.11 守護線程/141
4.12 join方法的作用/142
4.13 如何捕獲一個線程拋出的
異常/143
4.14 線程池/145
4.14.1 Executor接口/145
4.14.2 ExecutorService/146
4.14.3 ThreadPoolExecutor/147
4.14.4 線程池的使用方法/149
4.15 ThreadLocal/152
4.15.1 應用實例/152
4.15.2 原理解析/153
4.15.3 改進/155
4.16 Latch/155
4.17 Barrier/156
4.18 Java中的Fork/Join框架/157
4.19 CAS/162
4.20 線程調度與優先級/165
4.21 常見面試筆試真題/166
第5章 內存分配/169
5.1 JVM內存劃分/169
5.2 運行時內存劃分/171
5.2.1 年輕代、老年代與永久代/171
5.2.2 元空間MetaSpace/172
5.3 垃圾回收/173
5.3.1 垃圾回收算法/173
5.3.2 串行垃圾回收/175
5.3.3 並行垃圾回收/176
5.3.4 並發標記清理回收/176
5.3.5 G1/178
5.3.6 Shenandoah/180
5.4 Java平台與內存管理/180
5.4.1 為什麼說Java是平台獨立性
語言/180
5.4.2 Java平台與其他語言平台的區別/181
5.4.3 JVM加載class文件的原理機制/181
5.4.4 Java是否存在內存洩漏問題/182
5.4.5 Java中的堆和棧的區別/184
5.4.6 JVM常用的參數/185
5.5 常見面試筆試真題/187
第6章 設計模式/188
6.1 設計模式中的原則/188
6.1.1 單一職責原則/188
6.1.2 開放封閉原則/189
6.1.3 里氏替換原則/191
6.1.4 依賴倒置原則/192
6.1.5 接口隔離原則/193
6.1.6 合成複用原則/194
6.1.7 迪米特法則/195
6.2 單例模式/195
6.3 工廠模式/196
6.4 適配器模式/197
6.5 觀察者模式/198
6.6 常見面試筆試真題/199
第2部分
Java Web核心知識
第7章 Struts/203
7.1 Struts框架/203
7.2 Struts框架響應客戶請求的工作
流程/205
7.3 Struts框架的數據驗證/205
7.4 Form Bean的表單驗證流程/205
7.5 元素包含的屬性/206
7.6 ActionForm Bean的作用/206
7.7 Struts2的請求處理流程/206
7.8 Struts2中的攔截器/207
7.9 Struts2國際化/207
7.10 常見面試筆試真題/208
第8章 MyBatis/209
8.1 MyBatis緩存的基本概念/209
8.2 MyBatis分頁/210
作者介紹
何昊仙桃人,軟件系統湖北軟件,西安電子科技大學計算機與理論碩士。
C/C++/C#/Java等主流編程語言,具有豐富的項目經驗。酷愛體育鍛煉與歷史,並喜歡嘗試各種新鮮的食物。
現職於某知名科研設計單位,從事軟件研究工作,成功指導開發者進入IT名企工作。
編著有《程序員面試筆試寶》、《Java程序員面試筆寶典》、《程序員典編之道》等書。