目錄
1.1 算法面試不僅僅是正确的回答問題
1、這個課程的目标是什麼?
2、算法面試是什麼?
(1)什麼是給出合理的思考路徑
(2)“正确”本身是一個相對概念
(3)什麼是“正确”的回答一個算法問題
1.1 算法面試不僅僅是正确的回答問題
1、這個課程的目标是什麼?
讓大家在面對面試中的算法問題時,有一個合理的思考路徑;面對算法面試,不畏懼。因為面試中的算法問題,通常并不“複雜”,遠遠不需要啃完一本《算法導論》。
2、算法面試是什麼?
讓大家在面對面試中的算法問題時,有一個合理的思考路徑:不代表能夠“正确”回答每一個算法問題,但是合理的思考方向其實更重要,也是正确完成算法面試問題的前提;算法面試優秀不意味着技術面試優秀;技術面試優秀不意味着能夠拿到Offer。
(1)什麼是給出合理的思考路徑
算法面試的目的不是給出一個“正确”答案,而是展示給面試官你思考問題的方式。
(2)“正确”本身是一個相對概念
算法面試不是聯考。把這個過程看作是和面試官一起探讨一個問題的解決方案。對于問題的細節和應用環境,可以和面試官溝通。這個溝通本身很重要,它暗示着你思考問題的方式。
例:對一組資料進行排序。
我們需要對一組資料進行排序:快速排序算法
。
這組資料有什麼樣的特征?
①有沒有可能包含有大量重複的元素?如果有這種可能的話,三路快排是更好地選擇。
②是否大部分資料距離它正确的位置很近?是否近乎有序?如果是這樣的話,插入排序是更好地選擇。
③是否資料的取值範圍非常有限?比如對學生成績排序。如果是這樣的話,計數排序是更好地選擇。
④是否需要穩定排序?如果是的話,歸并排序是更好地選擇。
⑤資料的存儲狀況是怎樣的?是否是使用連結清單存儲的?如果是的話,歸并排序是更好地選擇。資料的大小是否可以裝載在記憶體裡?資料量很大,或者記憶體很小,不足以裝載在記憶體裡,需要使用外排序算法。
(3)什麼是“正确”的回答一個算法問題
正确還包含對問題的獨到見解;優化;代碼規範;容錯性;等等等等……
這個課程不僅僅是給出解決算法問題的代碼。
如果是非常難的問題,對你的競争對手來說,也是難的。關鍵在于你所表達出的解決問題的思路。甚至通過表達解題思路的方向,得出結論:這個問題的解決方案,應該在哪一個領域,我可以通過查閱或者進一步學習解決問題。