资讯详情

java学习路线

Java 学习路线

Java 一站式学习路线 by 程序员鱼皮

?? ?? = ???

建议先看视频导读:https://www.bilibili.com/video/BV1Qf4y1K7ff/

大纲

image-20211127235325557

路线特点

  1. 最新,一站式完整的大厂 Java 学习路线,从入门到入土
  2. 同时也适用于全面学习 / 快速求职的学生可以根据符号定制自己的专属学习路线
  3. 给出目标、学习建议、关键知识点、最优资源和各种资源(视频、书籍、文档、项目、工具等)。
  4. 鱼皮自己是 Java 开发人员,融入个人自学和工作经验 思考,让路线有灵魂
  5. 分阶段,更有计划,最后给出持续学习的方向,探索 Java 程序员发展的无限可能性
  6. 完全开源,回馈社区,持续更新!

符号表

可根据自己的实际情况,通过路线知识点前的表情字符选择学习:

  • ?? 学生一定要学习!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  • ?? 很急着找工作,不能学;目标大厂,一定要学!
  • ?? 如果你急着找工作,你就不能学习;目标大厂,建议学习
  • ?? 如果有足够的时间,去学习
  • ? 表示推荐资源

写在开头

首先,我们需要理解 Java 应用场景和就业方向,看看是否符合自己的学习目的。

目前,Java 由于其优秀的特性以及火爆的生态,岗位需求量大,是后台开发、安卓开发、大数据开发的主流编程语言,因此学习资源也很丰富,值得学习!

关于更多编程语言的选择,您可以看到我的视频:https://www.bilibili.com/video/BV1y3411r7pX/

阶段 0:前期准备

  1. 为初学者准备一个在线工具,随时随地编写代码,本地安装和配置,是初学者的好帮手。
    • 推荐网站 - 菜鸟工具:https://c.runoob.com/compile/10
  2. 准备一个笔记软件,学习老师的想法,他们遇到的问题,解决问题的方法,经验,遇到好的信息,写下哦,好的记忆不如坏的笔,可以帮助你用一半的努力得到两倍的结果。
    • 推荐本地软件 Typora:https://www.typora.io/ (可在线使用 xx 文档)
    • 推荐使用 Markdown 鱼皮教程语法编写:https://www.bilibili.com/video/BV1no4y1k7YT/
  3. 想学好编程,不要背代码,多写,把这句话刻在脑海里。
  4. 选看评论区,多看隔壁评论区,不要看过期视频。
  5. 如何访问 GitHub:https://mp.weixin.qq.com/s/uBFsuThsZ4kdkZgqfX12qA (有很多免费的编程学习资源和项目源代码,程序员是必要的)

阶段 1:Java 入门

目标

培养兴趣,快速上手,操作和编写简单 Java 程序。

学完这个阶段,可以试试 Java 解决数学计算问题,编写图书管理系统等桌面端 GUI 程序,甚至五子棋等小游戏。

?? Java 编程基础(45 天)

