計算機專業應數據結構和算法至上?還是與業務掛鈎的技術至上?

2020-12-08 維識教育科技

近日,一位網友在知乎上發起提問:計算機學生在大學四年應是以數據結構和算法為重還是技術為重?引來網友紛紛圍觀!

讀計算機專業的你,大學四年是否還在迷茫是以數據結構和算法為重還是技術為重? 要想解除疑惑,先要知道計算機科學與技術這個專業都包含了什麼。 顧名思義,科學與技術是構成這一專業的主要兩個部分,所學課程也主要以這兩部分內容為主,像作業系統、計算機網絡、數據結構與算法等課程都屬於科學側,而web網頁設計、C++程序設計等課程則屬於技術側。

數據結構和算法:決定大廠面試成敗的關鍵

Pascal之父尼古拉斯·沃斯曾靠一個公式「算法+數據結構=程序」獲得了冠有計算機界諾貝爾獎之稱的圖靈獎。從這個公式中不難看出,編程從本質上來說就是算法加數據結構,而算法是編程思想的核心部分。

編程可以將現實世界中的具體需求「翻譯」為代碼,數據結構和算法為我們如何翻譯和解決現實問題提供思路,就能使用程式語言與計算機進行溝通從而實現各種需求。

網友紛紛表示,「應當以數據結構算法為重,一線大廠更多考察的是對數據結構和算法的掌握程度。」

「如果不會數據結構和算法,面試這一關都過不去。」

數據結構和算法為什麼那麼重要?

1、升職加薪的依據數據結構和算法能夠高效解決面臨的複雜問題,是為boss省錢的技術。

2、進入大廠的敲門磚比起程式語言、框架,面試官其實更看重候選人能否能運用數據結構與算法來高效解決給定問題。

數據結構與算法功底紮實的程式設計師,其技術實力、業務能力、自學能力大多都不會差。對於大廠招人來講,如果候選者的算法基礎很好,就意味著以後進入公司學習新技術的成本會大大減少。

就如同金字塔一樣,數據結構和算法在最底層,而技術只是最上面的一部分。地基沒打紮實,將來定會遇到瓶頸。因為脫離數據結構和算法的技術往往門檻低,可替代性強。你會的,他人通過社會培訓也可以在短時間內掌握一定的技術,無疑將來會在自己的崗位競爭很激烈。

騰訊安全聯合實驗室表示,「包括騰訊在內的許多大廠,會把數據結構和算法,特別是算法作為面試中的重點內容,是取得offer的關鍵。」

「而一個人對數據和算法的理解,可以體現出他是否能在編程工作中靈活選用合適的數據結構和算法,有效降低代碼的複雜度並提升任務的完成效率,能夠直接體現出一個人對於編程這項工作的理解深度和實力。」

業務和技術掛鈎,而非數據結構和算法

討論中,「數據結構和算法」的支持者似乎佔了大半,只有零星的開發者站在了技術側。 當然,這樣的場景也合乎常理。這就好像你問高中教育是「應試教育」重要還是「素質教育」重要,我相信會有超過一半的人站在「應試教育」的一側,原因很簡單,應試能力決定了你是否能進好的大學。 同樣,在開發者程式設計師的領域,數據結構和算法掌握的牢固才能過大廠的面試,不然你也沒機會展示你的技術能力。這就直接導致了凡是有「轉碼」念頭的求職者全民刷leetcode,這盛況讓我想起了高考時期的《五年高考三年模擬》。

然而知乎用戶@老張的一針見血了:雖然大廠用leetcode來考面試者的數據結構和算法,但那本質也是「應試」——你刷的那些算法之後大概率也不會接觸到;接觸到,你也不會用。

換而言之,你掌握的leetcode層次的數據結構和算法,很可能只是讓你做個題。真正講到學術性的數據結構和算法的時候,你也得啞然了。 另一個知乎用戶@清寰就指出了,真正的算法,入門門檻很高,並不是刷題就能解決的,需要你有很強的邏輯思維能力。同時他還表示,技術是為業務去服務的,沒有業務要求的算法毫無意義

也有計算機系的學生現身說法。知乎用戶@yuantailing就指出,數據結構與算法在本科課程中的比重寥寥,最後真正在科研中選擇算法也很少。

誠然,想要斬獲大廠offer你需要在數據結構和算法的題目上有出色的表現,但要在實際落地中表現出色,則是考驗開發者的技術能力。

選擇並不互斥:數據結構算法和技術都可以做的很出色

小孩子才做選擇,大人只會說「我全都要」。

知乎用戶@maggch就指出,這兩個選擇不是互斥的。如果真的想要在計算機領域有所成績,那麼兩個部分都需要你付出努力。

同時他還指出,刷leetcode並不是僅僅為了應試,有的時候去理解吃透題目的出題知識點和出發點是很重要的。除了會使用工具進行應用開發,還要去了解背後的原理細節。不然學任何方面都只是皮毛。

的確,另一個知乎用戶@Ire寫了這樣的一個比喻:

