前言
自学/学习路线这样的一期我想写很久了,因为一直想写的全一点硬核一点所以拖到了现在,我相信这一期对不管是还在学校还是已经工作的同学都有所帮助,不管是前端还是后端我都墙裂建议大家看完,因为这样会让你对你所工作的互联网领域相关技术栈有个初步的了解。
基础知识
数据结构
基本的数据结构是非常重要的,无论接触什么编程语言,这些基本数据结构都是首先要掌握的。具体的实现,就体现在java的集合类中。这些数据结构,就是这些复杂工具的具体原始形态,要烂记于心。
培训机构一般没有时间普及基础知识,通过算法和数据结构,“通常”能够一眼看出是否是经过培训。
这篇文章耗费了我大量的精力,你要是觉得好,请不要吝啬你的赞。如果你认同,可以关注我的微信公众号【学编程的小姐姐】里面讲的就是这些内容。我会尝试更加系统化。
常用算法
算法是某些大厂的门槛。毫无疑问,某些参加过ACM的应届生,能够秒杀大多数工作多年的码农。算法能够培养逻辑思维能力和动手能力,在刚参加工作的前几年,是非常大的加分项。但随着工作年限的增加,它的比重在能力体系中的比重,会慢慢降低。
算法的学习方式就是通过不断的练习与重复。不精此道的同学,永远不要试图解决一个没见过的问题。一些问题的最优解,可能耗费了某个博士毕生的精力,你需要的就是理解记忆以及举一反三。最快的进阶途径就是刷leetcode。
对于普通研发,排序算法和时间复杂度是必须要掌握的,也是工作和面试中最常用的。时间充裕,也可涉猎动态规划、背包等较高阶的算法知识,就是下图的左列。

Java基础
JVM
Java程序员的最爱和噩梦。以oracle版本为准,各个jvm版本之间有差别。JVM的知识包含两方面。一个是存储级别的,一个是执行级别的。
以存储为例,又分为堆内的和堆外的两种,各有千秋。垃圾回收器就是针对堆内内存设计的,目前最常用的有CMS和G1。JVM有非常丰富的配置参数来控制这个过程。在字节码层面,会有锁升级以及内存屏障一类的知识,并通过JIT编译来增加执行速度。
JVM还有一个内存模型JMM,用来协调多线程的并发访问。JVM的spec非常庞大,但面试经常提及。
另外,jdk还提供了一系列工具来窥探这些信息。包含jstat,jmap,jstack,jvisualvm等,都是最常用的。
Java进阶
下面有些知识点,界限是非常模糊的。它们你中有我,我中有你,可以说是一个整体。
Redis
缓存可以说是计算机系统中应用最广泛的技术了。对于分布式缓存来说,最常用的就是Redis了。由于其数据结构丰富,被应用的场景越来越多。
基本的5种数据类型都知道,但你要说出其他几种,给人的印象就不一样了。Redis有主从和Cluster两种集群模式,高可用配置也不相同。
Redis几乎能适应除搜索外的所有互联网业务,对于其使用来说,一些规范限制是非常有必要的。一般速度越快的系统,越容易被长尾操作给拖死。所以,对于info命令的内容,也应有了解。
End
你可能发现并没有自己关注的组件。这不奇怪,比如个人喜欢的的ES,就找不到一个合适的位置。这里只是最主要的一点内容,就已显繁杂,一个大杂烩并不见得好。
值得提醒的是,这些知识,是众多发展路线上的一个分支。可能有的朋友,目前只在其中的一个点上面奋斗,缺乏所谓的广度;也可能有的朋友,有着全栈的标签,却做着SSM的工作。不同的公司需要的技术水平不尽相同。一个专注ERP业务的公司,会在项目管理上多些文章;一个专做IM的团队,可能对网络开发滚瓜烂熟。