程式設計師面試金典 筆記1 第6章 技術面試題

2021-08-14 12:08:00 字數 790 閱讀 9120

注:*越多,越重要

1. 待學習知識點page 28

資料結構:單次查詢樹(trie),

概念:單例設計模式,工廠設計模式

2. [*] 解決技術面試題5步法page 29

1)向面試官提問,以消除疑義

2)設計一種演算法

3)先寫偽**,務必告訴面試官接下來會寫 真實的 **

4)寫**,不緊不慢

5)測試寫好的**,仔細修正每一處錯誤

3.【***】 演算法題的5種解法page 31

1)舉例法

舉一些具體的例子 -》 發現一般規則

2)模式匹配法

與相似問題作模擬 -》 修改相關問題的解法以解決新問題

3)簡化推廣法

簡化問題,得到簡化版本 -》 推廣,調整為複雜版本

4)簡單構造法

先從基本情況來解決問題,n=1,n=2,n=3...... -》 其實是遞迴

5)資料結構頭腦風暴法

快速過一遍資料結構的列表,逐個嘗試各種資料結構

4. 【**】怎樣才算好**page 35

特性:正確,搞笑,簡潔,易讀,可維護

1)多用資料結構

2)適當重用**

3)模組化

將孤立的**塊劃分為相應的函式 -》 更易讀,可測試性強

4)靈活,健壯

盡量編寫**解決更普遍的問題

5)錯誤檢查

程式設計師面試金典

1.有個小孩正在上樓梯,樓梯有n階台階,小孩一次可以上1階 2階 3階。請實現乙個方法,計算小孩有多少種上樓的方式。為了防止溢位,請將結果mod 1000000007 給定乙個正整數intn,請返回乙個數,代表上樓的方式數。保證n小於等於100000。int countways int n retu...

程式設計師面試金典 2 2

return kth to last 返回單鏈表中倒數第k個元素。下面會分別使用遞迴和非遞迴的方法來解決這道題,一般來說遞迴的方法寫起來更容易,但是效率一般不是最好的,比如這道題遞迴解法的 量大約是非遞迴解法的一半,但是時間複雜度依然是o n 遞迴解法。這種方法的本質是先遍歷到鍊錶尾部,最後再返回的...

程式設計師面試金典 2 4

partition 編寫 將鍊錶中小於x的元素放在鍊錶的前半部分,大於x的元素放在鍊錶的後半部分,沒有順序要求。如果是陣列的話,根據x對陣列進行劃分的方法類似於快排。對於鍊錶會更簡單一些,可以直接將原始鍊錶拆分為兩個鍊錶,乙個中所有元素比x小,乙個中所有元素比x大,最後再進行連線。通過在鍊錶中使用b...