這和知乎用戶@橘貓胖胖的觀點不謀而合:

數據結構與算法就是開發者的基本功,很多時候決定了你能到什麼樣高度的平臺。但是,到達這樣的平臺之後,和工作更貼近的還是技術,這也決定了你的工作上升空間。因此,是否有合格的基本功需要自己判斷,究竟需要在哪個方面下功夫是因人而異的。

就像知乎用戶@路鵝甲說的那樣,這不是一件非左即右的事情。

最後,在這個討論裡面看到了一個很有趣的觀點和大家分享一下:

真的沒有熱愛計算機的程式設計師嗎?

相關焦點

  • 考研計算機 | 數據結構—結構算法
    2021計算機考研數據結構—結構算法算法的設計取決於數據(邏輯)結構,而算法的實現依賴於採用的存儲結構
  • 科技至上主義的新機遇和新轉變
    2020年,科技至上主義面臨新機遇新型冠狀病毒橫掃全球,是2020年無出其右的「歷史大事」,這一尚未完全「謝幕」的事件空前地暴露出人類軀體的脆弱,也把科學和技術推向了從未有過的「至上」位置。
  • 前端學習數據結構與算法系列(一):初識數據結構與算法
    前言作為一個對算法沒有任何認知,非科班出身的前端程式設計師,如果想提高自己的能力,不再只寫業務代碼當一個應用工程師,算法是必須掌握的一門本領。算法也是一種思想,當你去讀一些優秀框架的源碼,如果對算法和數據結構一無所知,讀起來很困難,你無法理解人家為什麼要那樣寫,那樣寫的好處是什麼,接下來就跟大家分享下作為一個前端程式設計師,如何學習數據結構與算法。
  • BEAF-EX堅持「客戶至上」的核心價值理念
    BEAF-EX是一家全球領先創新型金融衍生品交易所,首創區塊鏈+金融模式,致力為實體經濟服務, 其核心金融業務涵蓋法幣交易、幣幣交易等多種交易模式。BEAF-EX自成立以來,憑著誠信及專業創新精神, 積極開拓國際市場。致力為環球客戶提供安全、便捷、多元化的全方位金融服務。「客戶至上」是BEAF-EX一直秉持的服務理念,我們將此理念貫穿於整個服務體系及營運流程之中,讓每位投資者都能享受無微不至的星級服務。同時,BEAF-EX為客戶提供多個交易優勢,讓客戶可全面享受優質的投資服務,為財富增值。
  • 「SCI論文至上」風可休矣!
    但隨著SCI論文相關標準「獨霸」教育、科研領域各類重要核心評價體系,「科技創新價值追求扭曲、學風浮誇浮躁和急功近利」等弊端日益凸顯。  「SCI論文至上」扭曲崗位評價導向。廣東某高校人事處負責人說,當前教職工的科研項目、個人發展、薪酬待遇等都與SCI論文指標掛鈎,這導致指標與崗位標準錯位,導致管理、教輔等非科研崗位職工也盲目追求發表SCI論文。
  • 計算機科學與技術和軟體工程專業的區別
    高考的學校和專業全國各省份已經陸續公布,近兩年大熱的專業恐怕當屬計算機科學與技術專業了。既然是大熱,所以也不是所有報這個專業的考生都能被錄取,有些考生因為一分之差錄取到軟體工程專業。我們聊聊這兩個專業的主要區別,首先了解一個專業先看這個專業的主要課程:計算機科學與技術專業主要課程:高等數學、線性代數,概率論,高級語言程序設計(C/C++/Java/Python)、離散數學、數據結構、信號處理原理、系統分析與控制、數字邏輯、人工智慧導論
  • 鍾南山在人民日報撰文:人民至上 生命至上
    回顧中國人民抗擊新冠肺炎疫情的艱苦鬥爭,一個個感人細節詮釋著人民至上的價值理念,一件件生動事實彰顯著生命至上的使命擔當。習近平總書記強調:「人民至上、生命至上,保護人民生命安全和身體健康可以不惜一切代價。」
  • 資料| 數據結構與算法 JavaScript 描述
    內容簡介 · · · · · ·通過本書的學習,讀者將能自如地選擇最合適的數據結構與算法,並在JavaScript開發中懂得權衡使用。此外,本書也概述了與數據結構與算法相關的JavaScript特性。數組和列表:最常用的數據結構。棧和隊列:與列表類似但更複雜的數據結構。鍊表:如何通過它們克服數組的不足。字典:將數據以鍵-值對的形式存儲。散列:適用於快速查找和檢索。集合:適用於存儲只出現一次的元素。二叉樹:以層級的形式存儲數據。圖和圖算法:網絡建模的理想選擇。
  • 大數據學院-計算機科學與技術(專升本)專業介紹
    專業介紹本專業培養掌握計算機科學的基本理論,掌握計算機科學的思維方法、算法設計能力、工程設計方法和良好工程素養,具備在實際應用中綜合運用這些知識研究和設計解決方案的基本能力,能在政府、企事業等單位從事計算機系統研究、開發、部署和應用等相關領域工作的高素質應用型人才。
  • 論文「SCI至上」是個笑話!破除論文「SCI至上」隱含大智慧!
    「SCI至上」的要害之處恰恰在這裡,把不等式當成了等式,把本該由專業人員去判斷的內容交給了資料庫的論文目錄。顯然,這不是科學思維,而是一種具有明顯邏輯錯誤的思維。「SCI至上」已經明令破除了,可破除這種笑話式的思維還有一段時間,或許很難徹底破除。
  • 程式設計師要不要學習算法、數據結構、計算機原理等等基礎知識?
    程式設計師要不要學諸如算法、數據結構、網絡編程、計算機原理等等基礎課程?一直是碼農界經久不衰的話題。
  • 海都學院大數據學院計算機科學與技術(專升本)專業介紹
    青島農業大學海都學院大數據學院計算機科學與技術(專升本)專業介紹如下:  一、專業介紹  本專業培養掌握計算機科學的基本理論,掌握計算機科學的思維方法、算法設計能力、工程設計方法和良好工程素養,具備在實際應用中綜合運用這些知識研究和設計解決方案的基本能力
  • 基於Python介紹算法和數據結構的在線互動書,240頁pdf
    這本教科書是關於計算機科學的。它也是關於Python的。然而,還有更多。算法和數據結構的研究是理解計算機科學的核心。
  • 破「SCI至上」後,科研評價體系如何立
    過度追求SCI論文扭曲科技創新價值追求  SCI(即科學引文索引)自上世紀80年代末引入我國以來,給我國高校及科研機構的科研工作者了解國際學術動態提供了資料和數據來源,也打開了一條對外傳播學術成果的通道,對我國科學研究特別是基礎研究的快速發展起到了很大的推動作用。
  • 教育部、科技部重磅文件:堅決破除論文「SCI至上」!丨附原文件
    對於基礎研究,論文是成果產出的主要表達形式,堅決摒棄「以刊評文」,評價重點是論文的創新水平和科學價值,不把SCI論文相關指標作為直接判斷依據;對於應用研究和技術創新,評價重點是對解決生產實踐中關鍵技術問題的實際貢獻,以及帶來的新技術、新產品、新工藝實現產業化應用的實際效果,不以論文作為單一評價依據。對於服務國防的科研工作和科技成果轉化工作,一般不把論文作為評價指標。
  • 快速入門數據結構和算法
    本文簡要分享算法基礎、常見的數據結構以及排序算法,給同學們帶來一堂數據結構和算法的基礎課。文末福利:阿里雲開發者訓練營來了。一  前言1  為什麼要學習算法和數據結構?2  業務開發要掌握到程度? 二  數據結構基礎1  什麼是數據結構?數據結構是數據的組織、管理和存儲格式,其使用目的是為了高效的訪問和修改數據。數據結構是算法的基石。如果把算法比喻成美麗靈動的舞者,那麼數據結構就是舞者腳下廣闊而堅實的舞臺。2  物理結構和邏輯結構的區別?
  • 算法與算法工程師,技術與技術人員
    (註:標題裡的算法,指機器學習算法,或者說「算法工程師」這個職位名稱裡的「算法」,不是「算法與數據結構」裡的那個算法。誰能告訴我有沒有什麼更好的名字來區別這它們,或許是「機器學習算法」與「傳統算法」?)算法與算法工程師先來一段我在知乎裡回答「做算法工程師是一種怎樣的體驗?」
  • 服務為王用戶至上 夜神締造新安卓模擬器時代
    不過,這些優秀的數據並沒有讓夜神安卓模擬器這家平臺忘記初心,反而更加珍惜每一位用戶需求......  FAQ平臺搭建 24小時在線解決玩家問題  為快速解決手遊玩家相關問題,夜神安卓模擬器平臺專門開通了FAQ平臺,該平臺匯集了80%的用戶所遇到的基礎問題和答案,用戶可自助搜索和查詢相關問題解決方案。
  • 我們為什麼要學習數據結構和算法?
    對於我們來說,數據結構和算法是那麼熟悉,又是那麼陌生。作為計科院的學生,大學裡都接觸過,但是進入社會以後,我們看起來很少會用到這個。這時候不僅會想到一件問題,學習數據結構和算法真的有用嗎?不學習這個就不能做開發了嗎?在當今的IT行業裡面,有些人不懂數據結構和算法,也能做一輩子的開發,這沒啥毛病,但是兄弟們,開發是開發,那可不是研發啊。
  • 小水滴平臺:大數據算法優勢實現高質量發展
    面對這一趨勢,小水滴平臺在大數據平臺建設的基礎上,積極探索前沿技術、核心算法、加快大數據、人工智慧服務等技術應用布局,推動線上線下融合發展,對業務發展的支撐和服務能力得到跨越式發展。大數據技術是重中之重,大數據的算法、模型邏輯、技術和行業規制是創新的核心競爭力。大數據催生了市場新場景,線上經營模式日趨成熟,實現了服務場景的無縫對接。