Scala程序員面試算法寶典

猿媛之家,楚秦,蔣威利著

  • 出版商: 機械工業
  • 出版日期: 2020-05-01
  • 定價: $474
  • 售價: 7.5$356
  • 語言: 簡體中文
  • 頁數: 258
  • 裝訂: 平裝
  • ISBN: 7111650298
  • ISBN-13: 9787111650294
  • 相關分類: JVM 語言面試技巧

立即出貨

相關主題

商品描述

《Scala程序員面試算法寶典》是一本講解Scala程序員面試算法的書籍,
在寫法上,除了講解如何解答算法問題外,
還引入了實例輔以說明,讓讀者能夠更好地理解本書內容。

《Scala程序員面試算法寶典》將Scala程序員面試、筆試過程中各類算法類真題一網打盡。
在題目的廣度上,本書收集了近三年來幾乎所有IT企業面試、筆試算法高頻題目,
所選擇題目均為企業招聘使用題目。
在題目的深度上,本書由淺入深,細緻地分析每一個題目,並提煉歸納。
同時,引入實例與源代碼、時間複雜度與空間複雜度的分析,
而這些內容是其他同類書籍所少有的。
此外,本書根據真題所屬知識點進行分門別類,力圖做到結構合理、
條理清晰,對於讀者進行學習與檢索意義重大。

《Scala程序員面試算法寶典》是一本計算機相關專業畢業生面試、
筆試的求職用書,也可以作為本科生、研究生學習數據結構與算法的輔導書,
同時也適合期望在計算機軟、硬件行業大顯身手的計算機愛好者閱讀。

目錄大綱

前言
面試、筆試經驗技巧篇
經驗技巧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什麼是職場暗語14
面試、筆試真題解析篇

第1章鍊錶19
1.1如何實現鍊錶的逆序20
1.2如何從無序鍊錶中移除重複項24
1.3如何計算兩個單鍊錶所代表的數之和27
1.4如何對鍊錶進行重新排序30
1.5如何找出單鍊錶中的倒數第k個元素32
1.6如何檢測一個較大的單鍊錶是否有環36
1.7如何把鍊錶相鄰元素反轉38
1.8如何把鍊錶以k個結點為一組進行反轉40
1.9如何合併兩個有序鍊錶43
1.10如何在只給定單鍊錶中某個結點的指針的情況下刪除該結點(不包括尾結點)45
1.11如何判斷兩個單鍊錶(無環)是否交叉47
1.12如何展開鏈接列表50

第2章棧與隊列53
2.1如何實現棧53
2.2如何實現隊列57
2.3如何反轉棧的所有元素60
2.4如何根據入棧序列判斷可能的出棧序列64
2.5如何用O(1)的時間複雜度求棧中最小元素65
2.6如何用兩個棧模擬隊列操作67
2.7如何設計一個排隊系統68
2.8如何實現LRU緩存方案70
2.9如何從給定的車票中找出旅程71
2.10如何從數組中找出滿足a +b=c+d的兩個數對73

第3章二叉樹75
3.1二叉樹基礎知識75
3.2如何把一個有序的整數數組放到二叉樹中77
3.3如何從頂部開始逐層打印二叉樹結點數據78
3.4如何求一棵二叉樹的最大子樹和80
3.5如何判斷兩棵二叉樹是否相等82
3.6如何把二叉樹轉換為雙向鍊錶83
3.7如何判斷一個數組是否是二元查找樹後序遍歷的序列85
3.8如何找出排序二叉樹上任意兩個結點的最近共同父結點87
3.9如何復制二叉樹92
3.10如何在二叉樹中找出與輸入整數相等的所有路徑93
3.11如何對二叉樹進行鏡像反轉95
3.12如何在二叉排序樹中找出第一個大於且數值最接近中間值的結點96
3.13如何在二叉樹中找出路徑最大的和98
3.14如何實現反向DNS查找域名99

