看了慕課網bobo老師的玩轉演算法面試課程,做了一些筆記,
演算法面試是什么?
演算法面試需要有一個合理的思考路徑;演算法只是技術的一部分,
- 不代表能夠“正確”回答每一個演算法問題,但是合理的思考方向其實更重要,也是正確完成演算法面試問題的前提
- 演算法面試優秀不意味著技術面試優秀
- 技術面試優秀不意味著能夠拿到Offer
演算法面試的目的不是給出一個“正確”答案,而是展示給面試官你思考問題的方式,
演算法面試不是考試,把這個程序看作是和面試官一起探討一個問題的解決方案,
對于問題的細節和應用環境,可以和面試官溝通,這種溝通暗示著你思考問題的方式
思考問題方式
對一組資料進行排序
和面試官溝通,這組資料有什么樣的特征?
- 有沒有肯包含有大量重復的元素? 采用三路快排,
- 是否大部分資料距離它正確的位置很近?是否近似有序? 插入排序
- 是否資料的取值范圍非常有限?學生考試成績, 計數排序
- 是否需要穩定排序? 需要穩定排序時 歸并排序
- 資料的儲存情況?是否是使用鏈表存盤? 如果是鏈表存盤,使用歸并排序(快速排序依賴陣列的隨機存盤)
- 資料的大小是否可以裝載在記憶體中? 資料量很大,或者記憶體很小,不足以裝載在記憶體里,需要使用外部排序演算法,(海量資料問題)
對問題的獨到見解,優化,代碼規范,容錯性
表達出解決問題的思路,
演算法面試優秀不意味著技術面試優秀
技術面試包含
- 簡歷上的專案經歷
- 專案經歷和專案中遇到的實際問題
- 遇到的印象最深的bug是什么?
- 面向物件
- 設計模式
- 網路相關,安全相關,記憶體相關;并發相關
- 系統設計;scalability;
- …
技術面試優秀不意味著能拿到Offer
技術面試只是面試的一部分,面試還考察你的過去以及形成的思考行為方式,
過去參與的技術專案很重要
如何找專案?
- 實習
- 參加實戰課程學習
創建自己的專案
- 創建小應用:計劃表;備忘錄,播放器等
- 自己解決小問題:爬蟲,資料分析,詞頻統計等
- 一本優秀技術書籍的代碼整理等
- 自己的技術博客,github等
通過過去了解你的思考行為方式(hr面):
- 遇到的最大的挑戰?
- 犯過的錯誤?
- 遭遇的失敗?
- 最享受的作業內容?
- 遇到沖突的處理方式?
- 做的最與眾不同的事?
- …
結合具體的實際專案闡述,而非泛泛而談,
反問環節
準備好合適的問題問面試官,
- 整個小組的大概運行模式是怎么樣的?
- 整個專案的后續規劃是如何的?
- 這個產品中的某個問題是如何解決的?
- 為什么會選擇某些技術?標準?
- 我對某一個技術很感興趣,在你的小組中我會有怎樣的機會深入該技術?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/241985.html
標籤:其他
