對於我而言,我會從面試和日常工作兩個方面來討論這個問題
先說面試
有種說法叫,面試造火箭,工作擰螺絲.拋開面試官想"技術pk"的可能性,我對這個的理解是,面試官想盡可能瞭解你程式設計能力的極限,所以面試中有個一兩道演算法題不奇怪,我們不需要對演算法有畏懼的心理,一般正常的演算法題,面試官也不會出得非常難,會被控制在正常難度,還有一點就是,面試的時候,面試官往往更加欣賞你對題目的解決思路,用虛擬碼來闡述解題的想法,也是一個很好的方式。
再說工作.
具體一點,我們是來講演算法在前端工作中應用,web前端工作中,確實沒有太多演算法上的需求,以vue等著名框架的虛擬dom的diff演算法來講,框架已經被很好的實現了,你在使用框架的時候是不會涉及到具體的diff演算法,但是理解演算法,可以讓你更好的理解框架,從而也能更好的使用框架,提高頁面的效能.再寬泛的來講演算法,很多特殊的需求也會需要你來設計一個演算法,比如某個需求有很多個非同步請求要傳送給伺服器,全部完成之後,可以繼續下一件事情,可能很多人要說,這個很簡單,一個Promise.all就可以解決
是的,沒有錯
但是請你考慮下面稍有變化的情況,因為伺服器的壓力問題,限制同一個客戶端只能在同一時間只能傳送2個非同步請求,所以你就必須對Promise.all做出適當的修改,在這樣的情況下,你就需要設計到一套演算法去高效完成它;再舉個例子,很多人在web前端之後轉向了H5遊戲;假設現在是個戰棋遊戲,裡面涉及到尋路演算法,那麼也需要你對演算法有了解,或許,你說可以從網上找現成的尋路演算法。
但是因為遊戲需求的多變,可能你所在公司的遊戲對於道路有著不同的設定,這導致網上的演算法不能直接套用,這就需要你的理解已經進一步的修改,所以這些都是現實的問題。
最後,演算法是程式設計的"裡子",不管你是前端還是後端,作為一名計算機工程師,具備一定的演算法能力,是一種基本要求。