注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計算機/網(wǎng)絡(luò)軟件與程序設(shè)計瘋狂Java面試講義:數(shù)據(jù)結(jié)構(gòu)、算法與技術(shù)素養(yǎng)

瘋狂Java面試講義:數(shù)據(jù)結(jié)構(gòu)、算法與技術(shù)素養(yǎng)

瘋狂Java面試講義:數(shù)據(jù)結(jié)構(gòu)、算法與技術(shù)素養(yǎng)

定 價:¥108.00

作 者: 李剛 著
出版社: 電子工業(yè)出版社
叢編項:
標(biāo) 簽: 暫缺

ISBN: 9787121409370 出版時間: 2021-04-01 包裝: 平裝
開本: 16開 頁數(shù): 452 字?jǐn)?shù):  

內(nèi)容簡介

  本書內(nèi)容分為四個部分,其中第一部分主要介紹Java內(nèi)存管理,這部分是大多數(shù)Java程序員很容易忽略的地方——因為Java不像C語言,而且Java提供了垃圾回收機制,因此導(dǎo)致許多Java程序員對內(nèi)存管理重視不夠;第二部分主要介紹Java編程過程中各種常見的陷阱,這些陷阱有的來自李剛老師早年的痛苦經(jīng)歷,有的來自他的眾多學(xué)生的痛苦經(jīng)歷,都是Java程序員在編程過程中的“前車之鑒”,希望讀者能引以為戒;第三部分主要介紹學(xué)習(xí)Java必備的算法基礎(chǔ)知識,包括常用數(shù)據(jù)結(jié)構(gòu)的各種算法實現(xiàn),這部分內(nèi)容是大多數(shù)Java程序員重視不夠的地方,也是大廠面試的常考面試題;第四部分主要介紹Java程序開發(fā)的方法、經(jīng)驗等,它們是李剛老師多年的實際開發(fā)經(jīng)驗、培訓(xùn)經(jīng)驗的總結(jié),符合初學(xué)者的習(xí)慣,更能滿足初學(xué)者的需要,因此掌握這些開發(fā)方法、經(jīng)驗可以更有效地進(jìn)行開發(fā)。

作者簡介

  李剛,十余年軟件開發(fā)從業(yè)經(jīng)驗,瘋狂軟件教育中心教學(xué)總監(jiān)。瘋狂Java實訓(xùn)營創(chuàng)始人,瘋狂Java體系原創(chuàng)圖書作者。CSDN特邀講師。培訓(xùn)的學(xué)生已在騰訊、阿里、華為、IBM、網(wǎng)易等名企就職。國內(nèi)知名高端IT技術(shù)圖書作家,已出版《瘋狂Java講義》《瘋狂Python講義》《瘋狂Android講義》《輕量級Java EE企業(yè)應(yīng)用實戰(zhàn)》《瘋狂前端開發(fā)講義》《瘋狂HTML5/CSS3/JavaScript講義》等著作。其中瘋狂Java體系圖書均已沉淀多年,贏得極高的市場認(rèn)同,多次重印,多部著作印刷數(shù)量超過10萬冊,并被多所“985”“211”院校選作教材,部分圖書已被翻譯成繁體中文版,授權(quán)到寶島臺灣。

圖書目錄

第1章  數(shù)組及其內(nèi)存管理  

1.1  數(shù)組初始化  

1.1.1  Java數(shù)組是靜態(tài)的  

1.1.2  數(shù)組一定要初始化嗎  

1.1.3  基本類型數(shù)組的初始化  

1.1.4  引用類型數(shù)組的初始化  

1.2  使用數(shù)組

1.2.1  數(shù)組元素就是變量

1.2.2  沒有多維數(shù)組

1.3  本章小結(jié)

 

第2章  對象及其內(nèi)存管理

2.1  實例變量和類變量

2.1.1  實例變量和類變量的屬性

2.1.2  實例變量的初始化時機

2.1.3  類變量的初始化時機

2.2  父類構(gòu)造器

2.2.1  隱式調(diào)用和顯式調(diào)用

2.2.2  訪問子類對象的實例變量

2.2.3  調(diào)用被子類重寫的方法

2.3  父、子實例的內(nèi)存控制

2.3.1  繼承成員變量和繼承方法的區(qū)別

2.3.2  內(nèi)存中子類實例

2.3.3  父、子類的類變量

2.4  final修飾符

