1. 程式人生 > >【筆記】《Java校招面試 Google面試官親授》P6-P10

【筆記】《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 美麗數詳解