2023届_f13954929360

技术栈测试

1、学Java看的哪个资料:

  • 重载,重写,泛型懂吗?学过,但是忘了一些

  • Java集合这块学过了吗?只是会用

  • HashMap源码,JVM,JUC是否看过:没有

2、数据结构与算法看的哪个资料:

  • 链表,栈,队列,二叉树能自己手写吗:链表、二叉树能手写
  • AVL树,红黑树,线段树学过吗:没有
  • 冒泡,快速,归并排序能手写吗:掌握
  • 递归,二分,贪心,回溯,动规,枚举这几种算法学过哪几种:递归,二分,回溯,动态规划
  • LeetCode 大概刷了多少题:200+

3、框架与中间件

  • servlet,cookie,session学过吗:没有
  • SSM学过了吗:没有
  • redis 学过吗:学过一点点
  • SpringBoot项目做过几个:无

4、MySQL看的哪些资料:

  • sql 熟练吗:了解
  • 索引底层原理懂吗:不太懂

5、计算机基础
* 计算机网络看什么资料:b站胡科大教书匠的计算机网络,看过一遍有些忘记
* 操作系统看什么资料: b站王道考研看过一部分
* 计算机组成原来看的什么资料:基本没看过

学习规划(2022.7.1)

如果说一系列八股文都要学的话,你需要学的还挺多,不过你有学历优势 + 大厂实习过的优势,面试机会 会多很多,我们有一些先不学也没事,主要就是要体现出你的基础扎实,对某些知识有深入研究,所以呢,我们先对必须学对几门课程保持深度,之后有时候在横向拓展,这里有一份各大公司的考点分析: 八股文各大考点分析

目前比较刚需的就是项目 + mysql和redis + 多线程基础模块 + Java集合模块,具体学习建议如下:

1、项目:你先优先完成一个项目吧,可以先做一个,就做 SpringBoot+MQ:支付实战 这个,用到了 springboot,你 ssm 没学过的话,需要先学一下,就简单快速 了解一下,你在课程大纲那里看就行 所有课程大纲入口,就看下 mybatis + spring + springmvc 以及 springboot,内容都挺简短的,你简单快速过一下就行,然后就可以做那个支付实战的项目了。

2、八股文:你先把 mysql 安排了,学完这个你可以把 HashMap 源码分析的视频看下,Java进阶 这里有,反正八股文这块就是保证下:mysql + Java集合 + 多线程 + 计算机网络 => jvm + 操作系统 + redis,你 JUC 那块很难的,先放一放,等这些学的差不多再来学习 JUC,毕竟时间有限。然后其他的八股文,你也可以按照自己喜欢的顺序来学吧,就是 Mysql 你先过下MySQL原理剖析课程说明,其他的你可以基于 八股文题库(必看) + 课程大纲来复习。

主要我和不好跟你说的很细,还得看你的时间学习进度,你就先把比较重要的 mysql + Java集合 + 多线程 + 计算机网络 过下。

3、算法:你 AVL 树 + 红黑树补一下,这两个在问集合 + mysql索引时,问的挺多的,你在这里找对应的章节看:数据结构与算法体系课,红黑树代码不要求实现,你就了解下这两个数据结构的由来以及应用。至于刷题的话,你把 算法高频题库 刷完就可以了。

时间安排:优先完成「1」,这样简历有个 Java 的项目,然后「2和3」的话,你可以每周花点时间学一学。如果一天4~5个小时,两个星期内应该可以搞定那些框架 + 一个项目。

不过你先学了,然后记得来每周打卡学习进度哈,比如像他们这样:23与22届做的比较好的成员示例

有什么问题记得随时私聊帅地

课程大纲: 所有课程大纲入口

每周学习跟进(一个月连续不打打卡会被移出目录)

