摘要:很多前端同學在看到數據結構和算法后會有一定的抵觸心理,或者嘗試去練習,但是被難倒,從而放棄。本文選擇的數據結構和算法的類別均是出現頻率最高,以及應用最廣的類別。面試這是非常現實的一點,也是很多前端學習數據結構和算法的原因。
一、導讀
據我了解,前端程序員有相當一部分對“數據結構”和“算法”的基礎概念都不是很清晰,這直接導致很多人在看到有關這部分的內容就會望而卻步。
實際上,當你了解了“數據結構”和“算法”存在的真正意義,以及一些實際的應用場景,對它有了一個整體的認知之后,你可能會對它產生強烈的興趣。當然,它帶將帶給你的收益也是相當可觀的。
很多前端同學在看到“數據結構”和“算法”后會有一定的抵觸心理,或者嘗試去練習,但是被難倒,從而放棄。
這很大一部分原因是因為你還不夠了解學習他們的意義,或者沒有掌握合理的練習方法。
實際上,當你有了一定的目的性,并且有了合理的練習方法,再來學習這部分內容會變得得心應手。
?
在本文中,我就來分享一下我學習“數據結構”和“算法”的一些經驗和方法。
后面我也會針對所有常見的數據結構和算法分類,進行全方位的梳理。
1.1 類別說明數據結構和算法的種類非常之多,拿樹舉例,樹的種類包括:二叉樹、B樹、B+樹、Trie樹、紅黑樹等等,本文只選擇了二叉樹。
對前端來講,沒有必要對某些比較偏的類型和解法多做了解,一是浪費寶貴的時間,二是應用的不多。
本文選擇的數據結構和算法的類別均是出現頻率最高,以及應用最廣的類別。
1.2 題目說明另外,做題時找對典型題目非常重要,可以讓你更快速更高效的掌握知識,本文后面也會給出每種類型的典型題目供大家參考。
題目來源:
awesome-coding-js:我的前端算法開源項目,包括我做過的題目以及詳細解析
leetcode
劍指offer
另外,我會在后面長期更新一個前端算法的專欄,對每類數據結構和算法進行詳細的講解,敬請期待。
二、為什么要學習數據結構和算法在學習某塊內容之前,我們一定要首先明確為什么要學,而不是盲目的跟風。
這將更有利于你從學習的過程中獲得收益,而且會為你的學習帶來動力。
首先明確一點,學習數據結構和算法不一定就是記住二叉樹、堆、棧、隊列等的解題方法也不是死記硬背一些題目,如果你僅僅停留在這樣的表面思想,那么你學習起來會非常痛苦。
2.1 解決問題的思想計算機只是一個很冰冷的機器,你給他下發什么樣的指令,它就能作出什么樣的反應。
而開發工程師要做的是如何把實際的問題轉化成計算機的指令,如何轉化,來看看《數據結構》的經典說法:
設計出數據結構, 在施加以算法就行了。
所以,很重要的一點,數據結構和算法對建立解決問題的思想非常重要。
如果說 Java 是自動檔轎車,C 就是手動檔吉普。數據結構呢?是變速箱的工作原理。你完全可以不知道變速箱怎樣工作,就把自動檔的車子從 A 開到 B,而且未必就比懂得的人慢。寫程序這件事,和開車一樣,經驗可以起到很大作用,但如果你不知道底層是怎么工作的,就永遠只能開車,既不會修車,也不能造車。如果你對這兩件事都不感興趣也就罷了,數據結構懂得用就好。但若你此生在編程領域還有點更高的追求,數據結構是繞不開的課題。2.2 面試
這是非?,F實的一點,也是很多前端學習數據結構和算法的原因。
一般對待算法的態度會分為以下幾類:
Google、Microsoft等知名外企在面試工程師時,算法是起決定性因素的,前端工程師也是一樣,基本是每一輪都會考察,即使你有非常強的背景,也有可能因為一兩道算法答的不好而與這樣的企業失之交臂。
第二類,算法占重要因素的,國內的某些大廠在面試時,也會把數據結構和算法作為重要的參考因素,基本是面試必考,如果你達不到一定的要求,會直接掛掉。
第三類,起加分作用,很多公司不會把數據結構和算法作為硬性要求,但是也會象征性的出一些題目,當你把一道算法題答的很漂亮,這絕對是加分項。
可見,學好數據結構和算法對你跳槽更好的公司或者拿到更高的薪水,是非常重要的。
三、如何準備了解了數據結構和算法的重要性,那么究竟該用什么樣的方法去準備呢?
3.1 全方位了解在學習和練習之前,你一定要對數據結構和算法做一個全方位的了解,對數據結構和算法的定義、分類做一個全面的理解,如果這部分做的不好,你在做題時將完全不知道你在做什么,從而陷入盲目尋找答案的過程,這個過程非常痛苦,而且往往收益甚微。
本文后面的章節,我會對常見的數據結構和算法做一個全方位的梳理。
3.2 分類練習當你對數據結構和算法有了一個整體的認知之后,就可以開始練習了。
注意,一定是分類練習!分類練習!分類練習!重要的事情說三遍。
我曾見過非常多的同學帶著一腔熱血就開始刷題了,從leetcode第一題開始,剛開始往往非常有動力,可能還會發個朋友圈或者沸點什么的
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/109994.html
showImg(https://segmentfault.com/img/bVbw3tK?w=1240&h=827); 前端工程師這個崗位,真的是反人性的 我們來思考一個問題: 一個6年左右經驗的前端工程師: 前面兩年在用jQuery 期間一直在用React-native(一步一步踩坑過來的那種) 最近兩年還在寫微信小程序 下面一個2年經驗的前端工程師: 并不會跨平臺技術,他的兩年工作都是Reac...
摘要:中四種修飾符的限制范圍。數據結構和算法樹快速排序,堆排序,插入排序其實八大排序算法都應該了解一致性算法,一致性算法的應用的內存結構。的部署方式,主從,集群。八大排序算法一定要手敲一遍快排,堆排尤其重要。 前言 15年畢業到現在也近三年了,最近面試了阿里集團(菜鳥網絡,螞蟻金服),網易,滴滴,點我達,最終收到點我達,網易offer,螞蟻金服二面掛掉,菜鳥網絡一個月了還在流程中...最終有...
摘要:數據結構和算法樹快速排序,堆排序,插入排序其實八大排序算法都應該了解一致性算法,一致性算法的應用的內存結構。如何存儲一個的。八大排序算法一定要手敲一遍快排,堆排尤其重要。面試是一個雙向選擇的過程,不要抱著畏懼的心態去面試,不利于自己的發揮。 前言 16年畢業到現在也近兩年了,最近面試了阿里集團(菜鳥網絡,螞蟻金服),網易,滴滴,點我達,最終收到點我達,網易offer,螞蟻金服二面掛掉,...
閱讀 3456·2021-09-08 09:36
閱讀 2533·2019-08-30 15:54
閱讀 2344·2019-08-30 15:54
閱讀 1760·2019-08-30 15:44
閱讀 2378·2019-08-26 14:04
閱讀 2436·2019-08-26 14:01
閱讀 2869·2019-08-26 13:58
閱讀 1315·2019-08-26 13:47