刷題到底有什麼用?你這麼刷題還真沒用

微信搜索🔍「碼農田小齊」,關注這個在紐約的程序媛,回覆「01-05」能夠獲取計算機精選書籍、我的刷題筆記、大廠面經、面試資料等資源,麼麼噠~

關於刷題,上一篇文章講了 How,今天咱們來聊聊 Why —— 爲何要刷題?前端

或許不少人沒考慮過這個問題,或者會說由於面試要考啊,沒錯,就是這個緣由,就這一個理由足以讓咱們去刷題。但今天咱們來聊點不同的,但願給你新的啓發。面試

算法以前,面試考什麼?

我曾在這篇文章《從 LRU Cache 帶你看面試的本質》中提到過部分,美國大廠面試 80% 都是在考算法,這實際上是最近 5-10 年以谷歌、雅虎爲首才興起的;國內大廠對於算法的考察雖然沒有這麼狂熱,但也愈來愈重視了。算法

那爲何會造成這種局面?在考算法以前它們在考什麼?數據庫

你有兩個罐子,容量分別是 5 升和 3 升,還有一池塘的水。在沒有測量工具的輔助下,問可否準確的取出 4 升水來?

煎一個雞蛋須要 15 分鐘,但是你手頭沒有計時器。如今給你兩根繩子,燒完一根繩子須要一個小時;而繩子是粗細不均勻的,有可能半根繩子幾分鐘就燒完了。後端

填滿一輛校車須要多少個高爾夫球?瀏覽器

這類題被稱爲"Brain teaser",不僅是十幾年前的科技公司在考,現在的金融公司還在考,好比我在剛畢業面試 Quant,Risk 的職位時都會被問這種問題,爲此也專門準備過。微信

那時候互聯網行業剛剛興起,天天都會面對不少未知的問題,那麼就須要「聰明人」來想辦法解決這些問題,因此面試的核心是選拔最聰明的人。數據結構

爲何考算法?

後來互聯網大規模的興起,須要大量的工程師去解決問題,那麼面試的核心就變成了如何選拔出可以解決普通問題、寫出有效代碼的人。框架

一個基本功紮實,思惟邏輯強,可以寫出有效代碼的人就可以勝任這些職位,所以互聯網公司的面試規則也隨之改變。工具

互聯網行業的大規模擴張下降了行業的門檻,雖然目前依舊是高薪行業,但對我的的門檻已經大幅下降了,甚至不問背景和專業,每一個人都有機會進入頂尖的公司。

大部分互聯網公司認爲,算法是很是有效的篩選出他們想要的工程師的。

算法,一是可以考察面試者思考解決問題的能力,二是考察寫代碼的基本功。

一個能經過算法面試的人大機率是可以勝任工程師的職位的,不能勝任那還有 pip 等着呢;一個不能經過算法面試的人大機率是沒法勝任這項工做的。

固然了,可能會漏掉某些優秀的人才,但真相就是,大廠不在意

面試是可以最高效的選出須要的人才,最好還可以流程化、標準化,若是須要員工在面試上投入太多,哪有時間好好工做呢?

因此算法就像是高考同樣,能夠幫助企業快速篩選人才,而且相對其餘方法來講性價比更高:成本低、效果好。

但若是你是在某些方面有所特長,或者是某個領域的專家,就不須要經歷這種標準化的面試了。就像高考時也會有特長生、奧賽保送之類的,但實際上,這種方式,更難。

因此以上我所說的更多的是針對初級工程師,也就是剛畢業的同窗,沒有實習沒有重量級項目的同窗,你說要考察什麼呢?這麼一算,算法真的是通往大廠的捷徑了。

算法,僅僅是算法嗎?

那有些人又說了,學了算法工做中根本用不到,學它有什麼用?不學我也同樣能夠工做。

那我想問,你學了操做系統工做中也沒讓你寫個操做系統啊,學了前端也沒讓你開發瀏覽器,學了數據庫也沒讓你造個數據庫啊,那怎麼學個數據結構你就必定要想着造個數據結構呢?

如今工做中大都是直接用這些工具而不是從新造輪子,這也是互聯網行業可以大規模發展的緣由,就像連鎖店的產生,也不須要每一個員工都會去生產核心產品。

可是,一旦須要你去造輪子,好比開發新的產品,必定離不開大量的算法;那若是你不在這些職位上,天然是用不着的。

那這也解釋了爲何大廠都喜歡考算法,而小公司更注重你是否熟悉某一個框架的使用,畢竟小公司是要你直接來幹活的。

那不在這些崗位上,就一點都用不到算法了嗎?也不是。

對我來講,算法已經影響了個人方方面面。

好比一個很常見的問題,工做中 debug 時,不是從第一個開始查,而是要用二分查找的思想,先找到一箇中間位置設置斷點,查看到這個位置的信息是否正確,而後再逐漸縮小查找範圍,最終找到問題所在。這個思想就來源於 Leetcode 上的二分查找的算法題原題。

模版,你還在用模版嗎?

說到二分查找,有同窗都有問過我哪一個模版好,我都驚呆了,原來還有不少個模版?!

我在上一篇講個人刷題方法中並無提到模版,由於我根本不用模版,我認爲但凡是用模版的就是你對這個算法根本沒理解清楚。

關於二分查找確實有不少變種,有些人總想用一個模版套全部狀況,是會有這種模版,但這個模版必定不是全部狀況的最優解。

在面試時面試官稍微變化一下條件,多問你幾個這樣行不行,那樣可不能夠,你就露餡了。

更重要的是,這樣背模版來作題纔是真的沒有用!這樣刷出來的算法工做中真的用不到,到實際 debug 時你還想套模版嗎?難道在 debug 時,你還先翻翻模版,再肯定往哪一個方向去查找 bug?

公司招人是來解決問題的,若是套模版就能解決的問題,何須花高薪招人來解決呢?

因此刷題有沒有用,還要看你怎麼刷,不一樣的人刷一樣的題,效果可能徹底不同。就像咱們高中時作數學題同樣,作題不是爲了高考時碰到原題,而是鍛鍊本身的思惟、思考方式,這樣才能在遇到新題時迎刃而解。

固然了,我也不想神話刷題的做用,有些工做就是用不着,沒錯,那就好好工做。

工做幾年以後算法所佔面試的比例必定會減少,一個工做 5 年的工程師去面試,若是問算法題,那經過以後會給一個 senior 的職位;而一個剛畢業的學生去面試一樣的算法題,哪怕答的再好,也只是 entry level,這就是區別,區別在於算法以外的內容。


好了,想進自習室刷題的能夠繼續加我微信,上週沒加上的抓緊時間了。

還不瞭解自習室的小夥伴能夠看這個視頻瞭解一下,學習內容不侷限於刷題,英語健身前端後端各類都有打卡,歡迎你的加入。

我是小齊,終身學習者,咱們下期見!

相關文章
相關標籤/搜索