首頁 > 科技

位元組面試官問我:有沒有刷過leetcode,怎麼辦?

2021-08-15 03:05:33

最近面試,我發現有些基礎知識答得很好的同學,但是做演算法題非常非常吃力。有時候我把答題思路都講了,但是作答也非常不順利。我有點費解的問有沒有刷leetcode,同學說刷了100道左右題目。在我看來,其實100道題已經不少了,所以我覺得應該說一下應該怎麼學習演算法,如何做練習

為什麼面試要考演算法?

考察演算法的一個非常重要的原因是:它包含了太多的邏輯思維,可以考察你思考問題的邏輯和解決問題的能力;這一點也是面試官比較看重的,因為它可以反映出你的潛力,我曾經聽阿里一位資深面試官這樣講過:當一個人邏輯思維和能力不錯的情況下,你還會擔心專業的業務知識方面他不行或者學不會嗎?

針對演算法面試,我列舉了以下幾個問題並做出瞭解釋

如何取得正確的思路

即使面對簡單的題目,也有相當一部分是拿不出思路的。這和聰明不聰明完全沒有關係,這說明需要更多的演算法鍛鍊。有一些方法可以幫助:

  1. 多畫畫圖,不要著急寫程式碼,先在圖上想清楚,畫出每一步要做什麼,看看是不是有漏洞,或者有什麼啟發
  2. 從簡單的開始,比如一個數組,那就從一個數開始考慮;無序的陣列,先考慮一下有序的是不是有什麼啟發;情況複雜,不確定東西多,是不是分成幾類,每一類都只有一個或者兩個不確定的變數;有了啟發再去推廣
  3. 如果想了5-10分鐘,都沒有收穫,還是看看答案吧,可能只是因為你見識的太少了

如何把思路變成程式碼

這個就是要靠練習了,不過這種練習也要多個心眼才能效率高。其實思路改成程式碼的時候是有很多重複的基礎動作的,比如遍歷,從某個數組裡選最大值,把連結串列反轉等等,仔細留心自己每次哪一塊實現不出自己的想法,那就多去練習一下這塊的操作,自然很快就能提高。其實寫程式碼就好像是翻譯,把思路用另外一種語言寫出來而已。其中當然有很多固定搭配和短語了,多留心總結就提高得快

如何做到程式碼優雅

過了上面一個階段,就會發現,正確實現往往很簡單,但是實現出來的也是一堆的if else,或者看起來就笨笨的。這時候就要參考答案。比較一下。自己寫的囉嗦,可能很大程度是思維的抽象度不夠,這個就需要多練習。別死記硬背別人的解法,而是看看他簡潔的程式碼到底在表達什麼意思?而自己囉嗦的程式碼可能是使用了重複的邏輯。這個只能靠多練,多感悟了。

如果能用優雅簡單的程式碼寫出答案,即使演算法不是最優解,也會大大贏得面試官的好感。而且有了這個基本功,剩下的學習就會事半功倍。並且萬一面試的時候沒想到思路,面試官提示一下,也是分分鐘搞定,必然面試官感到你基本功紮實,程式碼能力好

這裡給大家推薦一本書,左程雲老師寫的《程式設計師程式碼面試指南》,有需要的小夥伴可以幫忙轉發文章後,關注私信回覆【演算法】憑截圖來免費獲取到!

程式設計師程式碼面試指南

這是一本程式設計師面試寶典!書中對IT名企程式碼面試各類題目的最優解進行了總結,並提供了相關程式碼實現。針對當前程式設計師面試缺乏權威題目彙總這一痛點,本書選取將近200道真實出現過的經典程式碼面試題,幫助廣大程式設計師的面試準備做到萬無一失。

另外,除應付面試之外,還有很重要的一點,甚至是更重要的一點,就是本書可以幫我們開啟思路,因為很多演算法題的解法是需要逆向思維的,需要跳出原有的固定思維模式,當思維模式被開啟之後,你會發現原有的事物現在看起來會有不同的看法,因為看問題的角度變了。不過這些只能自己體會(只可意會不可言傳)。

目錄

採用題目+解答的方式組織內容,並把面試題類型相近或者解法相近的題目儘量放在一起,讀者在學習本書時很容易看出面試題解法之間的聯絡,使知識的學習避免碎片化。書中將所有的面試題從難到易依次分為「將、校、尉、士」四個檔次,方便讀者有針對性地選擇「刷」題。這本書所收錄的所有面試題都給出了最優解講解和程式碼實現,並且提供了一些普通解法和最優解法的運行時間對比,讓讀者真切地感受到最優解的魅力!

限於平臺篇幅原因,只能展示部分內容和目錄截圖,有需要完整版的小夥伴幫忙轉發文章後,關注私信回覆【演算法】憑截圖即可免費獲取到!

內容

第1章棧和佇列

第2章連結串列問題

第3章二叉樹問題

第4章遞迴和動態規劃

第5章字元串問題

第6章大資料和空間限制

第7章位運算

第8章陣列和矩陣問題

第9章其他題目

最後

引用高鵬義老師的一句話:

年輕人總會找藉口說這個東西不是我感興趣的,所以我做不好是應該的。但他們沒有注意的是,你面對的事情中感興趣的事情總是少數,這就使得大多數時候你做事情的態度總是很懈怠、很消極,這使你變成了一個懈怠的人。當你真正面對自己感興趣的東西時,你發現你已經攥不緊拳頭了。

對一個東西,如果你沒有透徹研究過,不要輕易說它不精彩。這不是博愛,而是對自己認真。


IT145.com E-mail:sddin#qq.com