【筆記】《Java校招面試 Google面試官親授》P6-P10
視訊時長有限,無法在具體知識點進行詳細的展開。
編碼能力需要刷題鍛鍊,架構和設計模式最好把專案拿出來重新安排。
記錄關鍵字,方便索引。
6.1 編碼技巧
遞迴、迴圈、邊界、資料結構
6.2 在白板上寫程式
6.3 數學歸納法
6.4 遞迴
嚴格定義遞迴函式作用:引數、返回值、side effect(全域性變數改變)
先一般,後特殊
每次呼叫必須縮小問題規模
規模縮小程度為1
6.5 例題:連結串列建立
連結串列:單向
6.6 例題:連結串列反轉
6.7 例題:列出所有組合
6.8 遞迴開銷
Stack overflow;
6.9 迴圈不變式
6.10連結串列反轉的非遞迴實現
6.11連結串列delete-if
注意頭結點、連續節點、空連結串列的處理
6.12邊界控制 二分查詢
6.13測試樣例 十年bug
6.14資料結構
陣列,棧,佇列,優先佇列,堆,樹,二叉樹,搜尋樹,hashmap,map,set,有向圖無向圖,深搜廣搜
6.15-19 樹的遍歷
6.20演算法複雜度
7 面向物件
工作中要對現有專案做一些優化,所以程式碼邏輯和可讀性要強
介面、抽象類、繼承、封裝、虛擬函式
8設計模式
便於工程師交流自己優化程式碼的套路
singleton
確保全域性至多隻有一個物件
用於:構造緩慢的物件,需要統一管理的資源
缺點:很多全域性狀態,執行緒安全性
建立:雙重鎖模式 Double checked locking
作為java類的靜態變數
使用框架提供的能力
變繼承關係為組合關係
EmployeeàManager state pattern 賦予角色
Interface runnable
Decorator模式
建立物件Builder
9高階知識點
平行計算
資料拆分,節點並行,結果彙總
外部排序
擴充套件的歸併排序
K路歸併 堆 完全二叉樹
Iterable
多執行緒 死鎖 程式演示
10 美麗數詳解