資料結構與演算法真的那麼重要麼?

2021-09-13 14:49:19 字數 1882 閱讀 3522

很多同學對資料結構與演算法的第一印象,可能是覺得它複雜、深奧、難以理解。之所以會有這種觀念,我認為主要是因為沒有找到適合自己的學習方法及學習資料。其實學習任何知識點,只要找到對的學習方法和學習資料,都能做到攻克難點,牢牢掌握。

另外,同學們可能還有乙個疑問:在平時的開發工作中,乙個產品,從開發到上線,似乎都不會用到資料結構與演算法,也就是說即使不懂資料結構與演算法,也能出色地完成日常的工作任務,照樣能拿到高薪。那我們為什麼還要學習資料結構與演算法呢?

其實,乙個很重要的原因是為了應對面試,資料結構與演算法,是很多名企面試的必考題。國內外一線的大型網際網路公司,在面試的過程中,多少都會問到一些關於資料結構與演算法的題目。而且規模越大的公司,就越注重資料結構與演算法。甚至,現在很多中小型公司的面試題都會涉及到演算法知識。這個我們其實不難理解,無論什麼型別的公司,為了篩選出更優秀的人才,面試題的難度都會越來越高。

說到這,同學們可能會覺得很奇怪,平時工作中很少接觸的資料結構與演算法,為什麼會經常出現在面試題中呢?這不是讓人很難理解嗎?甚至還有人會覺得這很不公平,會導致企業錯失人才。比如有這樣乙個人,他擁有至少5年開發經驗,技術實力、業務能力、學習能力都很強,公司安排的每項任務都能出色完成,但可能只是因為他不會資料結構與演算法,就被大公司拒之門外,而事實上他的綜合能力可能比一些大公司的人都要強。

這樣的情況,其實不是沒有,2023年,homebrew的作者去google面試,但不幸的是他被google拒絕了。homebrew大家應該都聽說過,它是mac平台的安裝包管理工具,全世界大大小小網際網路公司的程式設計師可能都在用這個工具。這足以說明homebrew作者的技術實力了吧?可他還是被拒絕了,當時他發了條twiiter吐槽。

google回應:「我們90%的工程師都在使用你寫的homebrew工具,你卻不能白板程式設計乙個二叉樹的翻轉,所以請滾蛋吧」。不過後來,還是有很多矽谷的大公司搶著要他。

所以說,同學們的擔心是有可能發生的,大公司面試著重考察資料結構與演算法,確實可能會錯失一些人才,那他們為什麼還要這樣做呢?

因為資料結構與演算法功底紮實的程式設計師,其技術實力、業務能力、自學能力大多都不會差。其次,如果面試題內容都是平時工作中常用的技術點,其實大家的答案都大同小異,而且還有很多人會靠背題來應付面試。而演算法題因為其範圍很大,可以盡可能地避免這種情況的發生,而且這種問題考驗的更多的是乙個人的程式設計功底和長期積累。所以很多大公司都會使用演算法題來篩選人才。

總而言之,要想進入更大的公司,資料結構與演算法是你必須要跨過去的坎。

一開始提到,可能在大家平時的開發過程中,不怎麼用到資料結構與演算法的知識。那是因為我們的很多開發任務,都可以直接用各種第三方框架來完成。然而,很多第三方框架內部都用到了大量的資料結構與演算法的知識。如果你懂資料結構與演算法,就可以更好地去讀懂框架原始碼,體會作者的設計思想,也能讓你更好地使用框架,把框架的價值發揮到最大。平時沒用到資料結構與演算法,也可能是因為自己目前開發的專案還太小。當開發大型專案,面對海量資料處理,或者要求效能的極致優化時,必然要用到資料結構與演算法來優化程式。所以,很多時候,並不是資料結構與演算法沒有用,而可能是自己的境界還不夠高。

紮實的資料結構與演算法功底,能讓我們站在更高的角度去思考**、寫出效能更優的程式,能讓我們更快速地學習上手各種新技術(比如人工智慧、區塊鏈等),能讓我們敲開更高階程式設計領域的大門。為什麼有些人學新技術這麼快?比如區塊鏈、人工智慧等,很可能就是因為別人資料結構與演算法的功底更紮實。

pascal之父nicklaus wirth曾經憑藉乙個公式獲得了圖靈獎(計算機領域的諾貝爾獎)。

由此可見資料結構與演算法的重要性!

隨著年齡的增長,無論是學習能力,還是體力都會有一定程度地下降。所以,我們更應該珍惜時間,不要在應該努力奮鬥的年紀選擇安逸,學習和積累都要趁早。如果你想在it路上走得更遠,站得更高,那就必須掌握資料結構與演算法。更何況這真的是一種一次掌握,終生受益的技術。

興趣真的那麼重要麼?

經常有人說他對自己所目前所做的事情沒興趣,或者對自己的專業不感興趣,而他真正感興趣的是某某事情,某某專業。正如我們經常看到的那樣,這些人往往不快樂。因為它們 覺得 自己在做自己不喜歡的事情。然而,真的是他們以為的那樣嗎?不客氣的說,99 的情況並非如此。首先,這些人並不是對正在做的事情沒有興趣,而是...

「大數」據真的那麼必要麼

大資料 這個詞這幾年火的不得了。各種企業都宣稱自己掌握著大量的資料,好像有了大資料,就能解決一切問題一樣。然而現實情況時,很多時候我們對資料的痴迷,卻將我們引上了歧途。是的,在一些情況下,要想從資料中萃取有用的東西,我們的確需要大量的這類資料,然而對於創新者來說,資料的數量和規模並不是最關鍵的因素 ...

資料結構與演算法(重要知識總結)

1 資料結構 邏輯結構 資料物件中資料元素之間的相互關係。物理結構 資料的邏輯結構在計算機中的儲存形式。四大邏輯結構 整合結構 線性結構 樹形結構 圖形結構。2 演算法效率 演算法採用的策略 方案 編譯產生的 質量 問題的輸入模組 機器執行命令的速度 1 鍊錶 單鏈表,只有乙個存放指標的模組,存放位...