為了賬號安全,請及時綁定郵箱和手機立即綁定

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

2019.02.17 22:29 16273瀏覽

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

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

https://img4.mukewang.com/5c696c310001ff1503470220.jpg

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

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

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

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

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


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

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

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

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


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

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


        這篇文章不是心靈雞湯,只是課程的宣傳軟文。個人本身從本科就熱衷學習各種算法,尤其是在業務開發中頗有心得,算是經驗分享。最后對那些想學數據結構和算法的同學幾點小建議:

    1. 數據結構和算法是程序員的基本修養,沒事就可以翻開看看。“書到用時方恨少”的“恨”是可以變成“愛”的,多看看別人的“算法”方便為自己鋪路,哪些是可以借鑒的,哪些是有不適合的。

    2. 別把算法看成很抽象很難懂的“煉獄”。跟對老司機,找對教程,學會方法,哪有我們做不到的事呢?給自己足夠的信心,腳踏實地的一步一個腳印,就算談不上成功,也絕對可以小富即安。

    3. 別把算法學“死”。算法是前人總結的解決某些問題的技術方案,學會之后不要生搬硬套,算法的思路或者其中的步驟可以解決很多別的問題,是否思考過?“舉一反三”可不是隨便說說的,多聽聽老司機的經驗,或許可以茅塞頓開。


        對,我就是那個老司機之一,開車了,讓讓讓

https://img2.mukewang.com/5c696e7b0001188300260013.jpg

點擊查看更多內容

本文原創發布于慕課網 ,轉載請注明出處,謝謝合作

66人點贊

若覺得本文不錯,就分享一下吧!

評論

相關文章推薦

正在加載中
意見反饋 邀請有獎 幫助中心 APP下載
官方微信

舉報

0/150
提交
取消
上海时时乐平台