路线特点
- 最新,完整一条龙,从入门到入土(⭐ 表示推荐学习)
- 给出目标、学习建议、关键知识点、最优资源以及各类资源推荐(视频、书籍、文档、项目、工具等)
- 划分阶段、更有计划,且在最后给出持续学习的方向、探索 Java 程序员发展的无限可能
前言
首先呢,我们要了解 Java 的应用场景和就业方向,看看和自己的学习目的是否一致,目前,Java
的岗位需求多,是后台开发的主流编程语言,功能强大,还是很值得学习的。
阶段 1:Java 入门
目标
培养兴趣、快速上手
前期准备
-
准备好一款在线、随时随地写代码的工具,不用在本地去安装和配置,是初学者的好帮手
-
- 推荐网站 - 菜鸟工具:https://c.runoob.com/compile/10
-
准备一款记笔记的软件,学编程的过程中老师的思路、自己遇到的问题、解决问题的方法、心得感悟、遇到的好资料,都要记下来哦,好记性不如烂笔头,可以帮助你事半功倍。
-
- 推荐软件 Typora:https://www.typora.io/
- 推荐使用 Markdown 语法编写,
-
想学好编程,别背代码,要多写,把这句话刻到脑子里。
-
选视频和找资料的小技巧:多看评论区、多看隔壁评论区,不要看过期的视频。
Java 编程基础(45 天)
知识
-
Java 特点(看不懂没事,别背!)
-
环境搭建
-
Java 基础语法
-
- 数据类型
- 流程控制
-
数组
-
面向对象
-
- 方法
- 重载
- 封装
- 继承
- 多态
-
抽象类
-
接口
-
枚举
-
常用类
-
- String
- 日期时间
-
集合类
-
泛型
-
注解
-
异常处理
-
多线程
-
IO 流
-
反射
学习建议
一定要持续学习,不能断!跟着书上的例子敲代码后,自主编写代码,并完成课后练习。
资源
-
视频
-
- ⭐ 韩顺平 - 零基础 30 天学会 Java:https://www.bilibili.com/video/BV1fh411y7R8(900 多集,顺序安排很合理,每个知识真正的打碎了,通俗、有示例、有实战、有思想)
-
文档
-
- ⭐ 菜鸟教程:https://www.runoob.com/java/java-tutorial.html(可以在线练习)
- 廖雪峰 Java 教程:https://www.liaoxuefeng.com/wiki/1252599548343744
-
书籍
-
- 《Head First Java》
-
在线游戏
-
- Codegym:https://codegym.cc/zh(玩玩前几关培养兴趣不错,但后面收费了)
Java 8(3 天)
知识
- Stream API
- Lambda 表达式
- 新日期时间 API
- 接口默认方法
资源
-
视频
-
- ⭐ 宋红康 - 全网最全Java零基础入门教程:https://www.bilibili.com/video/BV1Kb411W75N(只看 Java 8 部分即可)
-
文档
-
- ⭐ 菜鸟教程: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 基础后,有些同学会感到迷茫了啊,感觉好像啥也做不出来,不知道下一步做什么,我这一身的本领该如何施展啊?
不要慌,也不要急着去学新技术,接下来我们要多用 Java 来写代码了,巩固基础,但是写什么呢?
当然是数据结构和算法!
阶段 2:巩固基础
目标
想学好编程,计算机基础知识要学好。
比如算法,是程序员的灵魂。学好算法有助于我们理解程序、开拓思路,因此也是很多公司面试时考察的关键,在找工作前,还是要刷个上百道算法题目的。
我们这个阶段的目标是:熟练使用 Java 语言来编写程序,巩固 Java 的基础。
那直接用 Java 来写算法题目,一举两得,岂不美哉?
Java 基础(30 天)
学习建议
建议大家去阅读 《Java 核心技术卷 1》,这本书堪称经典,是帮助你复习巩固 Java 的不二之选,其中图形界面章节可以选择不看。
之后可以刷牛客的 Java 练习题,检验自己的水平,我当时刷了两遍。
资源
-
书籍
-
- ⭐《Java 核心技术卷 1》
-
练习
-
- ⭐ 牛客题库:https://www.nowcoder.com/intelligentTest
数据结构与算法
知识
-
时间 / 空间复杂度分析
-
数据结构
-
- 数组
- 字符串
- 队列
- 栈
- 链表
- 集合
- 哈希表
- 二叉树
-
算法
-
- 排序
- 双指针
- 查找
- 分治
- 动态规划
- 递归
- 回溯
- 贪心
- 位运算
- DFS
- BFS
- 图
学习建议
学算法一定要多思考、多练习!!!
在复习 Java、巩固基础的过程中,每天可以坚持用 Java 做 2 - 3 道算法题目。
不用担心看不懂,直接进入 LeetCode 学习板块 LeetBook,提供了免费的教程,文字、图解、动画讲算法、在线练习应有尽有,从 0 开始,跟着学习基础知识、跟着教程刷一些同类题目,培养算法思路。
之后再由简单到复杂、由通过率高到低,自主刷题,多看题解,举一反三。
有条件的朋友也可以试着参与竞赛,没什么门槛,可以帮助你集中精神,而且周赛的题目还是挺友好的~
资源
-
在线教程
-
- ⭐ 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
-
网站
-
- 五分钟学算法:https://www.cxyxiaowu.com/
###计算机基础
知识
-
计算机网络
-
- HTTP / HTTPS 协议
- 网络模型
- UDP / TCP 协议
- 网络安全
- 域名解析
-
操作系统
-
- 进程、线程
- 进程 / 线程间通讯方式
- 进程调度算法
- 进程 / 线程状态
- 死锁
- 内存管理
学习建议
在巩固基础期间,我建议大家多去了解计算机基础知识,比如操作系统、计算机网络。
但这一块知识说实话挺枯燥的,对吧,你说说我现在项目都不会做,你又让我看这些理论,是不是想让我头秃。
我的建议是,可以先看有趣的课外书,比如《图解 HTTP》等等,对基础知识先有个大致的印象,等后面有时间了再系统学习。
比如还在校园就跟着学校的进度学习就成,自学的话可以看下 《计算机网络微课堂》、 《清华操作系统原理》视频,有实力的小伙伴,能看懂大黑书就更好了。
资源
-
视频
-
- 《计算机网络微课堂》:https://www.bilibili.com/video/BV1c4411d7jb
- 《清华操作系统原理》:https://www.bilibili.com/video/BV1uW411f72n
-
书籍
-
- ⭐《图解 HTTP》
- 《网络是怎样连接的》
- ⭐《图解 TCP / IP》
- 《编码》
- 《30天自制操作系统》
- 《计算机网络-自顶向下方法》(难度较大,不推荐新手看)
- 《现代操作系统》(难度较大,不推荐新手看)
- 《深入理解计算机系统》(难度较大,不推荐新手看)
尾声
巩固基础要花至少 1 个月的时间,当你读完《Java 核心技术卷1》并且不用查询文档也能熟练地用 Java 做题时,就可以接着往下了。
阶段 3:Java 企业开发基础
目标
面向薪资编程,学习实际工作要用的技术,并能 独立 做出一个具有完整功能的 Java Web 项目。
MySQL 数据库(7 天)
企业中大部分业务数据都是用关系型数据库存储的,因此数据库是后台开发同学的必备技能,其中 MySQL 数据库是目前的主流,也是面试时的重点。
知识
- 基本概念
- MySQL 搭建
- SQL 语句编写
- 约束
- 索引
- 事务
- 设计数据库表
- 性能优化
学习建议
其中,SQL 语句编写 和 设计数据库表 这两个能力一定要有!
比如让你做一个学生管理系统,你要能想到需要哪些表,比如学生表、班级表;每个表需要哪些字段、字段类型。
这就要求大家多写 SQL、多根据实际的业务场景去练习设计能力。