Java 后端校招学习路线!!!!
前言
最近春招开始了,很多校招同学想从事Java开发的工作,但是不是很了解这里可以把我之前的学习路线分享一下。有困难的同学私聊加群,一起学习备战春招。
基本大纲
上述这些,简单的说一下都有哪些重点和资料。
Java基础
Java基础指的是对Java语言的理解,主要包括Java语法,面向对象基础,Java关键字的使用和理解,集合类和常用类,异常机制,Java IO等。
关于这方面,有一个课程可以推荐:
Java300集
这个课程是尚学堂出品的,很经典,讲的也很通俗易懂。可以根据自己的情况选择一些章节。这个课程第四章可以跳过不看,因为Java桌面开发现在很少了,基本用不到,可以淘汰掉。
这个课程推荐学习一到两个月
Web开发基础
Java web开发是最终的目的,但是现在框架横行的年代,大部分开发者都跳过了这个环节,直接学习框架快速上手了,这对于哪些社招转行的,可以,但是对于校招同学一定要把这块给搞明白,这是Web开发的基础。
在早期Servlet和JSP是Web开发的基础,其实JSP也是一种特殊的Servlet。都是转化为理解Servlet,关于这个有很多参考资料,推荐一个学习教程:
JavaEE
这个教程从基础的JDBC开始讲起,然后是Servlet和JSP,以及JSP的高级用法,自定义标签等。后面几章讲解了几个常用的框架,但是这些现在基本都过时了,不过还是可以学习下,对后面学习其他框架有很大的帮助。
Java 多线程
首先要理解,Java的线程和系统的线程之间的关系,在Java代码里面启动了一个线程,对应到操作系统层面做了什么事情。
Java线程和系统线程的关系
理解了这个,接下来就是学会怎么使用线程:
例子1
例子2
做到这些基本上面试就已经足够了,但是可以再拓展点,比如实现几个经典的面试题:
- 使用两个线程交替打印奇数偶数
- 使用synchorized 实现1
- 使用wait+notify实现1
- Countdownlatch 和Sempre的使用
- AQS基础
如果能把1-5搞明白,那多线程这块,校招面试肯定够了。网络编程
其实网络和IO紧密相关。
最基础的要学会:
- 编写socket server和client程序。例子
2. 把1中的server端,改写成多线程模式,每个client连接一个线程处理
3. 把1改写成单线程reactor模式
4. 把1改写成多线程reactor模式
最基本的,能够做到1-2,这样能够基本知道,IO流,socket api都有哪些,并且结合线程使用。最后进阶版的可以完成3-4,这样能够加深对reactor模式的理解。
上述完成之后,你会发现其实一个client一个线程处理,是不够明智的
因为线程的数量是有限的,但是client的数量可以很多,这样显示单机的处理能力是不够的。NIO可以解决这个问题
关于Java NIO 推荐一个教程:Java NIO
学会了这个,面试又能吹牛了!但是你可能还是发现,NIO有点复杂,比如哪些ByteBuffer需要你自己去控制顺序,需要flate等等,于是就有了一个经典的NIO框架:Netty。Netty是一个基于Java NIO实现的高性能网络处理库,有很多功能,但是也很复杂。关于Netty这里只是建议,会一点就行,要全会,那有点难。给个推荐:Netty学习教程
到这里IO技术基本上就到位了。但是IO往往是和多线程结合起来的。
所以二者可以放在一起学。常用框架和工具
Java 开发中有很多的框架和工具。首先是maven,这是一个管理整个项目生命周期的工具,从依赖管理到打包编译,都可以使用maven完成。所以学会这个,能够在工作中更加快速的上手。主要是要理解maven lifecycle,这个理解了就好办了,以及maven的插件原理。
关于这个,尚硅谷的老师讲的也挺好的:maven学习教程
然后是一些常用的框架,其实不用太多,框架这个东西,设计之初就是为了简化开发,提高开发速度,如果一个框架你要学习很久,那这肯定是失败的,很多人都把框架理解错了,框架设计之初是没有把优化性能放在第一位的。所以框架基本都是很好用很好学的,校招一般也不会怎么问框架相关的话题,但是框架中优秀的设计思想,还是可以学习一下的。比如:- Spring学习教程Spring是一个依赖管理的框架,这个依赖管理指的是类之间的依赖,不是jar包依赖。Spring的核心思想就是IOC和AOP。感兴趣的可以去了解下
- Mybatis这是一个ORM框架,解决JDBC重复开发的问题,实现基于配置开发的思路。
其他的还有很多,但是就不介绍了,这两个足够了。开源
要说Java项目开源最好的东西,都是大数据那一套,比如Hadoop,MapReduce这些,但是这些又比较的大,不是很容易看懂。所以对于开源项目,可以看看Kafka,RocketMQ的设计和实现。这个可以推荐一本书:
结语
简单的罗列了一下Java后端或者Java技术栈需要的东西,看起来有点多,但是其实还是很少,这些只能说是大家接触的比较多的,对于一些特殊的开发场景,还是需要专门学习,但是校招万变不离其宗,都是对基础的考察。所以大家加油!