知识

  • Java 特点(看不懂没事,不要背!
  • 环境搭建
  • IDEA 开发工具
    • 新建项目
    • 运行调试
    • 界面配置
    • 插件管理
    • 数据类型
    • 流程控制
  • 数组
    • 方法
    • 重载
    • 封装
    • 继承
    • 多态
  • 抽象类
  • 接口
  • 枚举
  • 常用类
    • String
    • 日期时间
  • 集合类
  • 泛型
  • 注解
  • 异常处理
  • 多线程
  • IO 流
  • 反射

学习建议

初学一门语言,一定要继续学习,不能中断!

如果你想学好编程,你必须敲更多的代码!建议先按照书中的例子敲代码,然后尝试独立编写代码,完成课后练习。

不懂代码也没关系。你可以学习 Debug 之后,一行一行地打断执行点,查看程序的执行过程。不要感到麻烦。养成习惯后,你可以节省很多重复学习的时间。

经典面试题

  1. 为什么重写 equals 还要重写 hashcode?
  2. == 和 equals 比较的区别
  3. 为什么有时候会出现? 4.0 - 3.6 = 0.40000001 这种现象?
  4. final 关键词的作用
  5. 介绍 Java 的集合类
  6. ArrayList 和 LinkedList 的区别

资源

  • 视频

    • ? 韩顺平 - 零基础 30 天学会 Java:https://www.bilibili.com/video/BV1fh411y7R8 (900 多集,顺序安排很合理,每一个知识都真的被打破了,流行,有例子,有实战,有思想)
  • 文档

    • ? 菜鸟教程:https://www.runoob.com/java/java-tutorial.html (可在线练习)

    • 廖雪峰 Java 教程:https://www.liaoxuefeng.com/wiki/1252599548343744

    • IDEA 中文教程:https://github.com/judasn/IntelliJ-IDEA-Tutorial

    • IDEA Mac 快捷键指南,地址:https://www.jianshu.com/p/454c71172c46

    • IDEA Win 常用快捷键,地址:https://www.jianshu.com/p/5de7cca0fefc

  • 书籍

    • 《Head First Java》
  • 在线游戏

    • Codegym:https://codegym.cc/zh (玩玩前几关培养兴趣不错,但后面收费了)

?? Java 8(3 天)

知识

  • Stream API
  • Lambda 表达式
  • 新日期时间 API
  • 默认接口法

学习建议

Java 8 是当今企业发展中最主流的 Java 稳定版本,这个版本有很多实用的新特点,虽然面试考点不多,但是可以提高编程效率,建议学习。

经典面试题

  1. java 8 有哪些新特点?
  2. HashMap 在 jdk 1.7 和 1.8 的区别?

资源

  • 视频

    • ? 宋红康 - 全网最全Java零基础入门教程:https://www.bilibili.com/video/BV1Kb411W75N (只看 Java 8 部分即可)
  • 文档/p>

    • ⭐ 菜鸟教程:https://www.runoob.com/java/java8-new-features.html
  • 书籍

    • 《Java 8 实战》
  • 工具

    • ⭐ 在线编写运行 Java 8:https://www.tutorialspoint.com/compile_java8_online.php
  • 其他

    • Java 8 小代码片段:https://github.com/biezhi/30-seconds-of-java8

练手项目

  • Java 实现简单计算器:https://www.lanqiao.cn/courses/185
  • Eclipse 实现 Java 编辑器:https://www.lanqiao.cn/courses/287
  • 一本糊涂账:https://how2j.cn/module/104.html
  • Java 五子棋:https://blog.csdn.net/cnlht/article/details/8176130
  • Java 中国象棋:https://blog.csdn.net/cnlht/article/details/8205733
  • JAVA GUI 图书馆管理系统:https://github.com/uboger/LibraryManager
  • JAVA 坦克大战小游戏:https://github.com/wangzhengyi/TankWar
  • Swing 编写的俄罗斯方块:https://github.com/HelloClyde/Tetris-Swing
  • 小小记账本:https://github.com/xenv/SmallAccount (适合了解数据库的同学)

尾声

学完了 Java 基础后,有些同学会感到迷茫了啊,感觉好像啥也做不出来,不知道下一步做什么,我这一身的本领该如何施展啊?

不要慌,也不要急着去学新技术,接下来我们要多用 Java 来写代码了,巩固基础,但是写什么呢?

当然是数据结构和算法!

阶段 2:巩固基础

目标

想学好编程,计算机基础知识要学好。

比如算法,是程序员的灵魂。学好算法有助于我们理解程序、开拓思路,因此也是很多公司面试时考察的关键,在找工作前,还是要刷个上百道算法题目的。

我们这个阶段的目标是:熟练使用 Java 语言来编写程序,巩固 Java 基础。(那直接用 Java 来写算法题目,一举两得,岂不美哉?)

此外,建议大家利用零碎时间多去了解 ,比如操作系统、计算机网络等,对你后面学习开发框架之类的知识都有帮助。

Java 基础(30 天)

学习建议

建议大家去阅读 《Java 核心技术卷 1》,这本书堪称经典,是帮助你复习巩固 Java 的不二之选,其中图形界面章节可以选择不看。

之后可以刷牛客的 Java 练习题,检验自己的水平,我当时刷了两遍 1000 题(每天 30 题,1 个月也就刷完了,二刷会更快!)。虽然都是选择题,但能学到很多 Java 语言的特性、避免写代码时容易犯的错误。

如果你时间不够,只是想快速找到工作,那么本章节甚至可以完全跳过,后面慢慢弥补即可。

资源

  • 书籍
    • ⭐《Java 核心技术卷 1》
  • 练习
    • ⭐ 牛客题库:https://www.nowcoder.com/intelligentTest

🌖 数据结构与算法

知识

  • 数据结构

    • 数组
    • 字符串
    • 队列
    • 链表
    • 集合
    • 哈希表
      • 二叉树
      • 多叉树
      • 字典树
  • 算法

    • 排序
    • 双指针
    • 查找
    • 分治
    • 动态规划
    • 递归
    • 回溯
    • 贪心
    • 位运算
    • DFS
    • BFS

学习建议

学算法一定要多思考、多练习!!!

在复习 Java、巩固基础的过程中,每天可以坚持用 Java 做 2 - 3 道算法题目。

不用担心看不懂,直接进入 LeetCode 学习板块 LeetBook,提供了免费的教程,文字、图解、动画讲算法、在线练习应有尽有,从 0 开始,跟着学习基础知识、跟着教程刷一些同类题目,培养算法思路。

之后再由简单到复杂、由通过率高到低,自主刷题,多看题解,举一反三。一定要把自己做过的每道题目代码都自行保存好,定期复习。时间足够的话,也可以试着自己写写题解,在网上分享一下自己的刷题思路,找到自己坚持的动力。

有条件的朋友也可以试着参与竞赛,没什么门槛,可以帮助你集中精神,而且周赛的题目还是挺友好的~

经典面试题

  • LeetCode 精选 100 道:https://leetcode-cn.com/problem-list/2cktkvj/
  • LeetCode 精选算法 200 题:https://leetcode-cn.com/problem-list/qg88wci/

资源

  • 文章
    • ⭐ 刷了 1000 多道算法题,一点心得:https://t.1yb.co/oT9q (鱼皮原创)
  • 在线教程
    • ⭐ LeetCode LeetBook:https://leetcode-cn.com/leetbook/
  • 在线刷题
    • ⭐ LeetCode:https://leetcode-cn.com/
  • 书籍
    • ⭐《小灰的漫画算法》
    • ⭐《剑指 Offer》
    • 《程序员代码面试指南》
    • 图解算法数据结构:https://leetcode-cn.com/leetbook/detail/illustration-of-algorithm/
    • LeetCode 101(C++):https://github.com/changgyhub/leetcode_101
    • LeetCode 题解(C++):https://github.com/soulmachine/leetcode
    • LeetCode Cookbook(Go 语言):https://github.com/halfrost/LeetCode-Go
  • 视频
    • 尚硅谷 Java 数据结构与算法:https://www.bilibili.com/video/BV1E4411H73v (难度比面试的要求大一些,适合希望更全面学习的朋友)
    • Leetcode 真题解析:https://www.bilibili.com/video/BV1a54y1b74k
  • 工具
    • VisuAlgo 数据结构和算法动态可视化:https://visualgo.net/zh
    • 数据结构可视化:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
    • RegExr:https://www.code-nav.cn/rd/?rid=79550af2601114e9012110711798772b (学习、创建和测试正则表达式的在线可视化工具)
  • 网站
    • 五分钟学算法:https://www.cxyxiaowu.com/

🌘 计算机导论

知识

  • 计算机发展历史
  • 计算机应用领域
  • 计算机发展方向
  • 计算机基本组成
  • 二进制
  • 编程语言发展

学习建议

大学计算机专业的同学一般刚开学就会上这门课,虽说学习它并不会直接提高你的编程技能,但能够让你更了解计算机和编程,从而在一定程度上帮助你培养学习兴趣、确定学习方向。

自学的话,不用刻意去学习计算机导论,而是可以通过看视频、阅读课外读物的方式慢慢地了解计算机的故事。

资源

  • 视频
    • 《计算机科学速成课》:https://www.bilibili.com/video/BV1EW411u7th (从底层到上层的计算机知识科普,强烈推荐)
  • 书籍
    • 《半小时漫画计算机》

🌖 操作系统

知识

学习建议

说实话,操作系统这一块知识挺枯燥的。你说说我现在项目都不会做,你又让我看这些理论,是不是想让我头秃?

我的建议是,可以先利用课余时间看一些网课或者有趣的课外书,对一些操作系统的概念先有个大致的印象,比如进程、线程、死锁,等后面有时间了再系统学习、等到找工作了再去背相关八股文。

还在校园就跟着学校的进度学习就成,自学的话可以看下《清华操作系统原理》视频,有实力的小伙伴,能看懂大黑书就更好了,但如果看不懂也别担心,这并不影响你后续知识的学习。

经典面试题

  1. 什么是死锁?死锁产生的条件?
  2. 线程有哪几种状态?
  3. 有哪些进程调度算法?
  4. 什么是缓冲区溢出?

资源

  • 视频

    • 《清华操作系统原理》:https://www.bilibili.com/video/BV1uW411f72n
  • 书籍

    • 《编码》
    • 《30天自制操作系统》
    • 《现代操作系统》(难度较大,不推荐新手看)
    • 《深入理解计算机系统》(难度较大,不推荐新手看)
    • 《 自己动手写操作系统》(国产好书,网上可以下载)
  • 大学课件

    • 浙大操作系统:https://github.com/QSCTech/zju-icicles

🌖 计算机网络

知识

  • 网络分层模型
  • 网络传输过程
  • IP、端口
  • HTTP / HTTPS 协议
  • UDP / TCP 协议
  • ARP 地址解析协议
  • 网络安全
  • DNS 域名解析

学习建议

很多学习 Java 开发的同学最后都是从事 的工作,而计算机网络知识是后端开发的重点。

和操作系统一样,自学网络可能会很枯燥,建议先看有趣的课外书,比如《图解 HTTP》;或者有趣的视频,比如《计算机网络微课堂》。后面要找工作面试前,再重点去背一些八股文就好了。还在学校的同学好好上课一般就没问题。

学习基础能帮助自己今后发展更稳定,且更容易接受新知识,所以请不要相信基础无用论。

经典面试题

  1. 计算机网络各层有哪些协议?
  2. TCP 和 UDP 协议的区别?
  3. TCP 为什么需要三次握手和四次挥手?
  4. HTTP 和 HTTPS 协议的区别?

资源

  • 视频

    • 《计算机网络微课堂》:https://www.bilibili.com/video/BV1c4411d7jb
  • 书籍

    • ⭐《图解 HTTP》
    • 《网络是怎样连接的》
    • ⭐《图解 TCP / IP》
  • 大学课件

    • 浙大计算机网络基础:https://github.com/QSCTech/zju-icicles

尾声

巩固基础要花至少 1 个月的时间,当你读完《Java 核心技术卷1》并且不用查询文档也能熟练地用 Java 做题时,就可以接着往下了。

阶段 3:Java 企业开发基础

目标

面向薪资编程,学习实际后台开发工作要用的基础技术和框架,并能 做出一个具有完整功能的 Java Web 项目。

学完这个阶段后,你应该已经能独立开发出大多数常见的后台系统了,比如各种管理系统、商城系统等。

🌕 MySQL 数据库(7 天)

企业中大部分业务数据都是用关系型数据库存储的,因此数据库是后台开发同学的必备技能,其中 MySQL 数据库是目前的主流,也是面试时的重点。

知识

  • 基本概念
  • MySQL 搭建
  • SQL 语句编写
  • 约束
  • 索引
  • 事务
  • 锁机制
  • 设计数据库表
  • 性能优化

学习建议

其中, 这两个能力一定要有!

比如让你做一个学生管理系统,你要能想到需要哪些表,比如学生表、班级表;每个表需要哪些字段、字段类型。

这就要求大家多写 SQL、多根据实际的业务场景去练习设计能力。

经典面试题

  1. MySQL 索引的最左原则
  2. InnoDB 和 MyIsam 引擎的区别?
  3. 有哪些优化数据库性能的方法?
  4. 如何定位慢查询?
  5. MySQL 支持行锁还是表锁?分别有哪些优缺点?

资源

  • 视频
    • ⭐ 老杜 - mysql入门基础 + 数据库实战:https://www.bilibili.com/video/BV1Vy4y1z7EX (较新、内容相对精炼,有习题)
    • 尚硅谷 - MySQL基础教程:https://www.bilibili.com/video/BV1xW411u7ax (小姐姐讲课,但感觉音质一般)
  • 在线练习
    • ⭐ SQL 自学网:http://xuesql.cn/
    • ⭐ SQL 在线运行:https://www.bejson.com/runcode/sql/
  • 文档
    • SQL - 菜鸟教程:https://www.runoob.com/sql/sql-tutorial.html
    • MySQL - 菜鸟教程:https://www.runoob.com/mysql/mysql-tutorial.html
  • 网站
    • 数据库大全:果创云收录的各种数据库表设计

🌕 开发框架(60 天)

Java 之所以能成为主流的企业开发语言,很大一部分原因是它完善的框架生态,用好框架,不仅能够大大提升开发效率,还能提高项目的稳定性、减少维护成本。

开发框架是后台开发工作中不可或缺的,也是面试考察的重点,一定要好好学!

不知道 Java 能做什么的朋友们,学完开发框架,就会有答案啦。

下面给大家推荐的都是企业中应用最多的主流开发框架,知识点比较零碎,就放在一起讲了。

知识

🌕 Java Web
  • 描述:Java 网页应用开发基础

  • 一丢丢前端基础

  • XML

  • JSON

  • Servlet

  • Filter

  • Listener

  • JSP

  • JSTL

  • Cookie

  • Session

🌕 Spring 5
  • 描述:Java 轻量级应用框架
  • IOC
  • AOP
  • 事务
🌕 SpringMVC
  • 描述:Java 轻量级 web 开发框架
  • 什么是 MVC?
  • 请求与响应
  • Restful API
  • 拦截器
  • 配置
  • 执行过程
🌕 MyBatis
  • 描述:数据访问框架,操作数据库进行增删改查等操作
  • 增删改查
  • 全局配置
  • 动态 SQL
  • 缓存
  • 和其他框架的整合
  • 逆向工程
🌗 MyBatis Plus
🌕 SpringBoot 2
  • 描述:简化 Spring 应用的初始搭建以及开发过程,提高效率
  • 常用注解
  • 资源整合
  • 高级特性
  • 本地热部署
🌗 Spring Security
  • 描述:Spring 的安全管理框架
  • 用户认证
  • 权限管理
  • 相关技术:Shiro
🌗 Maven / Gradle
  • 描述:项目管理工具
  • 构建
  • 依赖管理
  • 插件
  • 配置
  • 子父工程
  • 多模块打包构建
  • Nexus 私服搭建

学习建议

由于技术较多,且框架之间存在一定的联系,因此建议大家看同一系列的视频教程(尚硅谷、狂神说等等都可以),以保证学习内容的连续以及体验上的一致。

学这些技术的时候, !一定要多记笔记,并且跟着老师写代码。原理部分不要太过纠结,先以能跟着敲出代码、写出可运行的项目为主,有些东西做出来也能帮助你更好地理解理论。

学习顺序挺重要的,建议按我推荐的顺序学,不要一上手就学 Spring Boot。只有先学习下自己整合框架的方法,才能帮你理解 SpringBoot 解决的问题,感受到它的方便和高效。

Maven / Gradle 当成工具用就好,面试基本不问,跟着框架教程去用就行了,急着找工作的话,先不用花太多时间去深入学。大厂面试问这个的也不多。

经典面试题

  1. Spring 的 IOC 和 AOP 是什么,有哪些优点?
  2. Spring 框架用到了哪些设计模式?
  3. 介绍 Spring Bean 的生命周期
  4. MyBatis 如何实现延迟加载?
  5. 介绍 MyBatis 的多级缓存机制

资源

  • 视频(按顺序看)

    • ⭐ 尚硅谷最新版 JavaWeb 全套教程:https://www.bilibili.com/video/BV1Y7411K7zz (前端部分最好也看下)

    • ⭐ 尚硅谷 - Spring 5 框架最新版教程(idea版):https://www.bilibili.com/video/BV1Vf4y127N5

    • ⭐ 尚硅谷 - SpringMVC 2021 最新教程:https://www.bilibili.com/video/BV1Ry4y1574R

    • ⭐ 尚硅谷 - MyBatis 实战教程全套完整版:https://www.bilibili.com/video/BV1mW411M737

    • ⭐ 尚硅谷 - MyBatisPlus 教程:https://www.bilibili.com/video/BV1Ds411E76Y

    • Maven 零基础入门教程:https://www.bilibili.com/video/BV1TW411g7hP (搞不懂 Maven 可以看看)

    • ⭐ 雷丰阳 2021 版 SpringBoot2 零基础入门:https://www.bilibili.com/video/BV19K4y1L7MT

    • 尚硅谷 - SpringSecurity 框架教程:https://www.bilibili.com/video/BV15a411A7kP

🌘 开发规范(3 天)

开发不规范,同事两行泪。

开发规范是团队开发中必须遵守的,有利于提高项目的开发效率、降低维护成本。

知识

  • 代码规范
    • 代码风格
    • 命名
    • 其他规则
  • 代码校验(CheckStyle)
  • 提交规范

学习建议

有时间的话,简单过一遍大厂团队的代码规范手册就好了,以后做项目的时候能想起来的话就去使用,或者从书中、网上查规范文档,再去遵守。

项目做得多了,自然会养成好的习惯,不用刻意去记(毕竟每个团队规范也不完全相同,背了也没用)。也可以直接利用开发工具自带的一些代码检查插件,帮忙养成好的编码习惯。

资源

  • 书籍

    • ⭐ 阿里巴巴 Java 开发手册:https://developer.aliyun.com/graph/java (搜索《Java开发手册》)
  • 视频

    • 华山版《Java开发手册》独家讲解:https://developer.aliyun.com/live/1201
  • 文档

    • Google Java Style Guide:https://google.github.io/styleguide/javaguide.html (谷歌 Java 代码规范)

🌕 Git(3 天)

此前大家可能听说过 GitHub,一流的代码开源托管平台。

Git 和它可不一样,是一个版本控制工具,可以更好地管理和共享项目代码,比如把自己的代码传到 GitHub 上、或者从远程下载。

无论自己做项目、还是团队开发,Git 都是现在不可或缺的神器。

知识

学习建议

每个命令跟着敲一遍,有个大致的印象,会用即可。

建议平时大家可以多把自己的代码使用 Git 命令上传到 GitHub 上,用的多了自然就熟悉了。

经典面试题

  1. 如何解决提交冲突?
  2. 提交不小心出现误操作,如何撤销?
  3. 什么是 Git Flow,它有什么好处?

资源

  • 视频

    • ⭐【尚硅谷】5h打通Git全套教程丨2021最新IDEA版 https://www.bilibili.com/video/BV1vy4y1s7k6
  • 书籍

    • 猴子都能懂的 Git 入门 https://backlog.com/git-tutorial/cn/
    • ⭐ GitHub 漫游指南 https://github.phodal.com/
  • 文档

    • GitHub 官方文档:https://docs.github.com/cn
  • 游戏

    • Learning Git Branching:https://learngitbranching.js.org/?locale=zh_CN

🌖 Linux(10 天)

企业中的很多前后台项目都是部署在 Linux 服务器上的,因此很有必要熟悉 Linux 的操作和脚本的编写。

后面学微服务、学架构都是在多台服务器操作,如果你不熟悉 Linux,会有点吃力。

知识

  • Linux 系统安装
  • 环境变量
  • 文件管理
  • 用户管理
  • 内存管理
  • 磁盘管理
  • 进程管理
  • 网络管理
  • 软件包管理
  • 服务管理
  • 日志管理
  • Linux 内核

学习建议

多动手实践,建议自己购买一台云服务器,并且在本地搭建 Linux 虚拟机环境。

一定要自己从 0 开始手敲命令安装软件、部署服务,熟悉整个项目的上线流程。

每个命令至少要跟着敲一遍,了解它们的作用,并通过自然地练习,熟悉常用的 Linux 命令。

记不住没关系,用文档查就行了。

先会用,再理解。一般面试问的 Linux 题目也不会很难,面试前去背一下八股文就没什么问题,感兴趣的话可以去看看 Linux 内核设计。

经典面试题

  1. 如何查看某个进程的运行状态?
  2. 如何在 Linux 上查看 2 G 的大文件?
  3. Linux 软链接和硬链接的区别

资源

  • 视频

    • ⭐ 2021 韩顺平 一周学会Linux https://www.bilibili.com/video/BV1Sv411r7vd (基于 CentOS 7.6 版本较新)
  • 书籍

    • 《鸟哥的 Linux 私房菜 —— 基础篇》http://cn.linux.vbird.org/linux_basic/linux_basic.php (经典)
  • 文档

    • Linux 工具快速教程:https://linuxtools-rst.readthedocs.io (基础、工具进阶、工具参考)
  • 实战

    • ⭐ 蓝桥云课 Linux 基础入门:https://www.lanqiao.cn/courses/1
    • 腾讯云动手实验室:https://cloud.tencent.com/developer/labs
    • 阿里云体验实验室:https://developer.aliyun.com/adc/labs/
    • 阿里云知行实验室:https://start.aliyun.com/
    • 华为云沙箱实验室:https://lab.huaweicloud.com/
  • 社区

    • Linux 中国:https://linux.cn/
  • 工具

    • ⭐ Linux 命令搜索:https://wangchujiang.com/linux-command
    • Linux 命令大全手册:https://www.linuxcool.com/
    • Linux 命令示例:http://linux-commands-examples.com/
    • 宝塔 Linux 面板:https://www.bt.cn/

🌘 前端基础(14 天)

虽然 Java 程序员面试时基本不会出现前端相关问题,但是在企业中,往往需要前后端程序员配合完成工作。会一些前端,不仅可以提高你们的协作效率,还能提高自己对整个项目的了解和掌控力,甚至能独立开发出一个完整项目!这点也是能给面试加分的。

知识

  • HTML
  • CSS
  • JavaScript
    • Ajax
  • Vue

学习建议

不需要学习太多的前端技术,熟悉下基础的前端三件套,了解前端是如何向后端发送请求来做数据交互的一般就够了。有时间的话可以学下 Vue ,是比较容易上手的主流前端开发框架,Vue + SpringBoot 还是很香的。

资源

参见鱼皮原创的前端学习路线:https://mp.weixin.qq.com/s/HbzLEt6NOP9Is9F3GOnbUQ

练手项目

更多请见本路线阶段 5:[项目源码(50 套)](###项目源码(50 套)) 。

  • HotelSystem:https://github.com/misterchaos/HotelSystem (酒店管理系统 Java,tomcat,mysql,servlet,jsp实现,没有使用任何框架)
  • 超市管理系统:https://github.com/zhanglei-workspace/shopping-management-system
  • Mall4j:https://github.com/gz-yami/mall4j (Spring Boot 电商系统)
  • newbee-mall:https://github.com/newbee-ltd/newbee-mall (基于 Spring Boot 2.X 的全栈电商系统)
  • litemall:https://github.com/linlinjava/litemall (小商城系统,Spring Boot 后端 + Vue 管理员前端 + 微信小程序用户前端 + Vue 用户移动端)
  • forum-java:https://github.com/Qbian61/forum-java (一款用 Java Spring Boot 实现的现代化社区系统)

尾声

学完这个阶段的知识后,一定要再串起来回忆一遍,必须自己独立开发一个 Java Web 项目(量级可以不大,但你学过的技术尽可能地用上),能发布到 Linux 服务器上让其他小伙伴访问就更好了~

如果你只是对 Java 感兴趣、或者只是想试着自己开发后台,并不是想靠 Java 找工作的话,学到这里就可以了。可以把更多时间投入到你主方向的学习中。

但如果你是想找 Java 方向的工作,尤其是想进大厂的话,一定要继续努力,用心学习下个阶段的企业开发进阶知识。

阶段 4:Java 企业开发进阶

目标

学习更多企业级开发技术和编程思想,能够结合多种技术,独立开发出架构合理的完整系统,

要了解为什么需要这个技术?什么时候用这个技术?某个需求该用哪些技术?

当然,这个阶段的内容有些过于丰富,不是所有的东西都要学,大家可以根据自己的实际情况(时间),有选择地学习。

🌘 软件工程

软件开发和管理的一些概念、原则、技术、方法、工具和经验。

知识

  • 软件的本质
  • 软件特性
  • 软件过程
  • 软件开发原则
    • 开闭原则
    • 里氏替换原则
    • 依赖倒置原则
    • 单一职责原则
    • 接口隔离原则
    • 迪米特法则
  • 软件过程模型
  • 敏捷开发
  • 软件开发模型
  • 需求建模
  • 软件设计
  • UML
  • 体系结构设计
  • 设计模式
  • 软件质量管理
  • 评审
  • 软件质量保证
  • 软件测试
    • 单元测试
    • 集成测试
    • 系统测试
    • 压力测试
    • 部署测试
  • 软件配置管理
  • 软件项目管理
  • 软件项目估算
  • 项目进度安排
  • 风险管理
  • 软件过程改进
    • 成熟度模型

学习建议

大学软件专业的必修课,偏理论,能学到很多企业软件开发的方法,也是对软件开发同学综合能力的提升,有时间的话可以了解下。但对想要快速找工作的同学来说,忽略即可,面试基本不会问。

资源

  • 书籍

    • 《软件工程:实践者的研究方法》:https://book.douban.com/subject/6047742/ (经典大黑书,讲的非常全面,但同样完整读下来还是有些难度的)
    • 《软件开发的 201 个原则》:https://book.douban.com/subject/35628886/ (工具书,看一遍挺好的)
  • 视频

    • 清华大学软件工程:https://www.bilibili.com/video/BV1eE411V7Cr
    • 北京大学软件工程:https://www.bilibili.com/video/BV1Vt411V72G
    • 大连工业大学软件工程:https://www.bilibili.com/video/BV1Ns41177VM
  • 大学课件

    • 浙大计算机软件工程:https://github.com/QSCTech/zju-icicles

🌖 设计模式(21 天)

设计模式是软件开发中解决一类问题的通用方法。

使用设计模式能让你写出更优雅、可维护的代码,也正因如此,很多框架源码都用到了设计模式,你不学很难看懂。

知识

  • 创建型模式:对象实例化的模式,创建型模式用于解耦对象的实例化过程

    • 单例模式
    • 工厂方法模式
    • 抽象工厂
    • 建造者模式
    • 原型模式
  • 结构型模式:把类或对象结合在一起形成一个更大的结构

    • 适配器模式
    • 组合模式
    • 装饰器模式
    • 代理模式
    • 享元模式
    • 外观模式
    • 桥接模式
  • 行为型模式:类和对象如何交互,及划分责任和算法

    • 迭代器模式
    • 模板方法模式
    • 策略模式
    • 命令模式
    • 状态模式
    • 责任链模式
    • 备忘录模式
    • 观察者模式
    • 访问者模式
    • 中介者模式
    • 解释器模式

学习建议

先理解概念,了解每个设计模式的特点和应用场景,再多加练习,运用到实际项目。

经典面试题

  1. 单例模式有哪些实现方式?有哪些优缺点?请手写其中一种
  2. 你用过哪些设计模式,为什么用它?

资源

  • 书籍

    • ⭐《图解设计模式》(强烈推荐这本书,正是用 Java 语言实现,图多、有示例代码、有习题和答案,很不错)
    • 《Head First 设计模式》
    • 《大话设计模式》
    • 《设计模式:可复用面向对象软件的基础》(大黑书,有能力的话也可以去读)
  • 视频

    • 尚硅谷图解 Java 设计模式:https://www.bilibili.com/video/BV1G4411c7N4
  • 文档

    • 菜鸟教程:https://www.runoob.com/design-pattern/design-pattern-tutorial.html
    • 图说设计模式:https://design-patterns.readthedocs.io/zh_CN/latest/

🌕 缓存(14 天)

缓存是高并发系统不可或缺的技术,可以提高系统的性能和并发,因此是后台开发必学的知识点,也是面试重点。

知识

  • 什么是缓存?
  • 本地缓存
    • Caffeine 库
  • 多级缓存
  • Redis 分布式缓存
    • 数据类型
    • 常用操作
    • Java 操作 Redis
      • Spring Boot Redis Template
      • Redisson
    • 主从模型搭建
    • 哨兵集群搭建
    • 日志持久化
  • 缓存(Redis)应用场景
    • 数据共享
    • 单点登录
    • 计数器
    • 限流
    • 点赞
    • 实时排行榜
    • 分布式锁
  • 缓存常见问题
    • 缓存雪崩
    • 缓存击穿
    • 缓存穿透
    • 缓存更新一致性
  • 相关技术:Memcached、Ehcache

学习建议

学会如何简单地使用缓存并不难,和数据库类似,无非就是调用 API 对数据进行增删改查。

因此,建议先能够独立使用它,了解缓存的应用场景;再学习如何在 Java 中操作缓存中间件,并尝试和项目相结合,提高系统的性能。

跟着视频教程实操一遍即可,可以等到面试前再去深入了解原理和高级特性。

经典面试题

  1. Redis 为什么快?
  2. Redis 有哪些常用的数据结构?
  3. Redis RDB 和 AOF 持久化的区别,如何选择?
  4. 如何解决缓存击穿、缓存穿透、雪崩问题?
  5. 如何用 Redis 实现点赞功能,怎么设计 Key / Value?

资源

  • 视频
    • ⭐ 尚硅谷 - 2021 最新 Redis 6 入门到精通教程:https://www.bilibili.com/video/BV1Rv41177Af (基于 Redis 6 的,推荐)
  • 文档
    • Redis 命令参考:http://redisdoc.com/
    • Redis 面试题整理:https://github.com/lokles/Web-Development-Interview-With-Java/blob/main/Redis%E9%97%AE%E9%A2%98.md
  • 书籍
    • 《Redis 实战》(经典)
  • 工具
    • ⭐ Redis 在线练习:https://try.redis.io/ (强烈推荐)

🌖 消息队列(14 天)

消息队列是用于传输和保存消息的容器,也是大型分布式系统中常用的技术,主要解决应用耦合、异步消息、流量削锋等问题。后台开发必学,也是面试重点。

知识

  • 消息队列的作用
  • RabbitMQ 消息队列
    • 生产消费模型
    • 交换机模型
    • 死信队列
    • 延迟队列
    • 消息持久化
    • Java 操作
    • 集群搭建
  • 相关技术:Kafka、ActiveMQ、TubeMQ、RocketMQ

学习建议

和缓存一样,学会如何使用消息队列并不难,无非就是调用 API 去生产、转发和消费消息。

因此,建议先能够独立使用它,了解消息队列的应用场景;再学习如何在 Java 中操作消息队列中间件,并尝试和项目相结合,感受消息队列带来的好处。

这里我建议初学者先学习 RabbitMQ,比 Kafka 要好理解一些。跟着视频教程实操一遍即可,可以等到面试前再去深入了解原理和高级特性。

经典面试题

  1. 使用消息队列有哪些优缺点?
  2. 如何保证消息消费的幂等性?
  3. 消息队列有哪些路由模型?
  4. 你是否用过消息队列,解决过什么问题?

资源

  • 视频
    • ⭐ 尚硅谷 - 2021 最新 RabbitMQ 教程:https://www.bilibili.com/video/BV1cb4y1o7zz (很新很全面)
  • 文档
    • RabbitMQ 中文文档:http://rabbitmq.mr-ping.com/
  • 书籍
    • 《RabbitMQ 实战:高效部署分布式消息队列》(经典)
  • 工具
    • ⭐ RabbitMQ 在线模拟器:http://tryrabbitmq.com/

🌖 Nginx(14 天)

Nginx 是主流的、开源的、高性能的 HTTP 和反向代理 web 服务器,可以用于挂载网站、请求转发、负载均衡、网关路由等。前后端开发同学都需要学习,在后端开发的面试中有时会考到。

知识

  • Nginx 作用
  • 正向代理
  • 反向代理(负载均衡)
  • 常用命令
  • 配置
  • 动静分离(网站部署)
  • 集群搭建
  • 相关技术:HAProxy、Apache

学习建议

Nginx 的基本使用非常简单,甚至不需要看任何的视频,跟着一篇文章就能够用它来提供网站访问能力、实现反向代理。

但是在企业中,Nginx 的使用往往没那么简单,作为负载均衡、请求转发的重要组件,往往需要针对实际场景去写一些特定的配置。因此建议有时间的话,实践下 Nginx 的配置方法,了解 Nginx 基本的设计思想,对今后自己设计系统时也有帮助。

经典面试题

  1. Nginx 有哪些作用?
  2. Nginx 为什么支持高并发?
  3. Nginx 有哪些负载均衡策略?
  4. 什么是 Nginx 惊群问题,如何解决它?

资源

  • 视频
    • ⭐ 尚硅谷 - Nginx 教程由浅入深:https://www.bilibili.com/video/BV1zJ411w7SV (讲的比较全面)
    • ⭐ Nginx 鱼皮 - 手把手带你从0搭建个人网站:https://www.bilibili.com/video/BV1rU4y1J785/ (简单演示 Nginx 部署网站)
  • 文档
    • Nginx 中文文档:https://www.nginx.cn/doc/index.html
  • 工具
    • Nginx 配置在线生成:https://www.digitalocean.com/community/tools/nginx?global.app.lang=zhCN

🌗 Netty 网络编程(21 天)

开源的 Java 网络编程框架,用于开发高性能(事件驱动、异步非阻塞)、高可靠的网络服务器和客户端程序。

很多网络框架和服务器程序都用到了 Netty 作为底层,学好 Netty 不仅可以让我们自己实现高性能服务器,也能更好地理解其他的框架应用、阅读源码。

知识

  • IO 模型(BIO / NIO)
  • Channel
  • Buffer
  • Seletor
  • Netty 模型
  • WebSocket 编程(动手做个聊天室)
  • 相关技术:Vertx(中文文档:http://vertxchina.github.io/vertx-translation-chinese/ ,比 Netty 简单多了,实在看不懂 Netty 也可以学习下这个)

学习建议

不同于之前学的 SSM 框架,Netty 还是需要一定学习成本的,一方面是国内资源太缺乏,另一方面很多重要的概念(比如 NIO)还是要多动手写代码调试才能理解。

还是建议先从视频入门,并且不建议在 Netty 上花太多时间,面试的时候一般也就考察一些 Netty 背后的思想(比如 NIO)而非框架本身的语法细节。

经典面试题

  1. Netty 有哪些优点?
  2. 什么是 NIO?
  3. 介绍 Netty 的零拷贝机制

资源

  • 视频

    • ⭐ 尚硅谷Netty教程:https://www.bilibili.com/video/BV1DJ411m7NR

    • Netty 技术演讲(中文字幕版):https://www.youtube.com/watch?v=I8yy2Cy7dDI

  • 文档

    • Netty 4 用户指南:https://www.w3cschool.cn/netty_4_user_guide/
  • 书籍

    • 《Netty 实战》

🌖 微服务(60 天)

随着互联网的发展,项目越来越复杂,单机且庞大的巨石项目已无法满足开发、运维、并发、可靠性等需求。

因此,后台架构不断演进,可以将庞大的项目拆分成一个个职责明确、功能独立的细小模块,模块可以部署在多台服务器上,相互配合协作,提供完整的系统能力。

换言之,想做大型项目,这块儿一定要好好学!

知识

Dubbo
  • 架构演进
  • RPC
  • Zookeeper
  • 服务提供者
  • 服务消费者
  • 项目搭建
  • 相关技术:DubboX(对 Dubbo 的扩展)
🌖 微服务
  • 微服务概念
  • Spring Cloud 框架
    • 子父工程
    • 服务注册与发现
    • 注册中心 Eureka、Zookeeper、Consul
    • Ribbon 负载均衡
    • Feign 服务调用
    • Hystrix 服务限流、降级、熔断
    • Resilience4j 服务容错
    • Gateway(Zuul)微服务网关
    • Config 分布式配置中心
    • 分布式服务总线
    • Sleuth + Zipkin 分布式链路追踪
  • Spring Cloud Alibaba
    • Nacos 注册、配置中心
    • OpenFeign 服务调用
    • Sentinel 流控
    • Seata 分布式事务
接口管理
  • Swagger 接口文档
  • Postman 接口测试
  • 相关技术:YApi、ShowDoc

学习建议

时间不急的话,建议先从 Dubbo 学起,对分布式、RPC、微服务有些基本的了解,再去食用 Spring Cloud 全家桶会更香。学完 Spring Cloud 全家桶后,再去学 Spring Cloud Alibaba 就很简单了。

这部分内容的学习,原理 + 实践都很重要,也不要被各种高大上的词汇唬住了,都是上层(应用层)的东西,基本没有什么算法,跟着视频教程学,其实还是很好理解的。

分布式相关知识非常多,但这里不用刻意去背,先通过视频教程实战使用一些微服务框架,也能对其中的概念有基本的了解。

大厂面试的时候很少问 Spring Cloud 框架的细节,更多的是微服务以及各组件的一些思想,比如网关的好处、消息总线的好处等。

经典面试题

  1. 什么是微服务,有哪些优缺点?
  2. 什么是注册中心,能解决什么问题?

资源

  • 视频

    • ⭐ 尚硅谷 Dubbo 教程:https://www.bilibili.com/video/BV1ns411c7jV

    • ⭐ 尚硅谷 SpringCloud(H版&alibaba)框架开发教程(微服务分布式架构):https://www.bilibili.com/video/BV18E411x7eT (把国外的 Spring Cloud 和国内的 Spring Cloud Alibaba 结合在一起对比着去讲,主流技术栈、知识点都讲到了,真心不错!)

  • 文档

    • Apache Dubbo 官方文档:https://dubbo.apache.org/zh/
    • Spring

标签: 9zj1b2连接器hy104压力变送器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台