自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Web 前端需不需要刷算法?

開發(fā) 前端
我個人覺得 web 前端是非常有必要刷算法題的。這對我們的職業(yè)發(fā)展和個人成長是非常有幫助的。

大家好,我是堅持刷算法的前端西瓜哥。

最近我一如既往地打開了 Leetcode 官網(wǎng)打算找道算法題做做,然后看到了一個 “關(guān)于 web 前端需不需要刷算法” 的討論,覺得可以說上一說我的看法。

我個人覺得 web 前端是非常有必要刷算法題的。這對我們的職業(yè)發(fā)展和個人成長是非常有幫助的。

個人職業(yè)發(fā)展

算法題能夠提高自己寫出高效率代碼的能力。

大部分的 web 前端開發(fā)不少時間都是在寫業(yè)務(wù)代碼,要用到復(fù)雜算法的機(jī)會并不多,通常就是切切圖還原視覺稿、實(shí)現(xiàn)下交互、和后端對下接口。

但我們不應(yīng)該將自己局限在寫業(yè)務(wù)代碼,有時候我們還是要寫非業(yè)務(wù)代碼的。

或許你會說可以找別人寫好的輪子,但并不是所有輪子都能滿足我們的項(xiàng)目需求,尤其是細(xì)分領(lǐng)域,有些時候還是得自己動手造輪子。

很多算法問題其實(shí)都是脫胎于實(shí)際的場景的,對我們寫出好的非業(yè)務(wù)代碼有不小的借鑒意義。

如果你不想成為一名打雜,刷算法還是非常有必要的。

代碼更健壯

刷算法有一些好處,你會注重代碼的可讀性,使用可讀性更好的變量名,不使用多余的變量,讓代碼盡量簡潔。

在刷題中,你不得不考慮算法的各種邊界情況,以便應(yīng)付一些極端的測試用例。這能提高你寫的代碼的健壯性,寫出 bug 更少的代碼。

此外你也能學(xué)到一些有意思的算法技巧。比如,F(xiàn)lood fill 算法可以處理油漆桶填充圖形的問題,前綴和技巧可以通過緩存快速求一些中間范圍的值。這對我們做方案有一定的幫助。

我們看一些優(yōu)秀源碼時,代碼里面可能針對場景做了特殊的算法優(yōu)化,如果你刷過算法題,就能更好地理解作者這樣寫的意圖。

面試的基本要求

隨著近些年前端開發(fā)從業(yè)人員越來越多,很多公司的產(chǎn)品越發(fā)切進(jìn)細(xì)分市場、復(fù)雜度越來越高,考察算法能力基本上是中大型公司面試的標(biāo)配了。

面試大公司時,你可能在每輪技術(shù)面試都會被要求解答至少一道 medium 難度的算法題,偶爾也會出現(xiàn) hard 難度的題。算法不好被刷的概率會增大,除非你的項(xiàng)目經(jīng)驗(yàn)表現(xiàn)足夠優(yōu)秀。

中小公司則好些,多數(shù)不考算法題,或者出一道很簡單的算法題。

如果想讓你的職業(yè)發(fā)展有更多的機(jī)會的話,建議你刷算法。

面試中能夠做出所有的算法題,面試官不免會高看你一眼,有非常好的初步印象,提高你斬獲 offer 的概率。

場景方案的思考

我們在開發(fā)中完成需求,經(jīng)常會有多個解決方案,認(rèn)真根據(jù)場景權(quán)衡不同方案的利弊,從中選擇最合適的方案,是一名優(yōu)秀的程序員非常重要的能力。

刷算法題,其實(shí)就是鍛煉這個能力的過程。

不少的算法題的解法很多。有的解法空間復(fù)雜度高但時間復(fù)雜度低,有的時間復(fù)雜度高但空間復(fù)雜度低,有的實(shí)現(xiàn)起來很簡單,有的性能更好但實(shí)現(xiàn)復(fù)雜容易寫錯。

雖然在刷算法題中,通常時間最快的算法是正解,但也有不少加了時間復(fù)雜度限制的題目,你需要分析不同的方案,找出對應(yīng)場景最合適的解法。

我們在做題中,對每一個解法的利弊的分析,也是面試中重點(diǎn)考察的內(nèi)容。

“與其刷算法題,還不如多做點(diǎn)項(xiàng)目”

也有人說:“與其刷算法題,還不如多做點(diǎn)項(xiàng)目”。其實(shí)這兩點(diǎn)并不沖突,我們的業(yè)余時間不可能全部用來刷算法題。

刷題應(yīng)該是我們能力提高的一環(huán),而不是全部。我們除了刷算法題,還可以學(xué)習(xí)其他的知識,讀書、學(xué)習(xí)理財知識、做點(diǎn)個人項(xiàng)目、像我這樣寫文章,都是可以的。

并不是說,我們刷了算法題,就沒時間做其他事情了。

我是推薦每周完成 5 道算法題,周一到周五每天一道,哪天沒完成,周六日再補(bǔ)上就好了。

像玩游戲一樣刷算法題

首先我們不要想著算法能夠速成,能夠短時間就能大幅提高,它是一個慢慢積累的過程。

你應(yīng)該像玩游戲一樣,每天打一關(guān),一點(diǎn)點(diǎn)地收獲熟練度并提高難度。應(yīng)該帶著去通關(guān)一個有難度的游戲關(guān)卡去對待它。即使今天完不成,明天我們再嘗試,不行就看攻略。

Leetcode 其實(shí)是一個非常好的提高自己算法能力的平臺,因?yàn)樗懈采w度足夠的測試用例,能讓我們每次提交都能獲得反饋。

相比自己工作中寫出的代碼,不知道部署到線上什么時候會導(dǎo)致事故,Leetcode 的反饋是即時的,對我們快速提高能力有非常大的幫助。

結(jié)尾

無論是什么程序員,我都建議他去刷算法題,因?yàn)樗惴芰κ且幻绦騿T的基本素養(yǎng)。

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2010-11-23 10:55:47

跳槽

2020-12-20 18:08:31

業(yè)務(wù)層服務(wù)化微服務(wù)

2011-09-02 09:45:39

交互設(shè)計Android

2022-09-14 15:10:40

前端架構(gòu)

2015-08-20 10:56:19

算法界面開發(fā)

2023-01-28 13:34:47

Web 3.0區(qū)塊鏈互聯(lián)網(wǎng)

2021-10-26 00:12:13

前端算法思路

2020-06-15 17:05:46

前端二進(jìn)制瀏覽器

2017-03-13 13:54:40

戴爾

2015-07-02 14:15:28

云遷移應(yīng)用重構(gòu)頭號難題

2015-09-14 11:06:53

PYTHON運(yùn)維

2020-09-09 10:07:06

導(dǎo)航手機(jī)導(dǎo)航北斗導(dǎo)航

2020-02-29 15:58:37

iPhoneiOS安卓

2009-11-23 12:45:22

2012-08-23 09:50:07

測試測試人員軟件測試

2023-10-04 00:19:00

Java開發(fā)

2011-11-18 13:14:37

JavaWebWebServices

2015-09-30 09:57:53

天分熱情工程師

2013-07-18 09:21:32

代碼文檔

2014-01-17 13:09:48

Linux碎片整理
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號