一、概述
最近在準備面試的東西,整理了一些讀書筆記分享給各位 百度網盤地址,大家可以自由下載,以下內容完全原創。
前兩部分是對于一些 經典書籍的讀書筆記 和 面試題,都是上學看書的時候覺得比較重要的部分,就通過Word
文檔的形式記錄下來了。因為一直從事的是Android
方面的相關工作,因此還是圍繞著Android
展開,包括了Java
、C++
、網絡、數據結構等等。
最后一部分是面試時候的算法題,根據問題的類型分為了數組、數字、字符串、圖、樹等等。
先扯點題外話,這些基礎知識雖然很久沒看了,不過幸虧有這些筆記,現在看起來很快,像C++ Primer
和Java
面向對象編程這樣很厚的書,通過看這些筆記兩個小時就能復習完了。因此也建議大家平時看書的時候,多用文檔和博客的形式記錄下來,對于未來很有用。
我平時在學習的時候,一直秉承著要建立一個完整的架構體系,就像今年定的目標,要把之前兩年的工作都總結一下,梳理成一個完整的框架,所以才有了 Android 知識梳理目錄 - 好吧,這是一個很"干"的標題 這篇文章,洋洋灑灑寫了半年多,已經有28W
字了,每次完成一篇文章,就點亮了知識體系上的一個小點。
二、第一部分
-
Java
面向對象編程 -
Unix
網絡編程 -
Linux
程序設計 C++ Primer
C
-
TCP
高效編程 -
STL
源碼解析 -
C++
面試題 Android
- 終極版筆記
第一部分
三、第二部分
-
C++
高效編程 - 計算機網絡
- 算法導論
- 騰訊筆試題
- 終極版筆記
- 設計模式
- 數據結構
- 深度搜索
C++
對象模型 - 操作系統
- 海量數據處理
- 程序員面試寶典
第二部分
四、第三部分
這一部分是上學時候學習算法的 程序記錄,都是通過C++
來實現的,題目來自于編程之美、編程珠璣、網上的面試題等等,基本上囊括了所有可能會問到的算法題,大家可以當作復習的大綱。比較遺憾的是當時只記錄了實現的代碼,當時沒有寫下解答的思路以及分析,這個會在之后的博客中慢慢完善。
4.1 字符串
- 替換字符串中的空格
- 輸入一個字符串,打印出該字符串的所有排列
- 第一個只出現一次的字符
- 翻轉句子
- 計算字符串之間的距離
- 最短摘要生成
- 查找字符串中的最長重復子串
- 在字符串中找出最長的連續數字串
- 字符串轉換成整數輸出
- 在字符串中刪除指定字符
- 判斷一個字符串是否是對稱的
- 將字符串中的移到前部,并且不改變非的順序
- 不開辟用于交換的空間,完成字符串的逆序
LCS
- 字符串相關的操作函數
4.2 圖
- 廣度優先搜索
- 深度優先搜索
-
Bellman-Ford
算法 -
Dijkstra
算法 -
Floyed-Warshall
算法 -
Johnson
算法
4.3 數字
- 斐波那契數列(循環算法)
- 斐波那契數列(矩陣算法)
- 跳臺階問題
- 數值的整數次方
- 打印
1
到最大的n位數 - 計算從
1
到n
中1
出現的個數 - 求兩個數的二進制表示中有多少個是不同的
- 給定一個整數
N
,求N!
的末尾有多少個0
- 給定一個整數
N
,求N!
的二進制表示中最低位1的位置 - 最大公約數
- 精確地表達浮點數
- 任意給定一個正整數
N
,求一個最小的正整數M
,使得N*M
的十進制表示里僅含有0
和1
- 計算
1+2+..n
4.4 棧
- 創建一個空棧
- 壓入
- 返回棧頂元素
- 彈出
- 打印棧內元素
- 獲得棧中最小元素
- 將棧內元素反向
- 判斷出棧順序是否正確
- 利用兩個棧實現隊列
4.5 數組
- 二維數組的整數查找
- 旋轉數組中的最小數字(旋轉數組中的最大數字)
- 調整數組使奇數位于偶數之前
- 找出數組中出現次數超過一半的數字
- 找到最小的
k
個數 - 連續子數組的最大和
- 連續子數組的最大和(二維)
- 求數組當中的逆序對
- 查找數組中數字出現的次數
- 查找數組中只出現一次的兩個數字
- 在有序數組中查找和為
s
的兩個數 - 查找和為
s
的連續整數 - 求數組當中的最長遞增子序列(求數組當中的最長遞減子序列)
- 數組分割
- 數組當中的最大最小值
- 區間重合判斷
- 一個整數數組,長度為
n
,將其分為m
份,使各份的和相等,求m
的最大值
4.6 排序
- 插入排序
- 希爾排序
- 選擇排序
- 冒泡排序
- 計數排序
- 基數排序
- 歸并排序
- 快速排序
- 雙向掃描的快速排序
- 堆排序
4.7 鏈表
- 新建鏈表
- 反轉鏈表(非遞歸)
- 反轉鏈表(遞歸)
- 獲得鏈表倒數第k個結點
- 獲得鏈表的中間結點
- 刪除鏈表結點
- 交換鏈表結點
- 獲得帶環鏈表中進入環的第一個元素
- 獲得相交鏈表的結點
- 反向打印鏈表
- 鏈表排序
4.8 二分查找
- 普通二分查找
- 查找關鍵字第一次出現的位置
- 查找關鍵字最后一次出現的位置
- 查找小于關鍵字的最大數字出現的位置
- 查找大于關鍵字的最小數字出現的位置
- 在經過移位的有序數組中查找關鍵字出現的位置
4.9 二叉查找樹
- 初始化
- 插入
- 搜索
- 最小值
- 刪除
- 非遞歸先序遍歷
- 非遞歸中序遍歷
- 非遞歸后序遍歷
4.10 二叉樹
- 創建二叉樹
- 遞歸先序遍歷二叉樹
- 遞歸中序遍歷二叉樹
- 遞歸后序遍歷二叉樹
- 分層打印二叉樹
- 打印二叉樹第N層
- 統計二叉樹葉結點個數
- 統計二叉樹的高度
- 獲得二叉樹的鏡像
- 判斷元素是否存在于二叉樹中
- 打印二叉樹中和為s的路徑
- 獲得二叉樹的最大距離
- 判斷二叉樹是否是平衡樹
- 將二叉樹轉換成為鏈表
- 判斷數組是否為二叉樹的后序遍歷
- 判斷某樹是否是另一棵樹的子樹
- 根據前序和中序序列重建二叉樹
- 把一個有序數組插入到二叉樹中
4.11 動態規劃
- 建立最優二叉查找樹
- 矩陣鏈乘法
- 鋼條切割問題
- 飲料問題
- 背包問題
- ·
KMP
算法
第三部分
更多文章,歡迎訪問我的 Android 知識梳理系列:
- Android 知識梳理目錄:http://www.lxweimin.com/p/fd82d18994ce
- 個人主頁:http://lizejun.cn
- 個人知識總結目錄:http://lizejun.cn/categories/