【路线篇】后端通用学习路线

上一篇文章我们讲解了国内主要的技术岗位,如果是在以前,其实作为一个校招生,你想要求职什么样的岗位都可以,哪怕你没有学过的对应的技术栈,但是现在竞争比较大,如果你没有对应的技术栈,那么会比较缺乏竞争力。

所以为了在求职中拥有更多的竞争力,你需要提前去锁定自己想要求职的岗位,比如是想从事前端还是后端,并且具体到后端,也还需要去锁定下更加具体的语言,并且提前去学习对应的技术栈。

并且大家还要区分面试与工作是完全不同,工作是工作,面试是面试,工作你只需要会做项目就可以的,但是面试你需要去学习各种考点,因为工作拧螺丝,面试造火箭。很多同学就是不知道怎么造火箭,所以在面试中吃了大亏。

在咱们国内的众多主流技术岗位中,后端开发是需求最多的岗位,有些公司甚至就只有后端开发的岗位,没有其他诸如前端,运维,测试之类的岗位,比如一些创业小公司。

加上帅地本人主要是做后端开发这一块的,所以这里就顺便给大家写一条通用后端开发的学习路线,大家可以作为一个参考。

本学习路线侧重带大家入门,我相信你入门之后,然后知道自己接下来学习哪方面的内容,所以我不会像网上那些学习路线那样,不负责任着给出一大堆技术让你去学习。

后端开发总体需要学习的内容

一般很多公司后端的校招岗位,主要需要掌握如下内容:

1、一门面向对象的语言,比如 Java/Go/C++,或者 Python 等等,不过目前主流的还是 Java/Go/C++。

2、掌握计算机基础以及算法基础等,比如数据结构,计算机网络,操作系统等。

3、掌握一些开发框架,因为开发项目基本都是用框架来开发的。

4、掌握一些常见的中间件等知识,比如 Redis,MQ 等。

大家具体在选择方向的时候,还需要分具体的语言,比如是 Java 后端,Go 后端还是 C++ 后端等等。

不过在校招中,一般很多公司并不会规定你一定要掌握哪一门语言,特别是对于大厂(小厂则比较看重一些),比如你是学习 Java 后端的,那你也完全可以去面 Go 后端,因为后端岗位的内容,都大差不差,如果只是语言不同,其实很快就能上手的。

下面我就以 Java 作为例子,相对详细说一下后端需要学习的内容吧,之所以选择 Java 作为例子,主要还是选择 Java 的人太多了,大家如果选择了其他语言的,那你只需要把 Java 改成其他的语言就可以了,可能会有些许差别,但是并不影响总体框架,相信你们也会看其他的路线,那么结合我的路线,你学习起来就会清晰很多。

选择一门面向对象的语言入门

上面我说过,后端的主流语言主要是 Java,C++ 和 Go,下面是以 Java 为例子。

对于 Java 语言的入门,这块的内容,网上多如牛毛,网上随便找一个 Java 的视频入门即可,大部分这种入门的教程,都大差不差。

在学习的过程中,一开始也不用学的很深入,只需要会写基础的语法,比如用 Java 完成一些简单的逻辑处理,会使用一些基础的容器即可;其次则是理解一些核心概念即可,比如面向对象的概念,什么是重载重写这种。

掌握了这些,你就算入门 Java 了,如果你有其他语言基础,可能你花个两三个星期,就可以学的很不错了。

需要强调的就是,在编程这一块,最重要的就是多写代码,很多人喜欢只看不写,以为理解了就可以,这其实很不好,在编程这块,理解和能够实现出来,那就是一个天一个地。

所以呢,大家一定要多写,多做一些练习。

学习对应的框架

一般学习完语言,是很难去做项目的,还需要去学习语言背后对应的一些框架,框架的核心就是可以加快开发的效率,下面依然以 Java 后端开发框架为例子。

JavaWeb

学习了 Java 之后,你其实还无法做网站,还需要学习一下 JavaWeb,这块的内容非常杂,你会遇到很多新的概念和技术,比如前端基础,servlet, tomcat, maven 等等。

对于 JavaWeb 的内容,从求职的角度看,无需学的多好,因为不怎么考察,所以简单快速了解一下概念就可以了。

也有人说 JavaWeb 没必要学习,现在大部分项目都是用 Spring 全家桶。但是我觉得还是要学一学,特别是网上的很多课程,如果你直接学习 Spring 这些,有可能会对 tomcat, maven 等很陌生,而课程可能又不会去讲解这些,那你在不懂的情况下,遇到困难就会很难解决。

所以在时间允许的情况下,可以快速过一遍 JavaWeb,但是过的时候,可以快速刷,简单了解一下概念即可。