2.4.1  final修飾的變量

2.4.2  執(zhí)行“宏替換”的變量

2.4.3  final方法不能被重寫

2.4.4  內(nèi)部類中的局部變量

2.5  本章小結(jié)

 

第3章  常見Java集合的實現(xiàn)細(xì)節(jié)

3.1  Set和Map

3.1.1  Set和Map的關(guān)系

3.1.2  HashMap和HashSet

3.1.3  TreeMap和TreeSet

3.2  Map和List

3.2.1  Map的values()方法

3.2.2  Map和List的關(guān)系

3.3  ArrayList和LinkedList

3.3.1  Vector和ArrayList的區(qū)別

3.3.2  ArrayList和LinkedList的實現(xiàn)差異

3.3.3  ArrayList和LinkedList的性能分析及適用場景

3.4  Iterator迭代器

3.4.1  Iterator實現(xiàn)類與迭代器模式

3.4.2  迭代時刪除指定元素

3.5  本章小結(jié) 

 

第4章  Java的內(nèi)存回收 

4.1  Java引用的種類 

4.1.1  對象在內(nèi)存中的狀態(tài) 

4.1.2  強引用 

4.1.3  軟引用 

4.1.4  弱引用 

4.1.5  虛引用 

4.2  Java的內(nèi)存泄漏 

4.3  垃圾回收機制 

4.3.1  垃圾回收的基本算法 

4.3.2  堆內(nèi)存的分代回收 

4.3.3  與垃圾回收相關(guān)的附加選項 

4.3.4  常見的垃圾回收器 

4.4  內(nèi)存管理小技巧 

4.4.1  盡量使用直接量 

4.4.2  使用StringBuilder和StringBuffer進(jìn)行字符串連接 

4.4.3  盡早釋放無用對象的引用 

4.4.4  盡量少用靜態(tài)變量 

4.4.5  避免在經(jīng)常調(diào)用的方法、循環(huán)中創(chuàng)建Java對象 

4.4.6  緩存經(jīng)常使用的對象 

4.4.7  避免使用finalize方法 

4.4.8  考慮使用SoftReference 

4.5  本章小結(jié) 

 

第5章  表達(dá)式中的陷阱 

5.1  關(guān)于字符串的陷阱 

5.1.1  JVM對字符串的處理 

5.1.2  不可變的字符串 

5.1.3  字符串比較 

5.2  表達(dá)式類型的陷阱 

5.2.1  表達(dá)式類型的自動提升 

5.2.2  復(fù)合賦值運算符的陷阱 

5.2.3  二進(jìn)制整數(shù)的陷阱 

5.3  輸入法導(dǎo)致的陷阱 

5.4  注釋字符必須合法 

5.5  轉(zhuǎn)義字符的陷阱 

5.5.1  慎用字符的Unicode轉(zhuǎn)義形式 

5.5.2  中止行注釋的轉(zhuǎn)義字符 

5.6  泛型可能引起的錯誤 

5.6.1  原始類型變量的賦值 

5.6.2  原始類型帶來的擦除 

5.6.3  創(chuàng)建泛型數(shù)組的陷阱 

5.7  正則表達(dá)式的陷阱 

5.8  多線程的陷阱 

5.8.1  不要調(diào)用run方法 

5.8.2  靜態(tài)的同步方法 

5.8.3  靜態(tài)初始化塊啟動新線程執(zhí)行初始化 

5.8.4  注意多線程執(zhí)行環(huán)境 

5.9  本章小結(jié) 

 

第6章  流程控制的陷阱 

6.1  switch語句的陷阱 

6.1.1  default分支永遠(yuǎn)會執(zhí)行嗎 

6.1.2  break的重要性 

6.1.3  switch支持的數(shù)據(jù)類型 

6.2  標(biāo)簽引起的陷阱 

6.3  if語句的陷阱 

6.3.1  else隱含的條件 

6.3.2  小心空語句 

6.4  循環(huán)體的花括號 

6.4.1  什么時候可以省略花括號 

6.4.2  省略花括號的危險 

6.5  for循環(huán)的陷阱 

6.5.1  分號惹的禍 

6.5.2  小心循環(huán)計數(shù)器的值 

6.5.3  浮點數(shù)作為循環(huán)計數(shù)器 

6.6  foreach循環(huán)的循環(huán)計數(shù)器 

6.7  流式編程的陷阱 

6.7.1  map與flatMap的區(qū)別 

