●前言 面試筆試經驗技巧篇經驗技巧1 如何巧妙地回答面試官的問題2經驗技巧2 如何回答技術性的問題3經驗技巧3 如何回答非技術性問題5經驗技巧4 如何回答快速估算類問題5經驗技巧5 如何回答算法設計問題6經驗技巧6 如何回答繫統設計題9經驗技巧7 如何解決求職中的時間衝突問題12經驗技巧8 如果面試問題曾經遇見過,是否要告知面試官12經驗技巧9 被企業拒絕後是否可以再申請13經驗技巧10 如何應對自己不會回答的問題14經驗技巧11 如何應對面試官的“激將法”14經驗技巧12 如何處理與面試官持不同觀點這個問題15經驗技巧13 什麼是職場暗語16面試筆試真題解析篇章 鏈表211.1 如何實現鏈表的逆序221.2 如何從無序鏈表中移除重復項251.3 如何計算兩個單鏈表所代表的數之和291.4 如何對鏈表進行重新排序321.5 如何找出單鏈表中的倒數素341.6 如何檢測一個較大的單鏈表是否有環371.7 如何把鏈素翻轉391.8 如何把鏈表以k個結點為一組進行翻轉411.9 如何合並兩個有序鏈表441.10 如何在隻給定單鏈表中某個結點指針的情況下刪除該結點461.11 如何判斷兩個單鏈表(無環)是否交叉481.12 如何展開鏈接列表52第2章 棧、隊列與哈希562.1 如何實現棧562.2 如何實現隊列602.3 如何翻轉棧素652.4 如何根據入棧序列判斷可能的出棧序列702.5 如何用O(1)的時間復雜度求棧素732.6 如何用兩個棧模擬隊列操作742.7 如何設計一個排序繫統762.8 如何實現LRU緩存方案772.9 如何從給定的車票中找出旅程路線792.10 如何從數組中找出滿足a+b=c+d的兩個數對81第3章 二叉樹833.1 二叉樹基礎知識833.2 如何把一個有序整數數組放到二叉樹中853.3 如何從頂部開始逐層打印二叉樹結點數據863.4 如何求一棵二叉樹的優選子樹和893.5 如何判斷兩棵二叉樹是否相等913.6 如何把二叉樹轉換為雙向鏈表923.7 如何判斷一個數組是查找樹後序遍歷的序列943.8 如何找出排序二叉樹上任意兩個結點的最近共同父結點963.9 如何復制二叉樹1023.10 如何在二叉樹中找出與輸入整數相等的所有路徑1033.11 如何對二叉樹進行鏡像反轉1053.12 如何在二叉排序樹中找出個大於中間值的結點1063.13 如何在二叉樹中找出路徑優選的和1083.14 如何實現反向DNS查找緩存111第4章 數組1144.1 如何找出數組中唯一素1144.2 如何查找素的優選值和最小值1214.3 如何找出旋轉數組素1244.4 如何找出數組中丟失的數1284.5 如何找出數組中出現奇數次的數1304.6 如何找出數組中第k小的數1334.7 如何求數組素的最小距離1374.8 如何求解組距離1394.9 如何求數組中絕對值最小的數1444.10 如何求數組連續優選和1474.11 如何找出數組中出現1次的數1524.12 如何旋轉數組1544.13 如何在不排序的情況下求數組中的中位數1564.14 如何求集合的所有子集1584.15 如何對數組進行循環移位1614.16 如何在有規律的二維數組中進行高效的數據查找1644.17 如何尋找最多的覆蓋點1664.18 如何判斷請求能否在給定的存儲條件下完成1674.19 如何按要求構造新的數組1694.20 如何獲取最好的矩陣鏈相乘方法1714.21 如何求解迷宮問題1734.22 如何從三個有序數組中找出它們素1764.23 如何求兩個有序集合的交集1774.24 如何對有大量重復的數字的數組排序1814.25 如何對任務進行調度1854.26 如何對磁盤分區187第5章 字符串1895.1 如何求一個字符串的所有排列1895.2 如何求兩個字符串的最長公共子串1945.3 如何對字符串進行反轉1985.4 如何判斷兩個字符串是否為換位字符串2015.5 如何判斷兩個字符串的包含關繫2025.6 如何對由大小寫字母組成的字符數組排序2065.7 如何消除字符串的內嵌括號2075.8 如何判斷字符串是否是整數2085.9 如何實現字符串的匹配2125.10 如何求字符串裡的最長回文子串2155.11 如何按照給定的字母序列對字符數組排序2225.12 如何判斷一個字符串是否包含重復字符2255.13 如何找到由其他單詞組成的最長單詞2275.14 如何統計字符串中連續的重復字符個數2295.15 如何求最長遞增子序列的長度2305.16 求一個串中出現的個最長重復子串2325.17 如何求解字符串中字典序優選的子序列2335.18 如何判斷一個字符串是否由另外一個字符串旋轉得到2365.19 如何求字符串的編輯距離2385.20 如何在二維數組中尋找最短路線2405.21 如何截取包含中文的字符串2445.22 如何求相對路徑2445.23 如何查找到達目標詞的最短鏈長度246第6章 基本數字運算2496.1 如何判斷一個自然數是否是某個數的平方2496.2 如何判斷一個數是否為2的n次方2526.3 如何不使用除法操作符實現兩個正整數的除法2536.4 如何隻使用++操作符實現加減乘除運算2586.5 如何根據已知隨
內容簡介
本書是一本講解 Go 語言程序員面試筆試真題的書籍,在寫法上,除了講解如何解答算法問題以外,還引入了例子輔以說明,讓讀者能夠更加容易理解。本書將程序員面試筆試過程中各類算法類真題一網打盡,在題目的廣度上,通過各種渠道收集了近3年來IT企業面試筆試算法高頻題目,所選擇題目均為企業招聘使用題目。在題目的深度上,本書由淺入深、庖丁解牛般地分析每一個題目,並提煉歸納,同時引入例子與源代碼、時間復雜度與空間復雜度的分析,而這些內容是其他同類書籍所沒有的。本書根據真題所屬知識點進行分門別類,結構合理、條理清晰,對讀者學習與檢索意義重大。本書是一本計算機相關專業畢業生面試筆試的求職用書,可以作為本科生、研究生學習數據結構與算法的輔導書籍,同時也適合期望在計算機軟硬件行業大顯身手的計算機愛好者閱讀。
計算機技術博大精深,日新月異,Hadoop、GPU計算、移動互聯網、模式匹配、圖像識別、神經網絡、蟻群算法、大數據、機器學習、人工智能、深度學習等新技術讓人眼花繚亂,稍有遲疑,就會被時代所拋棄。很多IT從業者非常困惑,不知道從何學起,到底什麼纔是計算機技術的基石。其實,其本質還是最基礎的數據結構與算法知識:Hash、動態規劃、分治、排序、查找等,所以,無論是世界級的大型企業還是幾個人的小公司,在面試求職者的時候,往往會考查這些最基礎的知識,無論你的研究方向是什麼,這些基礎知識還是應該熟練掌握的。本書正是從這些基礎知識點出發,講解了求職過程中常見的數據結構與算法的真題,從而讓求職者能輕松應付算法類的筆試面試題目。本書的出版得到了機械工業出版社時靜老師的大力支持與配合。在寫作風格上,推陳出新,對於算法的講解,不僅使用圖文並茂的方式,而且還輔以示例的講解,目的就是為了使講解更容易讀懂。為了能夠寫......
"