Java后端学习路线(校招)

浏览量681

Java后端学习路线(校招)

作为一名非科班的准大厂程序员,总结一下我本人三年来的学习路线,希望对后来者有一些参考作用。

我本人是大一下学期接触Java,当时是看《Java编程思想 第四版》开始学的,后来暑假接触了一点安卓,一暑假的时间学完了前端基础(包括Vue的简单使用),JavaWeb、Mysql、Redis、Spring、SpringMVC、Mybatis框架,后来学习了SpringBoot、SpringCloud,然后补了一些计算机及基础课:数据结构、计算机网络... 跟着慕课网的视频做了一些项目,后来编写了我的博客和学校的失物招领平台等,作为技术巩固。在此期间也学习了一些Spring、Netty源码相关的知识,再后面就是不断锤炼之前学习的知识,把之前一知半解的知识吃透。打实基础,要成为一名优秀的程序员,拥有扎实的基础知识是重中之重。

我的技术学习之始是一直看的黑马程序员的课程,一直看到微服务的项目结束,在这期间我建立了一个比较完善的技术大图,但是只是了解这些技术,并不深入。深入剖析原理,这也是我之后学习的主旨。

贯穿几乎整个技术学习路线的就是坚持刷leetcode,可以先刷完剑指offer部分后尽量坚持做做每日一题。

作为一名Java程序员,基础知识是非常重要的,基础知识包括Java语法、库(java.util)、JUC、JVM、数据库、设计模式等等,当然还有最重要的计算机基础:数据结构与算法、计算机网络、操作系统。

下面我将总结一下我个人比较推荐的学习路线

按照我现在的理解,比较扎实的学习路线大概需要一年的时间(当然打磨时间越长越好),速成半年时间应该也够

学习路线

如果是非科班的我建议不要一开始就学计算机的基础课程,容易找不到方向,我建议先从应用开始学起。(科班同学跟着课程学习即可)

一阶段

良好的Java基础,学习Java语法,多线程等等基础知识,一般课程或书中的swing部分可跳过。

预计时间:3-5周

二阶段

学习一点前端基础(HTML、CSS、JavaScript可以再学一点Vue/React的用法)

学习数据库知识(关系型数据库Mysql、非关系型内存数据库Redis)

简单学一下Servlet(现在几乎没有公司在用,但需要了解)

学习Spring、SpringMVC、Mybatis框架

学到这里基本的技术大图就已经建立起来了,已经可以开发一些简单应用了

在这个阶段不必深入学习这些框架的原理(容易被劝退),先学会如何使用

预计时间:1.5-3月

三阶段

学习SpringBoot,SpringBoot是SSM的pro版本,提供了自动装配机制,简化了开发流程,非常的好用

然后可以学习一下SpringCloud,了解学习一下消息队列、RPC框架的背景和使用,这些也可以放在后面学习,可以不急

学习一下Linux和Git的使用

在这基本就拥有了搭建一个个人博客的能力,可以参考一下我的博客完成 Github开源

在此阶段我建议完成1-2个小项目,可以找网上的项目跟着敲一遍,学习其他人的代码风格也是很有帮助的,每个人都会有一些编码小技巧

预计时间:2-4个月(根据个人实际情况安排)

这个阶段也可以穿插学习一些四阶段的数据库原理、索引优化、设计模式、并发编程等等知识

四阶段

学习计算机基础知识(科班同学请跳过),后端主要需要学习数据结构、计算机网络和操作系统

学习一些底层原理(根据个人情况安排):JVM、Java的反射、JUC源码、设计模式、数据库原理、Mysql调优、Redis原理、Spring等框架原理源码(Spring、SpringMVC、SpringBoot、Netty、MQ、Dubbo 我个人建议先看Spring相关的,然后可以去看看RPC相关)、分布式微服务相关、云原生

计算机基础和底层原理这两部分是相辅相成的,我建议是学完计算机基础就先看一些下面的底层知识,你会发现他们之间的联系是非常紧密的,这也是计算机基础的重要之处,他们是基石。

预计时间:0 - ∞

这个阶段是进行打磨的阶段,这其中的的奥秘我尚不能完全吸收,还需日后再修炼

学习原理的过程是一个螺旋上升的过程,是一个痛苦的过程,但是每攻克其中之一都会有柳暗花明的的感觉,是痛并快乐的时期。

小结

当你对你所用大部分框架的基本原理都烂熟于心的时候基本就是一个合格的程序员了,可以去尝试一些大中厂的面试。

四阶段开始的时候是最痛苦的,一定要坚持,要相信有柳暗花明之时。

面试

面试推荐先把JavaGuide看一遍,直接搜就行,这里面涵盖大部分的校招面试题,但肯定不是全部,可以先看完后对面试有一个了解

然后我建议去刷牛客面经,查缺补漏,我准备面试那段时间的牛客面经几乎全刷了一遍

leetcode一定要坚持做,一般来说要200道起步,多多益善

对于校招生来说公司最看重的是你的基础,包括Java基础和计算机基础,基础能力会在一定程度上决定上限,其次就是要有一定的实战能力,公司招聘肯定是想要一个进去就能做一些工作的候选者,而不是还要培养很长时间,所以面试时要有一两个拿得出手的项目,我个人比较推荐参照别人的开源代码实现一个RPC框架,这个是很加分的。

建议

  • 多看书,而且是反复看
  • 打好基础,一通百通,上层框架的原理就是一些计算机原理+设计模式
  • 不要因为学习的东西多就产生畏难心理,慢慢来,其实编程并不难,好多东西都是相通的

推荐书籍

  • Java编程思想
  • Java并发编程实战
  • 深入理解Java虚拟机
  • Java并发编程之美
  • Effective Java
  • Netty实战
  • Redis深度历险 核心原理与应用实战
  • 码出高效 Java开发手册
  • Mysql必知必会
  • 高性能Mysql
  • 计算机网络 自顶向下方法
  • 设计模式 可复用面向对象软件的基础
  • 深入理解计算机系统
  • Go程序设计语言(可以了解学习一下Go语言)

其中大部分书我都通读过,小部分选择性的看了一部分。这些书是我看过的书中认为比较有帮助的,故做此推荐。

简版思维导图

最后

我在编程学习的生涯中还学习了诸如Python、Golang、Kotlin等语言,但都是浅尝辄止(Golang较熟一点),通过学习不同的编程语言,我们可以通过他们之间的共性和不同,进而产生对我们的主语言更深的理解。这时我们可以自己判断每个语言的优缺点是否如网上说的那样,又为什么会这样,语言设计者的思考与取舍,这些东西我认为是一个程序员内在的东西,至少我认为这些体会对我个人的编程能力是有裨益的。

最后,我认为作为一名技术人员一定要有技术激情,终身学习。

评论

m的二次方 2022-10-20 11:11:55

大佬真顶啊!!

废物 2022-12-11 09:01:31

强啊,大佬

添加一条评论