通过学习 JavaWeb,你就可以搭建出一些简单网站了,在一些比较老旧的系统中,很多就是用 Java Web 搭建滴,特别是在一些银行国企的项目中。

Spring全家桶

JavaWeb 虽然能搭建网站,但是太麻烦了,效率也很低,为了让大家能够更快着去开发一些东西,我们需要去学习一些更先进的框架,所谓框架,就是向用户屏蔽了一些相对底层的 API,封装出了功能更加强调的 API 供大家使用,当然,这也意味着,如果出了问题,排查起来会更难,因为很多细节都被屏蔽了,特别是如果你没有学习过 JavaWeb,可能排查起来会更难。

那在 Java 后端开发领域,目前最主流最牛逼生态最丰富的,就是 Spring 家族一系列内容了,一般对于校招来说,主要学习 Spring + MyBatis + SpringMVC + SpringBoot 这些就可以了,后面如果还有余力,在学习一下微服务这块即可。

那这些框架需要学习到哪个程度呢?

一般我们只需要会使用即可,并不要求校招生需要掌握这些框架的底层机制或者源码啥的,所以呢,大家在学习的时候,找一些快速入门的视频刷一下即可。

学习的过程中,既不用担心会不会漏学了哪些模版,也不用担心学了就忘记了,一是因为这些框架的东西,忘记太正常了,二是你只需要做项目的过程中,通过查询文档会使用即可。比如你某个知识点忘记了,那你就查下文档或者百度搜索一下看看怎么要,又比如你没有学习过某个功能,那你一样可以查文档或者百度去查找。

当你学会了这些框架,你就能快速去搭建一些项目了,比起 JavaWeb,SpringBoot 几分钟就可以帮助你搭建出一个项目。

做一些项目

学习了一门语言以及对应的框架之后,我们就可以去做一些对应的项目了,比如对于 Java 后端,那我们可以去用 SpringBoot 去搭建一些项目。

对于初学者,你很难自己从 0 到 1 开发出一个项目,那么你可以去诸如 B 站之类的平台,找一些视频跟着做,做完之后你可以基于项目进行二次开发,因为一个视频项目往往有很多不完善的地方,你可以通过完善这些项目,来熟悉框架的使用以及学习各种接口设计。

当你做完项目之后,你可以尝试把他们部署到服务器,在部署到过程中,你会学习到很多服务器相关的知识,而这些知识,也是我们工作中必须掌握的内容。

那一般来说,通过做 1~3 个项目,你其实就具体了投递简历,找实习,找工作的最基本条件了。

小总结

当你学了 JavaSe 以及框架,你已经具备了做项目的技能了,而有了项目,你其实已经可以去面试一些要求不怎么高的公司了,比如一些小厂,它们最终看重的就是你能不能干活。

也就是说,当你学习了 JavaSE + Spring 主流框架 + 项目之后,你就已经具备了找实习找工作的基本能力了。只是说,面试和工作不同,对于一些稍微有点名气的公司,面试还会问一大堆东西,下面待我慢慢说来。

对于其他语言也是一样的,当你入门了一门语言以及对应的一些框架之后,就具备找工作的基本能力了

面向对象语言进阶

对于 Java 这门语言,上面我们只是学习了一些基础,比如一些面向对象的特性,以及会基础的使用。

如果你仅仅只是学习了这些,这并不能让你很好去理解 Java 这门语言,更无法去应付面试,我们还需要去更加深入去学习这门语言的一些机制,比如一些核心源码、并发编程,垃圾回收相关的机制等。

学习这些比如深入的内容,一方面是面试需要,另外一方面是,掌握这些内容之后,以后 你去学习其他语言,那么也可以快速掌握,因为面向对象的语言,很多东西是类似的。比如对于 Java 的集合,对于 C++ 的 STL,他们的底层源码实现,有很多共同之处。

在 Java 这里,其中有几个是比较重要的,那就是 Java一些容器源码实现 + Java虚拟机 + Java 并发编程

学习一些 JDK 的一些源码,我们可以学习到很多优秀的设计思想,同时也能在使用一些容器时,能够知其所以然;通过学习 Java 虚拟机,我们可以更好去理解 Java 的一些运行机制,毕竟我们的 Java 就是运行在虚拟机之上的,如果你连虚拟机都不懂,这确实不大好;而对于并发编程,这基本是后端开发精进最需要学习的内容,并且这块内容比较难。

当然,作为校招生,更加重要的还是,面试中经常考这些玩意,特别在知名公司的考察中,基本必考。

