當前位置:
首頁 > 知識 > 前端要不要學數據結構&演算法

前端要不要學數據結構&演算法

我們都知道前端開發工程師更多偏向 DOM 渲染和 DOM 交互操作,隨之 Node 的推廣前端工程師也可以完成服務端開發。對於服務端開發而言大家都覺得數據結構和演算法是基礎,非學不可。所以正在進行 Node 開發的同學而言,這個答案躍然紙上。我們今天重點說一說純前端開發的同學到底需不要數據結構與演算法。

我先說下結論:需要,非常需要。

第一,只要是程序員,基本功都是數據結構與演算法

從我們接觸編程的時候就知道一個理論,程序=數據結構 演算法。所以,只要寫的是程序,就離不開數據結構和演算法。當然,有的同學會說,我就做一個純靜態的官網,交互都不多,根本不需要懂那麼多。那試問:你在別人眼中還是程序員嗎?你拿到的待遇還是程序員的待遇嗎?你未來的競爭力還是程序員所具備的抗風險能力嗎?

數據結構的意義是易於存儲、快速查找,換句話說只要涉及到數據操作,理論上都需要數據結構。打個比方吧,我們在頁面中會有各種請求介面:業務的、埋點的、監控的。眾所周知,瀏覽器是有請求並發數限制 的,如果埋點、監控的的請求太頻繁會阻塞掉業務的介面請求。即使只有業務介面,隨著feed流的流行,業務介面也需要控制,比如我滾動一屏需要若干個數據支撐,業務介面會頻繁的發出,當我快速滾動的時候,前面發出去的介面已經沒有意義了,但是前面發出的介面如果沒有響應,後面的發出的介面就會被pending。從前端開發的角度,如何去管理介面?如果你知道隊列、棧的數據結構,自然就知道利用這兩個數據結構可以進行介面管理。如果剛才的業務場景,應該選用棧的數據結構,後進先出,保證最新的介面發出去。對於埋點和監控應該用隊列,先進先出,不遺漏介面。通過這樣的介面管理既能滿足需要也可以避免介面的阻塞。

演算法本身也不是高深莫測,它的目的是高效解決問題。比如之前做彩票業務,會有投注和獎金計算的需求。如果前端不擅長演算法,可能就會和服務端同學說:前端算不出來,把數據提交到後端,後端再把結果返回給前端吧。殊不知,這樣的做法既犧牲了用戶體驗,也加大了服務端的開銷導致公司成本的上升。

上述兩個小場景足矣說明前端開發工程師真的需要懂數據結構和演算法。

第二、精益求精,離不開數據結構與演算法

打破常規思維,讓老闆知道你是不可多得人才。對於很多同學來說關於演算法起步排序,止於遞歸,只要超出這兩個選項統統認為「做不到」。現在大家出行都依賴地圖,對於地圖一個核心需求就是能算出從起點到終點的若干路徑並給出經濟成本和時間成本。我們把這個問題簡化下,從A點到B點的地鐵有幾種坐法,哪個是最快的,哪個是最短的,哪個是最便宜的?很多前端同學望而卻步,「理直氣壯」的告訴後端你算好通過介面傳給我。凡是都靠服務端來實現,很難體現前端開發在自己崗位上的「精益求精」的探索精神。可能大家也想自己搞,苦於知識面有限,容易得出「做不到」的結論。實際上,你只要學過「動態規劃」的演算法,這個題目就迎刃而解,足夠讓你拍著胸脯說前端來就可以了(不同路徑 II)。

當很多的事情你都能拍著胸脯說:我行,我來。那你的機遇和待遇就不遠了,不信試試看?

我們做事情,「精益求精」是非常必要的職業心態,凡事不琢磨,事事不深究,慢慢我們的路就被堵死了。「精益求精」不是喊口號,是實實在在的砥礪前行。而要做的更好,沒有深厚的基本功,沒有一定的知識儲備,很容易得出「運氣不好」的借口,AI技術已經離我們越來越近了,低能的技術是首先要被新時代淘汰掉的。

第三、持續提升,依賴數據結構與演算法

當從事前端3年以後,你會發現純業務開發已經滿足不了你了。多媒體、遊戲、服務端、客戶端都可以作為自己的第二個出路,正所謂技多不壓身。每一個方向都是深不可測,在多媒體領域要涉及大量的音視頻數據,如何做幀信息的關聯計算、如何快速查詢 Box 等等;對於遊戲來說,物理碰撞檢測是最基本的演算法(「等一下,我碰!」——常見的2D碰撞檢測 ),服務端就不用說了,前面所說的「前端做不到」的事情服務端要有兜底的能力(五花八門的演算法設計)。其實客戶端和前端沒有本質的區別,無非前端是調用瀏覽器的能力,客戶端調用系統的能力,也就說客戶端的能力更大,也就有更多的演算法需求:比如圖像處理能力,大家能看到現在各種App都有美顏(美圖)、人臉識別(支付寶),這些圖形圖像的處理是需要大量的演算法的。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 千鋒JAVA開發學院 的精彩文章:

TAG:千鋒JAVA開發學院 |