不懂數據結構與算法,如何進BAT大廠?

前言

語言只是工具,算法纔是程序的靈魂。」這句話相信每一個程序員都聽過無數次。

然而在實際的工作中,一個產品從開發到上線,似乎哪一步都用不到數據結構與算法。

於是很多程序員都有這樣一種錯覺:就算我不懂算法,只要語言寫得溜、開發框架用得熟練、封裝好的各種接口、庫調用得熟練,照樣能實現老闆「天馬行空」(傻逼)的需求,照樣可以混到高薪。

但是作爲一名開發工程師,你真的願意做一輩子的 crud boy 嗎?

1.三流才比招式,高手只拼內功

如果把一個程序比作一輛車,那麼語言就是啓動這輛車的鑰匙,而算法則是這輛車的發動機。

你可以在不懂發動機的運作原理的情況下依然把車開到飛起來,但等車出現了問題,你只能乾瞪眼。

而寫程序這件事情,就像開車一樣,經驗能幫你很多,但如果你對數據結構與算法完全不瞭解,那麼你永遠只能當一個代碼搬運工。

舉個例子,如果你不知道列表,堆,棧,樹,圖等算法原理,不懂得時間、空間複雜度分析,在存儲某個數據時,你是用 ArrayList 還是 LinkedList呢?要知道在不同的情況下選擇ArrayList 還是 LinkedList ,可能會產生成千上萬倍的性能差別。

數據結構與算法存在的意義就是讓程序員們在更高的高度下思考如何用更少的資源產生更快的運算結果

其實程序員的世界就像金庸先生的武俠小說一樣。普通人只在乎招式,絕世高手之間比拼的是內功,而數據結構與算法就是程序員們的《九陽神功》。

2. 算法是大廠的敲門磚

如果你還堅持認爲僅憑一手牛逼的代碼就能轟開BAT的大門,那你可以聽聽下面這個故事。

2015年,Homebrew的作者去google面試,(Homebrew是Mac平臺的安裝包管理工具,全世界有無數互聯網公司的程序員們都在使用它。)然而就是這樣一個大神卻倒在了算法上。感覺備受侮辱的大神,立馬發了條twiiter吐槽谷歌的面試制度。

然而谷歌的迴應是:「我們90%的工程師都在使用你寫的Homebrew工具,你卻不能白板編程一個二叉樹的翻轉,所以請滾蛋吧」。

 

對於BAT、FLAG這樣的大公司而言,他們的產品線可能遍佈圖像視頻處理、數據庫、遊戲開發、編譯器、搜索引擎、AR、VR、人工智能等等領域。這些領域可能使用不同的編程語言、不同的工作方式,但卻有一個共同點:以數據結構算法爲基石

而從算法中能更容易瞭解到一個人的編程能力和應變能力,因此大公司重視算法也就不難理解了。

如果你想進軍BAT,或者想打開高級編程的大門,那麼數據結構與算法這項短板一定要補上。

3.如何面試跳槽大公司

程序員這項工作,其實吃的是「青春飯」,現在的高薪並不代表以後就能高枕無憂。我們常常看到那些臨近中年的程序員因爲學習能力、體力跟不上年輕人而被公司淘汰。如果你不想面臨同樣的「中年危機」,那麼數據結構與算法是你的必備技能。
BAT這些大公司除了數據結構算法,還需要會哪些技術?

包括Java在Android開發中應用、APP框架知識體系、高級UI、全方位性能調優,NDK開發,音視頻技術,人工智能技術,跨平臺技術等技術。

針對大廠的這些技術要求,我整理了面試專題和高級視頻學習資料,能幫助到你面試前的複習,且找到一個好的工作,也節省大家在網上搜索資料的時間來學習。

網上學習 Android的資料一大堆,但如果學到的知識不成體系,遇到問題時只是淺嘗輒止,不再深入研究,那麼很難做到真正的技術提升。建議大家先制定學習計劃,根據學習計劃把知識點關聯起來,形成一個系統化的知識體系。

 

 

最後我想說:對於程序員來說,要學習的知識內容、技術有太多太多,要想不被環境淘汰就只有不斷提升自己,從來都是我們去適應環境,而不是環境來適應我們!

Android架構師進階之路很漫長,一起共勉吧!