6.7.2  collect與map的區(qū)別 

6.8  本章小結(jié) 

 

第7章  面向?qū)ο蟮南葳?nbsp;

7.1  instanceof運算符的陷阱 

7.2  構(gòu)造器的陷阱 

7.2.1  構(gòu)造器之前的void 

7.2.2  構(gòu)造器創(chuàng)建對象嗎 

7.2.3  無限遞歸的構(gòu)造器 

7.3  持有當(dāng)前類的實例 

7.4  到底調(diào)用哪個重載的方法 

7.5  方法重寫的陷阱 

7.5.1  重寫private方法 

7.5.2  重寫其他訪問權(quán)限的方法 

7.6  非靜態(tài)內(nèi)部類的陷阱 

7.6.1  非靜態(tài)內(nèi)部類的構(gòu)造器 

7.6.2  非靜態(tài)內(nèi)部類不能擁有靜態(tài)成員 

7.6.3  非靜態(tài)內(nèi)部類的子類 

7.7  static關(guān)鍵字 

7.7.1  靜態(tài)方法屬于類 

7.7.2  靜態(tài)內(nèi)部類的限制 

7.8  native方法的陷阱 

7.9  本章小結(jié) 

 

第8章  異常處理的陷阱 

8.1  正確關(guān)閉資源的方式 

8.1.1  傳統(tǒng)關(guān)閉資源的方式 

8.1.2  使用自動關(guān)閉資源的try語句 

8.2  finally塊的陷阱 

8.2.1  finally的執(zhí)行規(guī)則 

8.2.2  finally塊和方法返回值 

8.3  catch塊的用法 

8.3.1  catch塊的順序 

8.3.2  不要用catch代替流程控制 

8.3.3  應(yīng)該只catch可能拋出的異常 

8.3.4  做點實際的修復(fù) 

8.4  繼承得到的異常 

8.5  本章小結(jié) 

 

第9章  線性表 

9.1  線性表概述 

9.1.1  線性表的定義及邏輯結(jié)構(gòu) 

9.1.2  線性表的基本操作 

9.2  順序存儲結(jié)構(gòu) 

9.3  鏈?zhǔn)酱鎯Y(jié)構(gòu) 

9.3.1  單鏈表上的基本運算 

9.3.2  循環(huán)鏈表 

9.3.3  雙向鏈表 

9.4  線性表的分析 

9.4.1  線性表的實現(xiàn)分析 

9.4.2  線性表的功能 

9.5  本章小結(jié) 

 

第10章  棧和隊列 

10.1  棧 

10.1.1  棧的基本定義 

10.1.2  棧的常用操作 

10.1.3  棧的順序存儲結(jié)構(gòu)及實現(xiàn) 

10.1.4  棧的鏈?zhǔn)酱鎯Y(jié)構(gòu)及實現(xiàn) 

10.1.5  Java集合中的棧 

10.2  隊列 

10.2.1  隊列的基本定義 

10.2.2  隊列的常用操作 

10.2.3  隊列的順序存儲結(jié)構(gòu)及實現(xiàn) 

10.2.4  循環(huán)隊列 

10.2.5  隊列的鏈?zhǔn)酱鎯Y(jié)構(gòu)及實現(xiàn) 

10.2.6  Java集合中的隊列 

10.3  雙端隊列 

10.4  本章小結(jié) 

 

第11章  樹和二叉樹 

11.1  樹的概述 

11.1.1  樹的定義和基本術(shù)語 

11.1.2  樹的基本操作 

11.1.3  父節(jié)點表示法 

11.1.4  子節(jié)點鏈表示法 

11.2  二叉樹 

11.2.1  二叉樹的定義和基本概念 

11.2.2  二叉樹的基本操作 

11.2.3  二叉樹的順序存儲 

11.2.4  二叉樹的二叉鏈表存儲 

11.2.5  二叉樹的三叉鏈表存儲 

11.3  遍歷二叉樹 

11.3.1  先序遍歷 

11.3.2  中序遍歷 

11.3.3  后序遍歷 

11.3.4  廣度優(yōu)先(按層)遍歷 

11.4  轉(zhuǎn)換方法 

11.4.1  森林、樹和二叉樹的轉(zhuǎn)換 

11.4.2  樹的鏈表存儲 

11.5  哈夫曼樹 

11.5.1  哈夫曼樹的定義和基本概念 