第4章數組102
4.1如何找出數組中唯一的重複元素102
4.2如何查找數組中元素的最大值和最小值107
4.3如何找出旋轉數組的最小元素110
4.4如何找出數組中丟失的數113
4.5如何找出數組中出現奇數次的數115
4.6如何找出數組中第k小的數117
4.7如何求數組中兩個元素的最小距離120
4.8如何求解最小三元組距離122
4.9如何求數組中絕對值最小的數126
4.10如何求數組連續最大和129
4.11如何找出數組中出現一次的數132
4.12如何旋轉數組134
4.13如何在不排序的情況下求數組中的中位數135
4.14如何求集合的所有子集137
4.15如何對數組進行循環移位140
4.16如何在有規律的二維數組中進行高效的數據查找142
4.17如何尋找最多的覆蓋點144
4.18如何判斷請求能否在給定的存儲條件下完成145
4.19如何按要求構造新的數組147
4.20如何獲取最好的矩陣鏈相乘方法148
4.21如何求解迷宮問題150
4.22如何從三個有序數組中找出它們的公共元素152
4.23如何求兩個有序集合的交集153
4.24如何對有大量重複的數字的數組排序156
4.25如何對任務進行調度159
4.26如何對磁盤分區160

第5章字符串162
5.1如何求一個字符串的所有排列162
5.2如何求兩個字符串的最長公共子串166
5.3如何對字符串進行反轉169
5.4如何判斷兩個字符串是否為換位字符串171
5.5如何判斷兩個字符串是否具有包含關係173
5.6如何對由大小寫字母組成的字符數組排序175
5.7如何消除字符串的內嵌括號176
5.8如何判斷字符串是否是整數177
5.9如何實現字符串的匹配180
5.10如何求字符串裡的最長回文子串183
5.11如何按照給定的字母序列對字符數組排序189
5.12如何判斷一個字符串是否包含重複字符191
5.13如何找到由其他單詞組成的最長單詞193
5.14如何統計字符串中連續重複字符個數195
5.15如何求最長遞增子序列的長度196
5.16如何求一個串中出現的第一個最長重複子串197
5.17如何求解字符串中字典序最大的子序列199
5.18如何判斷一個字符串是否由另外一個字符串旋轉得到202
5.19如何求字符串的編輯距離203
5.20如何在二維數組中尋找最短路線205
5.21如何截取包含中文的字符串207
5.22如何求相對路徑209
5.23如何查找到達目標詞的最短鍊長度210

第6章基本數字運算213
6.1如何判斷一個自然數是否是某個數的二次方213
6.2如何判斷一個數是否為2的n次方215
6.3如何不使用除法操作符實現兩個正整數的除法216
6.4如何只使用++操作符實現加減乘除運算220
6.5如何根據已知隨機數生成函數計算新的隨機數222
6.6如何判斷1024!末尾有多少個0224
6.7如何按要求比較兩個數的大小225
6.8如何求有序數列的第1500個數的值226
6.9如何把十進制數(long型)分別以二進制和十六進制形式輸出227
6.10如何求二進制數中1的個數228
6.11如何找最小的不重複數230
6.12如何計算一個數的n次方233
6.13如何在不能使用庫函數的條件下計算正數n的算術平方根235
6.14如何不使用^操作實現異或運算235
6.15如何不使用循環輸出1~100237

第7章排列組合與概率238
7.1如何求數字的組合238
7.2如何拿到最多金幣240
7.3如何求正整數n所有可能的整數組合241
7.4如何用一個隨機函數得到另外一個隨機函數243
7.5如何等概率地從大小為n的數組中選取m個整數244
7.6如何計算1、2、5這三個數使其和為100的組合個數245
7.7如何判斷還有幾盞燈泡亮著246

第8章大數據249
8.1如何從大量的url中找出相同的url249
8.2如何從大量數據中找出高頻詞250
8.3如何找出某一天訪問百度網站最多的IP251
8.4如何在大量的數據中找出不重複的整數251
8.5如何在大量的數據中判斷一個數是否存在252
8.6如何查詢最熱門的查詢串253
8.7如何統計不同電話號碼的個數254
8.8如何從5億個數中找出中位數255
8.9如何按照query的頻度排序256
8.10如何找出排名前500的數257