Java后端学习路线图,你真的只需要这一张!
Java后端学习路线图,你真的只需要这一张!
前言
学习路线图往往是学习一样技术的入门指南。网上搜到的Java学习路线图也是一抓一大把。
今天我只选一张图,仅此一图,足以包罗Java后端技术的知识点。所谓不求最好,但求最全,学习Java后端的同学完全可以参考这张图进行学习路线安排。
当然,有一些知识点是可选的,并不是说上面有的你都要会啦。我在复习秋招的过程中就是基于此图进行复习的,感觉效果还是不错的。
闲言少叙,我们还是看看这张图上都包含哪些有价值的信息吧。再次说明,本文只对路线图做一个简单地解读,仅供参考。大家可以根据自身情况来指定合理的学习计划,相信也会大有裨益。
1 计算机基础
这部分内容是计算机相关专业同学的课程,但是非科班的小伙伴(譬如在下)就需要花时间恶补了。特别是计算机网络,操作系统,数据结构这三门课程。
至于编译原理,个人大概懂一点就行了,我也只看过简单的概念和状态机相关的内容,并不是特别重要。
2 Java编程
这里的Java编程部分包含了很多内容。我们可以分别看看,大概归纳一下就是这几个部分。
Java基础
这里的Java基础包括基本语法,集合类框架,以及一些高级特性,比如反射,注解等等。
Java基础的知识点非常多,所以要真正搞懂也没有那么简单,另外,随着时间推移,一些新特性也需要得到我们的重视,比如时下流行的JDK8。
设计模式
我一直觉得设计模式可以和Java基础一块学,所以我也把它放在这里。当然,一些真正使用到设计模式的地方,譬如JDK的集合类,IO流等等,也需要你足够重视。
Java Web技术
Java Web技术包括J2EE,以及web框架,乃至一系列常用的组件。
1 J2EE主要包括的就是servlet,jsp这些比较复古的web开发组件了。虽然现在直接用它们的情况比较少,但是我们还是需要花一些时间去掌握它们的。
2 web框架常用的就是Spring了,相应的,hibernate和mybatis也需要了解一下。
3 同时,JavaWeb开发时的常用类库,比如jnuit单元测试,log4j日志工具,以及构建工具maven,都属于我们要掌握的范畴。
4 最后,要注意的是,Web相关的一些基本知识,比如HTTP协议,网络安全基础,也是我们要考虑的部分。
Java并发技术
Java的并发技术泛指Java的多线程技术,以及JUC包里的并发类,比如线程池,并发工具类,阻塞队列等等。
Java并发技术完全可以独立出来学习,是Java进阶知识的一大重点。
Java网络编程和服务器
这一块内容是Java中比较复杂但也很重要的一块内容。比如BIO,NIO,AIO的一些使用和原理,以及tomcat这类web服务器,甚至是netty这种网络编程框架,都是可以去了解和学习的内容。
Jvm基础与调优
JVM是提供Java程序运行的一个进程,学习JVM知识,也是我们的必经之路。除了看懂《深入理解jvm虚拟机》以外,我们还要学习的内容就是JVM调优,使用合适的工具诊断问题,最后解决问题。
这部分内容在面试中呈现的不仅仅是GC,内存分区,以及类加载器,也包括了我所说的JVM调优问题。
3 Linux
作为后台同学,常年被面试官问linux相关的问题,所以觉得学好linux还是蛮重要的,除了基本命令以外,最好还能了解一些shell脚本,甚至是内核相关的知识,这方面是我的一个弱项。
4 数据相关
在这个路线图里,数据部分囊括了非常多的数据源,我们可以来看看都有哪些是我们需要掌握的。
关系数据库Mysql
这个不必多说,人手都要会,不管是基础的crud,索引,抑或是进阶的存储引擎,分布式方案等,我们都需要对应掌握。
缓存
如Redis,memcache一类的缓存,作为后端开发者的我们也需要对应掌握,当然,它们的高级特性,以及分布式方案,也是必备的知识点。
搜索引擎
基于Lucene的solr,elasticsearch这类搜索引擎,本质上也是数据源,但是并不是后端必备的内容,不过学一学也没有坏处啦。
大数据
海量数据处理的场景越来越多,大数据技术如hadoop,storm等也越来越火,但是大数据应用一般会由专业的大数据工程师来做,所以我们学一些基本内容也就足够了。
5 算法和数据结构
算法一直是校招同学面前的一座大山,作为后端同学来讲,除了基本的数据结构算法以外,也要会一些高级的算法,譬如dp,搜索,贪心等等。
另外,通过LeetCode等题库来刷题的方式来巩固算法也是公认的好办法了。
6 分布式
最后一个部分,也是内容最多,覆盖面最广泛的部分了。分布式相关的技术实在太多了,我们这里也会做一下简单的归纳。
web架构
先了解web架构的发展会对分布式的学习有更好的理解,毕竟架构的发展也对应着分布式技术的发展。
分布式理论
这部分内容包括分布式的发展演化,base理论和cap理论等等,学习分布式技术之前,最好能对这部分概念有一定了解。
一致性问题
强一致性的解决方案:事务和锁,弱一致性的方案:消息队列。
分布式session
一个常见的问题,也有多种解决方案
分布式缓存
和上面说的缓存一样,只不过这里侧重缓存的分布式方案
分布式数据库
这里指的数据库的分布式方案,也包括hbase这种分布式数据库。
负载均衡
负载均衡也是一个值得探讨的话题,一般我们讨论的是七层和四层负载均衡。
消息队列
消息队列是一个比较复杂的分布式组件,我们可以了解常用消息队列比如amq,kafka等的实现。
服务化
服务化的核心包括rpc,服务注册中心等等。分布式服务相关技术也是后端同学必须掌握的内容。
虚拟化
虚拟化同样不是后端同学必须掌握的内容,只不过现在越来越多的服务部署方式使用的是docker和云服务的方式。所以了解一下也没有什么不好的。
微信公众号【Java技术江湖】一位阿里 Java 工程师的技术小站。(关注公众号后回复”Java“即可领取 Java基础、进阶、项目和架构师等免费学习资料,更有数据库、分布式、微服务等热门技术学习视频,内容丰富,兼顾原理和实践,另外也将赠送作者原创的Java学习指南、Java程序员面试指南等干货资源)
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
给全文搜索引擎Manticore (Sphinx) search 增加中文分词
Sphinx search 是一款非常棒的开源全文搜索引擎,它使用C++开发,索引和搜索的速度非常快,我使用sphinx的时间也有好多年了。最初使用的是coreseek,一个国人在sphinxsearch基础上添加了mmseg分词的搜索引擎,可惜后来不再更新,sphinxsearch的版本太低,bug也会出现;后来也使用最新的sphinxsearch,它可以支持几乎所有语言,通过其内置的ngram tokenizer对中文进行索引和搜索。 但是,像中文、日文、韩文这种文字使用ngram还是有很大弊端的: 当Ngram=1时,中文(日文、韩文)被分解成一个个的单字,就像把英文分解成一个个字母那样。这会导致每个单字的索引很长,搜索效率下降,同时搜索结果习惯性比较差。 当Ngram=2或更大时,会产生很多无意义的“组合”,比如“的你”、“为什”等,导致索引的字典、索引文件等非常大,同时也影响搜索速度。 基于以上弊端,为中日韩文本加入分词的tokenizer是很有必要的。 于是决定来做这件事。先去Sphinxsearch网站去看看,发现它已经发布了新的3.x版本,而且加入了很多很棒的特性,然而...
- 下一篇
我的Java秋招面经大合集(包含BAT头条网易等公司)
阿里面经 阿里中间件研发面经 蚂蚁金服研发面经 岗位是研发工程师,直接找蚂蚁金服的大佬进行内推。 我参与了阿里巴巴中间件部门的提前批面试,一共经历了四次面试,拿到了口头offer。 然后我也参加了蚂蚁金服中间件部门的面试,经历了三次面试,但是没有走流程,所以面试中止了。 最后我走的是蚂蚁金服财富事业群的流程,经历了四次面试,包括一次交叉面,最终拿到了蚂蚁金服的意向书,评级为A。 阿里的面试体验还是比较好的,至少不要求手写算法,但是非常注重Java基础,中间件部门还会特别安排Java基础笔试。 腾讯面经 腾讯研发面经 岗位是后台开发工程师,我没有选择意向事业群。 SNG的部门捞了我的简历,开始了面试,他们的技术栈主要是Java,所以比较有的聊。 一共经历了四次技术面试和一次HR面试,目前正在等待结果。 腾讯的面试一如既往地注重考查网络和操作系统,并且喜欢问Linux底层的一些知识,在这方面我还是有很多不足的。 百度面经 百度研发面经 百度研发面经整合版 岗位是研发工程师岗位,部门包括百度智能云的三个分部门以及大搜索部门。 百度的提前批面试不走流程,所以可以同时面试好多个部门,所以我参...
相关文章
文章评论
共有0条评论来说两句吧...