程序员如何高效学习技术?

我们相信努力学习一定会有收获,但是方法不当,既让人身心疲惫,也没有切实的回报。

  不少朋友每天都阅读技术文章,但是第二天就忘干净了。工作中领导和同事都认可你的沟通和技术能力,但是跳槽面试却屡屡碰壁。面试官问技术方案,明明心里清楚,用嘴说出来却前言不搭后语。面试官再问底层算法,你说看过但是忘记了。他不在乎你看没看过,答不上就是零分。正如男女相亲,男方谈吐潇洒才能吸引姑娘。可是男方紧张了,平时挺能说,关键时候却支支吾吾,姑娘必然认为他不行。人生充满了许多考试,有形的和无形的,每次考试的机会只有一次。

  工作五年十年后,别人成了架构师,自己还在基层打滚,原因是什么?职场上无法成功升迁的原因有很多,没有持续学习、学习效果不好、无法通过心仪公司的的面试,一定是很重要的原因。

  把自己当成一台计算机,既有输入,也要有输出,用输出倒逼输入。

  近些年诞生了许多新技术,比如最时髦的AI(目前还在智障阶段),数学基础是初中就接触过的概率统计。万丈高楼从地起,不要被新工具或者中间件迷住双眼,一味地追新求快。基础知识是所有技术的基石,在未来很长的时间都不会变化,应该花费足够的时间巩固基础。

  以数据结构和算法为例,大家阅读一下Java的BitSet的源码,里面有大量的移位操作,移位运算掌握的好,看这份源码就没问题。Java同步工具类AQS用到了双向链表,链表知识不过关,肯定搞不懂它的原理。互联网大厂都喜欢考算法,为了通过面试也要精通算法。

  以Java工程师应该掌握的知识为例,按重要程度排出六个梯度:

第一梯度:计算机组成原理、数据结构和算法、网络通信原理、操作系统原理;

第二梯度:Java基础、JVM内存模型和GC算法、JVM性能调优、JDK工具、设计模式;

第三梯度:Spring系列、Mybatis、Dubbo等主流框架的运用和原理;

第四梯度:MySQL(含SQL编程)、Redis、RabbitMQ/RocketMQ/Kafka、ZooKeeper等数据库或者中间件的运用和原理;

第五梯度:CAP理论、BASE理论、Paxos和Raft算法等其他分布式理论;

第六梯度:容器化、大数据、AI、区块链等等前沿技术理论;

有同学认为第五梯度应该在移到第一梯度。其实很多小公司的日活犹如古天乐一样平平无奇,离大型分布式架构还远得很。学习框架和中间件的时候,顺手掌握分布式理论,效果更好。

  许多公司的招聘JD没有设定技术人员年龄门槛,但是会加上一句"具备与年龄相当的知识的广度与深度"。多广才算广,多深才算深?这是很主观的话题,这里不展开讨论。

  如何变得更广更深呢?突破收入上升的瓶颈,发掘自己真正的兴趣。

  大多数人只是公司的普通职员,收入上升的瓶颈就是升职加薪。许多IT公司会对技术人员有个评级,如果你的评级不高,那就依照晋级章程努力升级。如果你在一个小公司,收入一般,发展前景不明,准备大厂的面试就是最好的学习过程。在这些过程中,你必然学习更多知识,变得更广更深。

  个人兴趣是前进的动力之一,许多知名开源项目都源于作者的兴趣。个人兴趣并不局限技术领域,可以是其他学科。我有个朋友喜欢玩山地自行车,还给一些做自行车话题的自媒体投稿。久而久之,居然能够写一手好文章了,我相信他也能写好技术文档。

体系化的知识比零散的更容易记忆和理解,这正如一部好的电视剧,剧情环环相扣才能吸引观众。建议大家使用思维导图罗列知识点,构建体系结构,如下图所示:

坚持写技术博客,别在意你写的东西在网上已经重复千百遍。当自己动手的时候,才会意识到眼高手低。让文章读起来流畅清晰,需要呕心沥血的删改。写作是对大脑的长期考验,想不到肯定写不出,想不清楚肯定写不清楚。

造个轮子

我们经常说不要重复造轮子。为了开发效率,可以不造轮子,但是必须具备造轮子的能力。优秀开源项目的作者通常具备极高的工程能力,从工程的实际需求出发,用代码实现一个通用的解决方案。造轮子的目的,首先是巩固编程知识,其次是锤炼工程能力。

今天给大家介绍一款强大的前端工具啊,JNPF,前后端分离架构,丰富的在线设计体验,强大的代码生成器,让前后端代码一键生成,实现低代码开发,让开发更多关注业务,节省研发成本。

它拥有灵活的配置功能,可以让用户轻松的生成行和列,并且通过简单的拖放就可以实现对它的布局的调整,相信这可以大大提高我们的工作效率。

同时这个编辑器还提供了多种组件,包括编辑器、预览器和配置模板,既可以根据实际需求单独使用,也可以满足不同场景下的需求。同时它还有跨平台适配多软硬件的一个支持功能,让用户可以方便的应对不同的系统环境。此外,它还有一个非常非常实用的实时预览功能,在表单编辑的页面可以随时查看表单的渲染效果,这样我们就可以方便对表单进行调整和优化。如果你想提高工作效率,建议可以来试试这个强大的工具。

项目源码:https://www.jnpfsoft.com/?csdn

建议造一个简单的MQ,会用到通信协议、设计模式、队列等许多知识。在造轮子的过程中,又要翻阅大量的技术资料或者博客,这就是用输出倒逼输入。

相关推荐
大模型码小白10 分钟前
数据可视化:AI 生成 HTML5 动态交互式数据图表
前端·数据库·人工智能·深度学习·机器学习·信息可视化·html5
八荒启·交互动画10 分钟前
Web特效01—什么是渲染
前端·javascript·网页特效·八荒启-交互动画
名字还没想好☜13 分钟前
Java Collectors.groupingBy 进阶:多级分组、下游收集器与统计聚合一次搞定
java·windows·后端·python·spring
小肥君14 分钟前
前端测试websocket
前端·websocket·状态模式
Wang's Blog17 分钟前
Java框架快速入门: Spring Security+OAuth2之前端按钮级安全与路由守卫
java·安全·spring
ocean210335 分钟前
2025-2026年Java语言及生态面试高频知识点洞察
java·开发语言·面试
南京兴帝文化传媒有限公司35 分钟前
基于地图平台的本地商户信息优化:药店夜间服务标注与客户转化实操
前端·javascript·数据库·人工智能·geo 优化·geo优化避坑·ai搜索获客
八荒启·交互动画36 分钟前
Web特效04——GPUvs CPU,为什么图形计算要交给GPU,什么是“并行计算”
前端
2302_11141 分钟前
java时间类型
java·开发语言
用户8181870627461 小时前
第25章 Redis集群脑裂实录:一次真实故障复盘
java·后端