---
title: 如何高效的学习技术
shortTitle: 如何高效的学习技术
description: 转载链接：https://www.cnblogs.com/xiaoyangjia/p/11535486.html
author: 编码砖家
category:
  - 优质文章
---

*   [学什么](#what)
*   [基础与应用](#base)
*   [广度与深度](#wide)
*   [哲学](#philosophy)
*   [英语](#english)
*   [怎么学](#how)
*   [知识体系](#system)
*   [克服遗忘](#forget)
*   [碎片时间](#fragment)
*   [用起来](#use)
*   [技术分享](#share)
*   [造个轮子](#wheel)

  我们相信努力学习一定会有收获，但是方法不当，既让人身心疲惫，也没有切实的回报。高中时代，我的同桌是个漂亮女同学。她的物理成绩很差，虽然她非常勤奋的学习，但成绩总是不理想。为了巩固纯洁的同学关系，我亲密无间地辅导她的物理，发现**她不知道题目考什么**。我们的教科书与试题都围绕着考试大纲展开，看到一道题，应该先想想它在考哪些定理和公式的运用。  

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

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

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

### 学什么

#### 基础与应用

  近些年诞生了许多新技术，比如最时髦的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公司会对技术人员有个评级，如果你的评级不高，那就依照晋级章程努力升级。如果你在一个小公司，收入一般，发展前景不明，准备大厂的面试就是最好的学习过程。在这些过程中，你必然学习更多知识，变得更广更深。  

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

#### 哲学

  哲学不是故作高深的学科，它的现实意义就是解决问题。年轻小伙是怎么泡妞的？三天两头花不断，大庭广众跪求爱。这类套路为什么总是能成功呢？礼物满足女人的物欲，当众求爱满足女人的虚荣心，投其所好。食堂大妈打菜的手越来越抖，辣子鸡丁变成辣子辣丁，为什么呢？食堂要控制成本，直接提价会惹众怒。  

  科学上的哲学，一般指研究事物发展的规律，归纳终极的解决方案。软件行业充满哲学味道的作品非常多，比如[《人月神话》](https://item.jd.com/12401749.html)。举个例子，当软件系统遇到性能问题，尝试下面两种哲学思想提升性能：

*   空间换时间：比如引入缓存，消耗额外的存储提高响应速度。
*   时间换空间：比如大文件的分片处理，分段处理后再汇总结果。

设计稳健高可用的系统，尝试从三个方面考虑问题：

*   存储：数据会丢失吗，数据一致性怎么解决。
*   计算：计算怎么扩容，应用允许任意增加节点吗。
*   传输：网络中断或拥塞怎么办。

从无数的失败或者成功的经验中，总结出高度概括性的方案，让我们下一步做的更好。

#### 英语

  英语是极为重要的基础，学好英语与掌握编程语言一样重要。且不说外企对英语的要求，许多知名博客就是把英文翻译成中文，充当知识的搬运工。如果英语足够好，直接阅读一手英语资料，避免他人翻译存在的谬误。

### 怎么学

#### 知识体系

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


![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/nice-article/bokeyuan-ruhegaoxiaodixuexijishu-b27d5dbf-66ca-45fa-b1a4-f0a3ba0a346b.png)

#### 克服遗忘

  高中是我们知识的巅峰时刻，每周小考每月大考，教辅资料堆成山，地狱式的反复操练强化记忆。复习是对抗遗忘的唯一办法。大脑的遗忘是有规律的，先快后慢。一天后，学到的知识只剩下原来的25%，甚至更低。随着时间的推移，遗忘的速度减慢，遗忘的数量也就减少。


时间间隔|记忆量|
---|---|
刚看完|100%|
20分钟后|60%|
1小时后|40%|
1天后|30%|
2天后|27%|

每个人的遗忘程度都不一样，建议第二天复习前一天的内容，七天后复习这段时间的所有内容。

#### 碎片时间

  不少朋友利用碎片时间学习，比如在公交上看公众号的推送。其实我们都高估了自己的抗干扰能力，如果处在嘈杂的环境，注意力容易被打断，记忆留存度也很低。碎片时间适合学习简单孤立的知识点，比如链表的定义与实现。  

  学习复杂的知识，需要大段的连续时间。图书馆是个好地方，安静氛围好。手机放一边，不要理会QQ微信，最好阅读纸质书，泡上一整天。有些城市出现了付费自习室，提供格子间、茶水等等，也是非常好的选择。

### 用起来

### 技术分享

  从下面这张图我们可以看到，教授他人是知识留存率最高的方式。  

![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/nice-article/bokeyuan-ruhegaoxiaodixuexijishu-4a0cd5de-99ba-4837-acb5-61969271f8fc.png)

  准备PPT和演讲内容，给同事来一场技术分享。不光复习知识，还锻炼口才。曾经有个同事说话又快又急，口头禅也多，比如"对吧、是不是”，别人经常听不清，但是他本人不以为然。领导让他做了几次技术分享，听众的反应可想而知，他才彻底认清缺点。  

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

### 造个轮子

我们经常说不要重复造轮子。为了开发效率，可以不造轮子，但是必须具备造轮子的能力。建议造一个简单的MQ，你能用到通信协议、设计模式、队列等许多知识。在造轮子的过程中，你会频繁的翻阅各种手册或者博客，这就是**用输出倒逼输入**。