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紧密相关。
    最基础的要学会:
  1. 编写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学习教程
    然后是一些常用的框架,其实不用太多,框架这个东西,设计之初就是为了简化开发,提高开发速度,如果一个框架你要学习很久,那这肯定是失败的,很多人都把框架理解错了,框架设计之初是没有把优化性能放在第一位的。所以框架基本都是很好用很好学的,校招一般也不会怎么问框架相关的话题,但是框架中优秀的设计思想,还是可以学习一下的。比如:
    1. Spring学习教程Spring是一个依赖管理的框架,这个依赖管理指的是类之间的依赖,不是jar包依赖。Spring的核心思想就是IOC和AOP。感兴趣的可以去了解下
    2. Mybatis这是一个ORM框架,解决JDBC重复开发的问题,实现基于配置开发的思路。
      其他的还有很多,但是就不介绍了,这两个足够了。

      开源

      要说Java项目开源最好的东西,都是大数据那一套,比如Hadoop,MapReduce这些,但是这些又比较的大,不是很容易看懂。所以对于开源项目,可以看看Kafka,RocketMQ的设计和实现。这个可以推荐一本书:
    《Kafka权威指南》这本书很适合初学者,由浅入深的讲述了Kafka的整体设计和实现,绝对是帮助很大的。

    结语

    简单的罗列了一下Java后端或者Java技术栈需要的东西,看起来有点多,但是其实还是很少,这些只能说是大家接触的比较多的,对于一些特殊的开发场景,还是需要专门学习,但是校招万变不离其宗,都是对基础的考察。所以大家加油!
#Java##学习路径##书籍推荐#
全部评论
牛主,你的教程链接根本点击不了
1 回复 分享
发布于 2022-05-01 00:21

相关推荐

1. 如何在嵌入式系统中实现实时操作系统(RTOS)的基本概念?2. 使用USB进行设备通信的基本流程是什么?3. 如何在嵌入式系统中实现液晶显示屏的字符显示?4. 使用MQTT协议进行物联网设备的通信?5. 如何在嵌入式系统中实现电源管理?6. 使用模拟量输入测量温度传感器的原理?7. 如何在嵌入式系统中实现蓝牙数据传输?8. 使用中断服务例程(ISR)处理外部事件?9. 如何在嵌入式系统中实现多任务处理?10. 使用JSON格式进行数据交换的基本方法?11. 如何在嵌入式系统中实现图像处理?12. 使用Wi-Fi模块连接互联网的基本步骤?13. 如何在嵌入式系统中实现音频信号的采集?14. 使用加速度传感器进行运动检测?15. 如何在嵌入式系统中实现GPIO的输出控制?16. 使用NFC模块进行近场通信?17. 如何在嵌入式系统中实现数据的串行传输?18. 使用LED灯进行状态指示的实现方法?19. 如何在嵌入式系统中实现温湿度传感器的读取?20. 使用RTC模块实现定时器功能?21. 如何在嵌入式系统中实现文件系统的基本操作?22. 使用图像传感器进行视觉识别?23. 如何在嵌入式系统中实现安全启动机制?24. 使用PWM控制直流电机的速度?25. 如何在嵌入式系统中实现网络时间同步?26. 使用光电传感器进行物体检测?27. 如何在嵌入式系统中实现数据的压缩和解压?28. 使用蜂鸣器实现音效的播放?29. 如何在嵌入式系统中实现温度传感器的校准?30. 使用传感器融合技术提高测量精度?我面试看的是大佬的面经,链接放下边了  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
点赞 评论 收藏
分享
投了一个月申请进展都没有,是结束了吗?
黑猫aaa:车bu的hr不咋积极
投递华为等公司10个岗位 >
点赞 评论 收藏
分享
评论
21
57
分享
牛客网
牛客企业服务