7月2-5日
有一些其他的个人私事,其实学习的还是比较慢的
1 安装好了maven,并且知道了简单使用,个人感觉有点像npm的install
2 想系统学一下spring,目前大体明白了什么是反转控制和面向切面编程的思想,反转控制有点像什么都在配置文件中赋值,尽量避免变量赋值写死在代码中,aop感觉就是写一个额外方法,通过spring来注入到具体的业务函数中,生成一个代理类,目前可能学习的少,应用的少,还没体会到真正的好处,具体的实现细节可以等到下周做项目再深究。
3 接下来的计划
今天aop收尾
mabatis 2天
ssm 3天
其中,一天至少2道算法题保持手感(主要是之前做过的)
7月5日
spring
aop编程的具体实现:
sdk,通过动态代理Proxy.instane来的
cglib,通过创建一个继承了原来类的方法来实现的
execusion和around注解的使用
算法
复习了快速排序和归并排序
归并排序

    int[] temp;
    public void merge(int[] nums, int left, int mid, int right) {
        for(int i = left; i <=right; i++) {
            temp[i] = nums[i];
        }
        int i = left, j = mid+1, k = left;
        while (i <= mid && j <= right) {
            if(temp[i] < temp[j]) {
                nums[k++] = temp[i++];
            }else {
                nums[k++] = temp[j++];
            }
        }
        while (i <= mid) {
            nums[k++] = temp[i++];
        }
        while (j <= right) {
            nums[k++] = temp[j++];
        }
    }
    public void mergeSort(int[] nums, int left, int right) {
        if(left >= right) {
            return;
        }
        int mid = left+right >> 1;
        mergeSort(nums, left, mid);
        mergeSort(nums, mid+1, right);
        merge(nums, left, mid, right);
    }

先分成元素长度为1的小块,然后再组装回去,卡了一个点就是right = mid+1,这个其实就是计算机中计算mid向下取整造成的。
快速排序,个人感觉难度比归并大,主要是移动的过程中,左右互换的技巧,需要先让右边的不断逼近左边

    public int reversion(int nums[], int left, int right) {
        int temp = nums[left];
        // 比temp大的往后,小的往前
        while (left < right) {
            // 等于是为了1111使可以移动
            while (left < right && nums[right] >= temp) {
                right--;
            }
            // 小的放前面
            // 如果left == right了,赋值操作不会改变什么
            nums[left] = nums[right];
            while (left < right && nums[left] <=temp) {
                left++;
            }
            // 大的放后面
            nums[right] = nums[left];
        }
        nums[left] = temp;
        return left;
    }
    public void quickSort(int nums[], int left, int right){
        if(left >= right) {
            return;
        }
        int pivot = reversion(nums, left, right);
        quickSort(nums, left, pivot-1);
        quickSort(nums, pivot+1, right);
    }

二分
技巧主要是如果不满足,就让left或者right重新赋值,注意边界的处理,主要也是和mergesort类似,根本原因就是计算mid的时候向下取整,需要人工调整一下

    public int dochotomy(int[] nums, int target) {
        // 求 >= 的左边界
        int left = 0;
        int right = nums.length - 1;
        if(left > right) {
            return -1;
        }
        while (left < right) {
            int mid = left + right >> 1;
            if(nums[mid] < target) {
                left = mid + 1;
            } else {
                right = mid;
            }
        }
        return nums[left] == target? left : -1;
    }
    public int dochotomy1(int[] nums, int target) {
        // 求 <= 的右边界
        int left = 0;
        int right = nums.length - 1;
        if(left > right) {
            return -1;
        }
        while (left < right) {
            int mid = left + right >> 1;
            if(nums[mid] <= target) {
                left = mid + 1;
            } else {
                right = mid - 1;
            }
        }
        return nums[left] == target? left : -1;
    }

7月6日
学习mybatis
配置文件配置连接池信息和mapper类
mysql学习
创建表时的约束
7月7-11日
做了高频题库的链表和二叉树的题目
之前发现mysql语法有点忘了,又重新复习了一下,打算每天半小时练习一下
今天看完avl树和红黑树,并且整理一下各个树的区别和增删改查的方式
spring简单了解了,知道了注解开发,mvn等,mybatis其实没怎么看全,知道了一个面向接口编程,spring mvc其实也没怎么看全,先做springboot的项目吧,必须开始了
-7月11日
今天开始每天一小时看八股文了(23:00-24:00),今天先看最基础的https://www.iamshuaidi.com/9501.html
下午半小时练习mysql,半小时看avl树
-7月21日
这几天大体学了java集合、并发
需要梳理一下avl树、红黑树、b树用法使用场景
并发的一些具体问题
再重新看一些mysql的
补补最基础的操作系统、计算机网络、java基础
-7月25日
java基础过了一遍练习题
java并发知道了一些最简单的比如Runnbale和Thread用法,synchronized,乐观悲观锁、自旋、CAS等操作,juc先不看
JVM了解了最基本的类加载过程、内存构成、双亲委派、垃圾回收
mysql深入学了一些索引底层、事务、MVCC、锁等,还需要沉淀几天
明后两天背一些计算机网络的26-27 操作系统28-29 redis 30-31
然后开始刷算法吧
-8.13
bfs回溯、图算法、双指针、滑动 done
还有位操作、动态规划

发表评论

后才能评论