11.5.2  創(chuàng)建哈夫曼樹 

11.5.3  哈夫曼編碼 

11.6  排序二叉樹 

11.7  紅黑樹 

11.7.1  插入操作 

11.7.2  刪除操作 

11.8  本章小結(jié) 

 

第12章  常見的內(nèi)部排序 

12.1  排序的基本概念 

12.1.1  排序概述 

12.1.2  內(nèi)部排序的分類 

12.2  選擇排序法 

12.2.1  直接選擇排序 

12.2.2  堆排序 

12.3  交換排序 

12.3.1  冒泡排序 

12.3.2  快速排序 

12.4  插入排序 

12.4.1  直接插入排序 

12.4.2  折半插入排序 

12.4.3  Shell排序 

12.5  歸并排序 

12.6  桶式排序 

12.7  基數(shù)排序 

12.8  本章小結(jié) 

 

第13章  程序開發(fā)經(jīng)驗談 

13.1  扎實的基本功 

13.1.1  快速的輸入能力 

13.1.2  編程實現(xiàn)能力 

13.1.3  快速排錯 

13.2  程序開發(fā)之前 

13.2.1  分析軟件的組件模型 

13.2.2  建立軟件的數(shù)據(jù)模型 

13.3  厘清程序的實現(xiàn)流程 

13.3.1  各組件如何通信 

13.3.2  人機交互的實現(xiàn) 

13.3.3  復(fù)雜算法的分析 

13.4  編寫開發(fā)文檔 

13.4.1  繪制建模圖、流程圖 

13.4.2  提供簡要說明 

13.4.3  編寫偽碼實現(xiàn) 

13.5  編碼實現(xiàn)和開發(fā)心態(tài) 

13.5.1  開發(fā)是復(fù)雜的 

13.5.2  開發(fā)過程是漫長的 

13.6  本章小結(jié) 

 

第14章  程序調(diào)試經(jīng)驗談 

14.1  程序的可調(diào)試性 

14.1.1  增加注釋 

14.1.2  使用日志 

14.2  程序調(diào)試的基本方法 

14.2.1  借助于編譯器的代碼審查 

14.2.2  跟蹤程序執(zhí)行流程 

14.2.3  斷點調(diào)試 

14.2.4  隔離調(diào)試 

14.2.5  錯誤重現(xiàn) 

14.3  記錄常見錯誤 

14.3.1  常見異??赡艿腻e誤原因 

14.3.2  常見運行時異??赡艿腻e誤原因 

14.4  程序調(diào)試的整體思路 

14.4.1  分段調(diào)試 

14.4.2  分模塊調(diào)試 

14.5  調(diào)試心態(tài) 

14.5.1  誰都會出錯 

14.5.2  調(diào)試比寫程序更費時 

14.6  本章小結(jié) 

 

第15章  IDE工具心法談 

15.1  何時開始利用IDE工具 

15.2  IDE工具概述 

15.2.1  IDE工具的基本功能 

15.2.2  常見的Java  IDE工具 

15.3  項目管理 

15.3.1  建立項目 

15.3.2  自動編譯 

15.3.3  自動部署、運行 

15.4  代碼管理 

15.4.1  代碼生成器 

15.4.2  代碼提示 

15.4.3  自動代碼補齊 

15.4.4  實時錯誤提示 

15.5  項目調(diào)試 

15.5.1  設(shè)置斷點 

15.5.2  單步調(diào)試 

15.5.3  步入、步出 

15.6  團隊協(xié)作功能 

15.7  本章小結(jié) 

 

第16章  軟件測試經(jīng)驗談 

16.1  軟件測試概述 

16.1.1  軟件測試的概念和目的 

16.1.2  軟件測試的分類 

16.1.3  開發(fā)活動和測試活動 

16.1.4  常見的Bug管理工具 

16.2  單元測試 

16.2.1  單元測試概述 

16.2.2  單元測試的邏輯覆蓋 

16.2.3  JUnit介紹 

16.2.4  JUnit  5.x的用法 

16.3  系統(tǒng)測試和自動化測試 

16.3.1  系統(tǒng)測試概述 

16.3.2  自動化測試 

16.3.3  常見的自動化測試工具 

16.4  性能測試 

16.4.1  性能測試概述 

16.4.2  性能測試相關(guān)概念 

16.4.3  常見的性能測試工具 

16.5  本章小結(jié) 

 


本目錄推薦

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