工作中幾乎用不到算法,爲何要學算法?

 

前言

不知道你有沒有發現,非算法類的崗位,工作之後幾乎沒有用到什麼算法,爲什麼還要學算法?本文談談自己的看法,不供參考。

從用人者角度

毋庸置疑,面試是用來篩選候選人的,在這個僧多粥少的時候,就需要提高篩選條件,例如最常見的學歷,不是說學歷一般的人不好,而是總體來說,學歷好的人裏面挑選到合適的概率比較大而已,這就是現實。而面試題中,算法相比於其他記憶型的題目,就能很好的體現一個人的邏輯和思路,因而也是一個很好的篩選條件。當然像操作系統,網絡,Linux等都是很多公司喜歡考察的點。

所以爲了面試還是需要準備學習算法的,只不過面試所要準備的就比較廣了。

從個人角度

進去的第一家公司基本用不上什麼算法(血的教訓,在學校的時候一定要好好準備),甚至用不上網絡編程,基本就是簡單純C開發,因爲那些東西早就封裝好了(由另外一個組負責開發維護),只需要調用即可。包括後來去面試,主要面試了兩類公司,一類是傳統通信技術類,一類是互聯網公司,前者關注項目本身,以及基本的技術技能更多一些,而後者考察的方面通常比較多,包括操作系統,數據庫,算法,網絡等知識。

那麼面完之後是不是真的就完全沒用了呢?確實,大多數時候根本用不上。你寫的可能多是業務代碼,是業務流程的設計,代碼實現可能只是很小的一環。而且現有算法實現一搜一大把,基本不太可能要你自己去實現什麼快排,跳錶,快排,紅黑樹之類的算法,但是學習算法有好處。

例如,你可能要根據你的業務排序需求來選擇是用穩定排序還是非穩定排序;你可能會根據插入和刪除數據的頻率來選擇使用array list還是link list;你可能爲了處理top K問題採用堆相關算法;可能爲了某種情況下的快速查找而使用哈希;你可能在設計你的業務數據結構時引用了基本數據結構的思想。

好了,我編不下去了,你看着辦給自己解釋一下吧。

常見的數據結構與算法

最基本的數據結構和算法包括:

  • ……

更多內容可查看公衆號【編程珠璣】菜單欄的數據結構與算法部分。書籍有《算法圖解》(Python實現),《算法》(Java實現),《數據結構與算法分析:C語言描述》。雖然本文提到的是一些教科書般的算法,但是算法涉及的方面很廣,你可以認爲是一種解決問題思路或者方法。

總結

通常我們不需要自己實現這些算法,不過我覺得從中瞭解以下幾點非常重要

  • 時間和空間複雜度的概念

  • 各類數據結構或算法的效率

  • 各類數據結構或算法的複雜度

  • 各類數據結構或者算法的適用場景

  • 常見的如vector,map,set等容器背後的數據結構是什麼,它們的查找或者插入效率如何

  • 從現有數據結構和算法中獲得思路

  • 根據現有問題選擇合適的數據結構和算法

不像Java,C++,Python之流,C庫中可能沒有上面提到的數據結構或者算法的實現,因而C語言也是加深對它們理解的不二選擇。

一切爲了更好的解決實際問題。

以上就是本人對算法的淺薄認識,歡迎補充。

 

​首發:公衆號【編程珠璣】

作者:守望先生

原文:https://www.yanbinghu.com/2019/11/12/47658.html

 

推薦閱讀:

學Linux到底學什麼?

關注公衆號【編程珠璣】,獲取更多Linux/C/C++/算法/計算機基礎/工具等原創技術文章。後臺免費獲取經典電子書和視頻資源

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章