标签:image 代码 csdn 动手 价值 ESS https 自己 算法
算法和数据结构是程序员的基本内功,基本内功修炼不好,以后修炼一些招式,如设计模式、架构,新的技术热点如区块链,新的技术语言go等,都会感觉非常吃力。
喜欢看武侠小说的知道,张无忌正是因为内功精纯,再加乾坤大挪移加持,学习任何武功招式都如探囊取物,短时间内即可融汇贯通。程序员的内功-数据结构和算法,乾坤大挪移-设计模式。
说实话,作为一个渣渣程序员,非CS专业出身,基础本就比较薄弱。正好借着写文章的机会,把数据结构和算法及设计模式都系统的学习一遍,并且把这些以比较容易理解的形式表达出来,授人以渔,同时自己也能理解的更透彻,何乐而不为。
扯的好像有点远了,言归正传,为什么要学习数据结构和算法,我觉得有以下几个主要原因:
为什么程序员被称为码农呢?大家都知道,越是大公司,分工越精细,每个人几乎都是一颗可以随时替代的螺丝钉。每天的工作也无非就是在原有的系统之上,做一些bug修复,一些小的功能点迭代。涉及到的编码无非是一些curd操作,尤其是现在在一些优秀的框架之下,程序员的编程几乎是傻瓜式的。
那怎么才能体现你的价值?告别curd boy呢?
连一些基本的数据结构和算法都掌握不了,一些普通的算法题解法都不会,你怎么能在这近百万的程序员之中脱颖而出呢?任何群体都如金字塔,处于塔尖的人很少,不能掌握好数据结构和算法,那你就基本只能处于程序员金字塔的最底端。
任何公司,都会有一些技术讨论吧!有时候技术leader拉你们一起讨论一些问题,人家说这很简单嘛,就是背包问题,或者这个用dfs算法不就ok了嘛,你如果连这些都听不懂,那是不是觉得自己很low,根本无法同别人沟通交流。更别提在技术方面有一些自己的独到见解了,也就无从谈起去一些公开场合分享自己的观点。
世界天天在变,技术热点千变万化,但是处于最基础的数据结构和算法确是处于基本不变的。学好了数据结构和算法,你就能够很云淡风轻的笑傲不断变化的新技术及新趋势,额,这归根到底不还说xx算法么,就是封装了一下而已,在数据结构和算法的基石之上,不断提升自己的思维、逻辑分析、抽象总结能力,那你就是一个越来越逼格的程序员了。
终于到了最重要的时刻,前面废了半天话,无非是想打动你这颗如顽石般的心,让你觉得学数据结构和算法好像很有用哦,那我是应该好好学啊。如果你意识到这一点,并觉得有时候面试算法对自己像是一种折磨和煎熬,又或者感觉好像自己从来就没掌握过数据结构和算法,那么恭喜你,咱们接下来可以一起学习进步了。
怎么学呢?
看到这篇文章的估计大部分已经是大学生或者已经参加工作了吧,相信你在这么多年的不断打怪升级中,总结了不少学习方法吧?在这里,我分享一下我的学习经历。
我基础比较薄弱嘛,曾经好几次发誓要学好数据结构和算法,买了书,买了课程,每次都是看完数组和链表,顶多到了递归,后面就坚持不下去了,觉得真是太难了,跟天书一般,这都是谁设计的啊。
我觉得可能90%的人都有跟我类似的经历,人本身惰性比较强,遇到挫折容易找自我安慰,但是我们真的甘心堕落吗?真的想一辈子当一个底层curd boy?从来没想过多赚点钱,早点赢取白富美,走上人生巅峰?
咳咳咳,心里想到白富美,是不是顿时感觉浑身充满了动力,白富美舍我其谁啊,那就好好跟我一起迈过数据结构这道坎(偷偷告诉你,其实是大家一起迈,我也没迈过去呢)。
为了让你对数据结构和算法能有个全面的认识,这里借用小争哥的一张图,里面几乎涵盖了所有数据结构和算法书籍中都会讲到的知识点。
所谓按图索骥,哪里不懂学哪里,直到某一天,你闭上眼睛,这一幅脑包图可以完整的出现在你的脑子里,并且可以清晰的回忆起每个知识点,分别对应LeetCode上哪些典型题目及经典解法,和有哪些坑点,能总结出什么经验来,平时在项目中可能会怎么用到,那你就真的是学到了。
作为一名典型普通程序员,我也跟你一样,很懒。如果你觉得写的有点道理,并且想和我一起好好迈过数据结构和算法这道坎,记得点个??哦,如果能留言评论交流就更好了。
程序员之道,在无止境,扫码关注催更,一起无止境学习吧!
标签:image 代码 csdn 动手 价值 ESS https 自己 算法
原文地址:https://www.cnblogs.com/chanllenge/p/12528483.html