2023届_路
### 技术栈测试
1、学Java看的哪个资料:廖雪峰 Java 教程
- 重载,重写,泛型懂吗?会使用重载和重写
-
Java集合这块学过了吗?
- HashMap源码,JVM,JUC是否看过:
2、数据结构与算法看的哪个资料:
- 链表,栈,队列,二叉树能自己手写吗:链表、栈、队列可以
- AVL树,红黑树,线段树学过吗:
- 冒泡,快速,归并排序能手写吗:冒泡、快速
- 递归,二分,贪心,回溯,动规,枚举这几种算法学过哪几种:递归、二分
- LeetCode 大概刷了多少题:
3、框架与中间件
- servlet,cookie,session学过吗:
- SSM学过了吗:
- redis 学过吗:
- SpringBoot项目做过几个:
4、MySQL看的哪些资料:MySQL 必知必会
- sql 熟练吗:
- 索引底层原理懂吗:
5、计算机基础
* 计算机网络看什么资料:
* 操作系统看什么资料:
* 计算机组成原来看的什么资料:
学习规划(2022.2.22)
咱们先把 数据结构和算法的基础打好,把编码基础功打扎实,安排如何:
1、先学 数据结构与算法,如同你说的,还有很大进步空间,学完这门,基本很多都覆盖了,课程用到了 泛型,如果你忘了,可以在 Java基础 复习对应的知识。(在多态那里)
2、学完「1」可以学习 Java进阶。
学完「1」和「2|,可是刷题 + 做项目,你先学,学完和我说下,期间我会在群公告发面试相关的,你感兴趣可以跟着看
课程所有大纲入口:所有课程大纲入口
你先学,学完和我说,我根据你的情况给你安排学习其他的,记得每周来跟新学习进度哦
每周学习跟进
第五周:2022.5.9~2022.5.15
剑指 offer 40:最小的k个元素
leetcode 704 二分查找:递归实现
leetcode 704 二分查找:非递归实现,以及修改循环不变量
leetcode 215 select K:非递归实现,以及修改循环不变量
归并排序将区间改为前闭右开
做之前感觉挺简单的,没想到做的时候遇到了:当数组缩小到只有两个元素时,递归调用时区间不在缩小的 bug,想了很久才总结出了:在通过求中间值缩小区间时,要满足左区间向上取整,右区间向下取整的条件
二分查找变种的实现:upper/ceil/lower_ceil/upper_ceil/lower_floor/upper_floor
leetcode 875 实现与总结
leetcode 1011 实现与总结
二分搜索树的创建(递归与非递归)
二分搜索树的前序、中序、后序遍历(递归); 前序遍历(非递归)
二分搜索树的层序遍历
非递归实现删除二分搜索树中的最小元素
二分搜索树元素的删除
第四周:2022.5.2~2022.5.8
自底向上的归并排序
* 将两个待排序数组看成一个数组,类似于自顶向下的归并排序
* 将两个待排序数组分开看待,根据左边数组的首地址和数组的大小来确定数组的边界
归并排序总结
1. 自顶向下:通过递归自顶向下的分解问题,使小数组有序,再将两两之间有序的小数组归并为一个有序的大数组,并按照此思路逐层向上归并。
2. 自底向上:开始就将待排序数组看成:由 n 个长度为 1 的有序数组组成,然后逐层向上归并,以达到数组排序的目的
leetcode:剑指 Offer 51 逆序数对
总结:归并排序的特点:当有序数组 a 中某个元素大于有序数组 b 中的某个元素时,那么有序数组 a 中该元素后面的所有元素都大于有序数组 b 的这个元素。根据这个特点就可以使用归并排序求逆序数对。当知道数组 a 中有多少个逆序数对时,就可以对数组 a 进行排序,这样当有新的元素增加到数组 a 时,只需要找到数组 a 中第一个比新元素大的位置就可以直接计算出增加该元素会增加多少个逆序数对。
快速排序:
* 单路快速排序:从数组的一端向另一端开始比较,在循环过程中,将小于标定点的值往前移,大于标定点的值往后移,但小于和大于标定点的值都放在已比较的位置
- 双路快速排序:从数组的两端分别向中间开始比较,将数组左边大于等于标定点的值往右移,数组右边小于等于标定点的值往左移
-
三路快速排序:将元素分成三部分,通过比较将小于标定点的元素移到数组左边,大于标定点的元素放到数组的右边,等于标定点的元素放到小于和大于元素之间,这样每次
partition后所有等于标定点的元素都处于排序完成后的位置
leetcode 75:颜色分类
剑指 offer 40:最小的k个元素
leetcode 215:数组中的第K个最大元素
第三周:2022.4.25~2022.5.1
链表
* 链队列
* 链栈
递归链表
自顶向下的归并排序实现与优化
* 事先考虑待合并数组是否有序
* 对小规模数据采用插入排序
* 在顶层函数创建临时数组,并作为参数传递到被调函数,以减少内存的申请消耗
第二周:2022.4.18~2022.4.24
数据结构:栈、数组队列、循环队列、链表的简单入门
Java:Java 内部类
第一周:2022.4.11~2022.4.17
数据结构:线性查找、选择排序、插入排序、数组、栈的简单入门
Java:Java 泛型