为什么要学习算法和数据结构
网络上有很多文章都描述了算法的重要性,包括大公司面试,有大量的算法题。如果算法弱,那么极大可能与大公司错过。下面谈一谈为什么算法和数据结构重要,并且算法知识需要沉淀。
作为Java web开发人员,如果刚开始没有进入大公司,而进入小公司,又忙于项目,忙于学习各种框架,忽视了底层的学习,经过两三年之后,总会意思到自己在某方面的薄弱,特别是想深入一些框架底层知识,Java源码的内容等。为什么出现这种情况,因为在前期学习框架的内容时,框架是易学的,按照文档规范去做就可以了,甚至可以不用思考。我在刚入一家公司做Java开发时,大牛将框架已经搭建完成,而自己要完成的工作就是写接口,并且写接口需要完全按照一定的规范去实现,有一套标准化的流程,到了最后,自己可以不需要太多思考,按模板去套。当这样持续了一年之后,发现自己除了一套按照规范实现功能的技能,其他技能都非常薄弱,大牛的框架底层实现相对复杂一点,但都已经封装好了,上手的人可以不需要知道框架是如何运行的,但对个人的成长在某方面是缺失的。如果自己不努力学习。
之后去啃框架内的知识时,需要了解的内容才让我打开眼界。一个简单的例子,程序会将所有的操作都放入都一个队列中,然后由线程中队列中取出,再丢给其他线程去操作,队列是先进先出的,这样不会因为放入的操作超时太长时间。也许会觉得这个很好理解,是的队列的知识很简单,但是它会经常被使用。如果以前没有学过,可能对这个概念不太了解,如果这个概念不了解,后续的其他操作就变得很麻烦,逐渐的,就会丧失继续研究代码的动力。
现在是2019年,互联网发展已经进入到新的阶段,而不在像前两年的野蛮生长,现阶段会对从业人员的要求会提高,毕竟市场上的人也逐渐增多,我知道的一个Java岗位,一天就有2000个简历投递进入,而想要打败这么多的人,能力不突出那么就会被淘汰掉,而什么是自己突出的能力,就需要好好思考一番。
突出能力包括解决复制问题的能力,有深入框架底层,能够解决一些疑难杂症的能力,有快速学习,快速上手的能力,而这些都需要靠一些知识沉淀,这些知识的沉淀都还得是计算机知识。
为什么学习算法可以让自己的知识沉淀,通过编程语言实现算法,能够让自己逻辑更清晰,让自己思考的更全面,比如二叉树,B-树,B+树,通过一些学习和实现,能够理解为什么数据库中实现B+树作为存储结构。在实现过程中,也能够检验自己对编程语言的驾驭能力,而不是通过堆砌代码来实现简单的接口任务。沉淀的还有自己的架构能力,虽然这种方式与架构能力八竿子打不着,但是确可以深深地影响自己以后架构能力,如果对算法,数据结构了解不深,那么就根本不会去思考框架的优劣,不去思考框架给自己项目带来哪些影响。
万变不离其宗的是那些算法和理论,在日新月异的互联网中,框架变化太快,追逐框架,自己的精力永远也更不上。而最新的人工智能等新技术,对算法的要求特别高,应该说,如果一个人的算法知识不够,那么对新技术的知识就会完全不懂,更不谈通过这些新技术而衍生的方面,自己就只能错过这些。而对于从事Java web开发领域,如果一个简单的排序,一般会想到For循环遍历,是否会想到冒泡排序,是否会使用到Java已经封装好了的排序规则,而底层实现就是用到的那些算法。
并不是算法有多么的好,必须要像算法开发工程师那样精通算法,其实不是,也不是需要短时间掌握的,而是通过学习算法和数据结构,以达到知识的一种沉淀。
如果真的开发了几年的程序员,没有计算机知识的沉淀,那么自己就可能无法竞争的过年轻的程序员。前几年还好,大龄程序员因为市场野蛮生长,已经获得了足够的经验和地位,而之后对于新进入的程序员,要求就非常严苛,毕竟互联网也在升级。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构