《Kotlin程式設計師面試算法寶典》是機械工業出版社出版的圖書,作者是孫偉,楚秦。
基本介紹
- 中文名:Kotlin程式設計師面試算法寶典
- 作者:孫偉、楚秦
- 出版時間:2018年12月
- 出版社:機械工業出版社
- 頁數:308 頁
- ISBN:9787111612124
- 定價:69 元
- 裝幀:平裝
內容簡介,圖書目錄,作者簡介,
內容簡介
本書是一本講解程式設計師面試筆試算法的書籍。在寫法上,除了講解如何解答算法問題以外,還引入了例子輔以說明,以便讀者能夠更加容易地理解。 本書將程式設計師面試筆試過程中的各類算法類真題一網打盡。在題目的廣度上,通過各種渠道,蒐集了近3年來幾乎所有IT企業面試筆試算法高頻題目,所選擇題目均為企業招聘使用題目;在題目的深度上,本書由淺入深、庖丁解牛式地分析每一個題目,並提煉歸納,同時,引入例子與原始碼、時間複雜度與空間複雜度的分析,這些內容是其他同類書籍所沒有的。本書結構合理,條理清晰,根據真題所屬知識點進行分類,對於讀者進行學習與檢索意義重大。 本書是一本計算機相關專業畢業生面試筆試的求職用書,也可以作為本科生、研究生學習數據結構與算法的輔導書籍,同時也適合期望在計算機軟硬體行業大顯身手的計算機愛好者閱讀。
圖書目錄
前言
面試筆試經驗技巧篇
經驗技巧1 如何巧妙地回答面試官的問題2
經驗技巧2 如何回答技術性問題3
經驗技巧3 如何回答非技術性問題4
經驗技巧4 如何回答快速估算類問題5
經驗技巧5 如何回答算法設計問題6
經驗技巧6 如何回答系統設計問題8
經驗技巧7 如何解決求職中的時間衝突問題11
經驗技巧8 如果面試問題曾經遇見過,是否要告知面試官12
經驗技巧9 被企業拒絕後是否可以再申請12
經驗技巧10 如何應對自己不會回答的問題13
經驗技巧11 如何應對面試官的“激將法”語言13
經驗技巧12 如何處理與面試官持不同觀點的問題14
經驗技巧13 什麼是職場暗語15
面試筆試真題解析篇
第1章 鍊表20
1.1 如何實現鍊表的逆序20
1.2 如何從無序鍊表中移除重複項25
1.3 如何計算兩個單鍊表所代表的數之和28
1.4 如何對鍊表進行重新排序32
1.5 如何找出單鍊表中的倒數第k個元素35
1.6 如何檢測一個較大的單鍊表是否有環38
1.7 如何把鍊表相鄰元素翻轉41
1.8 如何把鍊表以K個結點為一組進行翻轉43
1.9 如何合併兩個有序鍊表46
1.10 如何在只給定單鍊表中某個結點的指針的情況下刪除該結點48
1.11 如何判斷兩個單鍊表(無環)是否交叉50
1.12 如何展開連結列表54
第2章 棧、佇列與哈希57
2.1 如何實現棧57
2.2 如何實現佇列61
2.3 如何翻轉棧的所有元素66
2.4 如何根據入棧序列判斷可能的出棧序列69
2.5 如何用O(1)的時間複雜度求棧中最小元素71
2.6 如何用兩個棧模擬佇列操作73
2.7 如何設計一個排序系統74
2.8 如何實現LRU快取方案76
2.9 如何從給定的車票中找出旅程77
2.10 如何從數組中找出滿足a+b=c+d的兩個數對79
第3章 二叉樹81
3.1 二叉樹基礎知識81
3.2 如何把一個有序整數數組放到二叉樹中82
3.3 如何從頂部開始逐層列印二叉樹結點數據84
3.4 如何求一棵二叉樹的最大子樹和86
3.5 如何判斷兩棵二叉樹是否相等88
3.6 如何把二叉樹轉換為雙向鍊表90
3.7 如何判斷一個數組是否是二元查找樹後序遍歷的序列92
3.8 如何找出排序二叉樹上任意兩個結點的最近共同父結點93
3.9 如何複製二叉樹100
3.10 如何在二叉樹中找出與輸入整數相等的所有路徑101
3.11 如何對二叉樹進行鏡像反轉103
3.12 如何在二叉排序樹中找出第一個大於中間值的結點105
3.13 如何在二叉樹中找出路徑最大的和108
3.14 如何實現反向DNS查找快取109
第4章 數組113
4.1 如何找出數組中唯一的重複元素113
4.2 如何查找數組中元素的最大值和最小值119
4.3 如何找出旋轉數組中的最小元素122
4.4 如何找出數組中丟失的數125
4.5 如何找出數組中出現奇數次的數127
4.6 如何找出數組中第k小的數130
4.7 如何求數組中兩個元素的最小距離133
4.8 如何求解最小三元組距離135
4.9 如何求數組中絕對值最小的數140
4.10 如何求數組連續最大和143
4.11 如何找出數組中出現1次的數147
4.12 如何對數組旋轉149
4.13 如何在不排序的情況下求數組中的中位數151
4.14 如何求集合的所有子集152
4.15 如何對數組進行循環移位155
4.16 如何在有規律的二維數組中進行高效的數據查找158
4.17 如何尋找最多的覆蓋點160
4.18 如何判斷請求能否在給定的存儲條件下完成161
4.19 如何按要求構造新的數組163
4.20 如何獲取最好的矩陣鏈相乘方法165
4.21 如何求解迷宮問題167
4.22 如何從三個有序數組中找出它們的公共元素169
4.23 如何求兩個有序集合的交集171
4.24 如何對有大量重複數字的數組排序174
4.25 如何對任務進行調度178
4.26 如何對磁碟分區179
第5章 字元串181
5.1 如何求一個字元串的所有排列181
5.2 如何求兩個字元串的最長公共子串187
5.3 如何對字元串進行反轉190
5.4 如何判斷兩個字元串是否為換位字元串193
5.5 如何判斷兩個字元串的包含關係195
5.6 如何對由大小寫字母組成的字元數組排序197
5.7 如何消除字元串的內嵌括弧198
5.8 如何判斷字元串是否是整數200
5.9 如何實現字元串的匹配203
5.10 如何求字元串里的最長回文子串206
5.11 如何按照給定的字母序列對字元數組排序213
5.12 如何判斷一個字元串是否包含重複字元215
5.13 如何找到由其他單詞組成的最長單詞217
5.14 如何統計字元串中連續的重複字元個數219
5.15 如何求最長遞增子序列的長度220
5.16 求一個串中出現的第一個最長重複子串222
5.17 如何求解字元串中字典序最大的子序列223
5.18 如何判斷一個字元串是否由另外一個字元串旋轉得到226
5.19 如何求字元串的編輯距離227
5.20 如何在二維數組中尋找最短路線230
5.21 如何截取包含中文的字元串232
5.22 如何求相對路徑234
5.23 如何查找到達目標詞的最短鏈長度235
第6章 基本數字運算238
6.1 如何判斷一個自然數是否是某個數的平方238
6.2 如何判斷一個數是否為2的n次方240
6.3 如何不使用除法操作符實現兩個正整數的除法241
6.4 如何只使用++操作符實現加減乘除運算246
6.5 如何根據已知隨機數生成函式計算新的隨機數248
6.6 如何判斷1024!末尾有多少個0250
6.7 如何按要求比較兩個數的大小251
6.8 如何求有序數列的第1500個數的值252
6.9 如何把十進制數(long型)分別以二進制和十六進制形式輸出253
6.10 如何求二進制數中1的個數254
6.11 如何找最小的不重複數256
6.12 如何計算一個數的n次方259
6.13 如何在不能使用庫函式的條件下計算n的平方根262
6.14 如何不使用^操作實現異或運算262
6.15 如何不使用循環輸出1~100264
第7章 排列組合與機率265
7.1 如何求數字的組合265
7.2 如何拿到最多金幣267
7.3 如何求正整數n所有可能的整數組合269
7.4 如何用一個隨機函式得到另外一個隨機函式271
7.5 如何等機率地從大小為n的數組中選取m個整數272
7.6 如何組合1、2和5這三個數使其和為100273
7.7 如何判斷有幾盞燈泡還亮著275
第8章 排序277
8.1 如何進行選擇排序277
8.2 如何進行插入排序278
8.3 如何進行冒泡排序280
8.4 如何進行歸併排序282
8.5 如何進行快速排序285
8.6 如何進行希爾排序287
8.7 如何進行堆排序289
8.8 各種排序算法有什麼優劣291
第9章 大數據292
9.1 如何從大量的url中找出相同的url292
9.2 如何從大量數據中找出高頻詞293
9.3 如何找出訪問百度最多的IP294
9.4 如何在大量的數據中找出不重複的整數294
9.5 如何在大量的數據中判斷一個數是否存在295
9.6 如何查詢最熱門的查詢串296
9.7 如何統計不同電話號碼的個數297
9.8 如何從5億個數中找出中位數298
9.9 如何按照query的頻度排序299
9.10 如何找出排名前500的數300
作者簡介
孫偉,程式設計師,目前從事面向海外市場的套用開發,有多年的Symbian和Android開發經驗,對C++和Java、JVM有比較深入的了解。從Kotlin發布支持就開始將其用於實際開發,目前已經使用Kotlin完成了多個項目。