对于这些的学习,这里是更加推荐看书籍的,也可以结合视频来辅助理解,当时重点还是要看书,毕竟这些玩意有点难,看书可能更加好理解,当然,大家也可以根据个人的爱好来吧。

除了这几个,大家还有余力的,也可以学习 Java IO 相关的内容,包括一些不同版本的新特性,等等。

针对其他诸如 C++,Go 之类的语言,需要学习的内容也是差不多滴,想要精进也必须学习一些核心源码啊,并发之类的内容。

计算机基础

我们上面学习的东西,都是围绕编程语言以及对应的开发框架来的,但是呢,我们也经常听说,语言只是一门工具,比语言更重要的是,我们要去掌握一些计算机基础,比如计算机网络,操作系统,计算机组成原理,编译原理,等等。

而且这些内容,也是计算机相关专业的必修课,所以这些内容,不仅对学习编程的帮助很大,同时也是企业必考的内容,所以呢,对于这些计算机基础的内容,我们必须要掌握,至少入门吧。

关于计算机基础这些课程的重要程度,大家也可以看前面的章节,在「如何规划自己的大学->大学有哪些计算机课程值得好好学?」这里有具体介绍,这里就不说太多。

这里主要强调一下,可能不同的岗位,对于计算机基础的考察深入会有些许不同,比如对于 Java 后端开发这个岗位的面试上,计算机基础考察相对会浅层一点,因为 Java 开发的岗位,做应用层的比较多;而如果你是学习 C++ 开发的话,那么这开的考察则会深入很多,因为 C++ 主要跟一些比较底层的东西打交道,所以考察的比较深入也正常。

那总体的话,对于计算机基础这块,最重要的就是计算机网络和操作系统最重要了,面试考察最多,大家在学习的过程中,需要先优先保证这两门课程不落下,之后有余力再去学习其他的基础内容。

至于这些内容需要学习到什么程度,我觉得大家就跟着网上的视频或者学校的书籍过一下,有个大概的认知,然后其他的,就基于面试题去针对性学习即可。

中间件学习

在做项目的过程,我们可能会涉及诸如 Redis,MQ 之类的中间件,以及分布式,微服务之类的内容,这些内容现在也都是成为后端必学的内容了。

但是这块的内容,和框架一样,如果深入学习下去的话,容易迷路,所以对于这块的内容,我的学习建议就是多接触,但先不深入学习,就是先会使用,知道能干嘛,了解他们的应用场景,然后在项目需要用到时,能够跟着文档整合进项目,这样你就算入门了。

而对于他们的一些原理,可以不着急学,等你的简历上的项目用到了这些中间件,然后再对那些你用过的中间件,进行一个相对深入的学习。

至于多深入,我觉得对应校招生,并不需要去阅读源码,只需要掌握一些基本理论即可,这块大家可以看书或者看视频,里面讲到了啥,你就学习啥,最后能够搞定市面上常见的面试题即可。

算法

通过上面的学习,我相信你对后端技术栈各方面,应该有了个大概的认知,并且也可以去投递面试不少公司了。

不过呢,现在竞争很大,算法考察成为一个趋势,在校招中,基本中大厂都会考察算法,给你十几二十分钟,让你徒手写出一道算法的题解。

所以呢,为了能够拿到更好的 Offer,我们还需要刷算法题,目前国内刷算法题最主流的平台就是 LeetCode 了,面试官很多题也是从这里出的原题

如果你想要更好应付面试中的算法题,那么需要把常见的 100~200 道算法题刷熟悉,把常见的一些算法思想掌握,比如递归啊,回溯啊,动态规划啊,等等。

并且对于这块的学习,不能靠背诵,一是代码很难背,二是面试官简单做一些变换,如果你是背的,那你大概率会做不出来。

在国外的大企业中,面试主要就是考察算法题,因为企业觉得,能够写出算法题的人,脑子都比较灵活,代码能力也会比较好,只要稍加培养,就能够写出优秀的代码。

所以呢,如果你想要面试知名的企业,刷题是必经之路,当然,对于一些小厂,则一般不考察算法题,包括一些银行国企,对这块的考察也很少。

总结

上面便是求职后端开发岗位所需要掌握的内容,掌握以上内容,足以让你去应付国内各种各样的公司,当然,除了以上内容之外,也有不少必须学的内容没有写出来,比如 Linux, Git, SQL 等,主要这些内容,你在做项目的过程中,应该会遇到,所以就不提了。

最后就是,学无止境,以上也指示一个入门指引,如果你还想要继续深入,那么你还可以学习更多的内容,具体有哪些,我相信当你学完以上之后,你自然知道自己应该可以继续去学些什么。

发表评论

后才能评论