【java后端学习路线1】java基础+数据结构与算法+Mysql数据库,985本海硕自学转码之路
JAVA后端学习路线
路线总览
javase->Mysql->计算机网络->JavaWeb->Maven(1)->Spring->SpringMVC->Mybatis->Maven(2)
->Linux->Git->SpringBoot->MyBatisPlus->Redis->JVM->JUC->Nginx->Docker->RabbitMQ->SpringCloud
->项目(谷粒商城/仿牛客网)
方法论
每天刷leetcode
看视频(写demo…)->记笔记->看javaGuide->温习
Java基础(45天)
推荐视频1:韩顺平java基础
推荐理由: 韩老师的java基础课程总时长199小时,讲解非常细致,零基础小白绝对没有问题,java基础我学习的是韩顺平老师的视频
学习建议: 第23章之后的可以跳过(24章可以选看),视频建议1.5倍数播放,深入理解面向对象编程的思想:封装、继承、多态,第15章集合部分,第一遍一定要跟着老师的源码走下来,不懂的话可以多看几遍,面试经常问。第23章反射,其实思想很简单,万物皆对象,属性、方法也都是对象。第24章Mysql,这里只是基础语法,可以直接跳过,直接去学尚硅谷宋红康老师的mysql
推荐视频2:尚硅谷Java入门视频教程
推荐理由:康师傅的语言艺术非常到位,生动形象,如果java基础跟着韩老师,建议把康师傅视频P662-P692JDK8新特性学习了,尤其是stream流,理解函数式编程思想(其实就是匿名内部类)
常见面试题
建议每学完一个技术,去看看JavaGuide面试指南,就是所谓的"java八股文",里面有所有常见的面试题,同时也可以巩固自己刚学的知识
- 面向对象三大特征及理解
- 接口和抽象类的区别
- 什么是SPI
- 重写和重载的区别
- try-catch-finally
- IO流设计模式
- IO流模型:BIO、NIO、AIO
- HashMap底层(很多公司)
- ConcurrentHashMap数据结构(很多公司)
- ArrayList扩容机制(略多公司)
- java代理模式:JDK 动态代理+ CGLIB 动态代理
数据结构与算法(每天)
推荐:代码随想录
Leetcode Hot100 剑指offer 尚硅谷数据结构与算法-韩顺平
推荐理由:数据结构与算法,对与非科班的同学,如果时间比较充裕可以先看尚硅谷数据结构与算法;我没有看,我是直接就跟着代码随想录刷leetcode。强推Carl哥的代码随想录,分为数组、链表、哈希表、字符串、双指针、栈与队列、二叉树、回溯算法、贪心算法、动态规划。每一道题都配有非常详细的题解,我不推荐上来就leetcode直接刷,比较乱,按着代码随想录一个模块一个模块刷,可以加强自己对每个数据结构的理解。carl哥的回溯算法和贪心算法真的讲的特写好。
学习建议:刚开始刷Leetcode一定不要一直想一道题,这样容易打击自己的自信心,我刚开始连简单题都写不出来,想10-20分钟写不出来,直接去看题解。刚开始建议每天1-3题。代码随想录刷完一共大概170题,代码随想录可以多刷几次,刷题在精,不再多,一定要保证自己刷过几遍的题目会做(代码随想录我一共刷了3遍)。代码随想录刷完后,刷Leetcode hot100,这个时候手感应该已经很好了,大部分题目基本都知道用什么方法去解。
补充:对于二叉树的递归,一定不要自己一直在脑海里面想,就简单想成root、root.left、root.right三个节点,建议看看这个博客:三道题套路解决递归问题
对于回溯算法,牢记回溯模板,基本都没问题,回溯模板如下(来自代码随想录)
void backtracking(参数) {
if (终止条件) {
存放结果;
return;
}
for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {
处理节点;
backtracking(路径,选择列表); // 递归
回溯,撤销处理结果
}
}
对于动态规划,牢记动态规划五部曲(代码随想录)
- 确定dp数组(dp table)以及下标的含义
- 确定递推公式
- dp数组如何初始化
- 确定遍历顺序
- 举例推导dp数组
Mysql数据库(20天)
推荐视频:尚硅谷mysql从入门到高级
推荐理由:尚硅谷数据库是宋红康老师主讲(java基础也是他),时长85小时,讲的非常详细,比喻也很恰当
学习建议:我是学的韩顺平老师java基础里面的mysql基础,之后有学习的宋红康老师的mysql高级(p96-最后),建议直接学习宋老师的基础到高级,尤其是mysql高级篇,面试经常会问到。
视频中推荐的MD文档链接:
关注微信公众号:程序员城南。回复:Mysql,获取笔记链接
常见面试题
JavaGuide面试指南
-
mysql的基础架构
连接器->查询缓存->分析器->优化器->执行器->存储引擎
-
mysql存储引擎
MyISAM 和 InnoDB 的区别
-
mysql索引
3.1 索引的底层数据结构:InnoDB 是B+树
3.2 B+树与B树的区别
3.3 为什么B+树比B树更好
-
日志binlog、redo log、undo log
-
事务四种的隔离级别
-
MVCC
6.1 InnoDB存储引擎对MVCC的实现: 隐藏字段+Read View + undo Log
6.2 MVCC解决不可重复读RC
6.3 如何防止幻读:MVCC+临键锁(Next-Key Locks)
-
Mysql优化(很多公司都问到了)
-
常见的锁,行锁,表锁…