23届-6
技术栈测试
1、学Java看的哪个资料:Java核心技术卷1,尚硅谷Java教程,Java编程的逻辑
- 重载,重写,泛型懂吗?懂
-
Java集合这块学过了吗?停留在知道接口的阶段,深入源码的阶段正在复习
- HashMap源码,JVM,JUC是否看过:Hashmap看了一部分,jvm在3,4个月前看过深入理解JAVA虚拟机,JUC看了黑马程序员全面深入学习Java并发编程,JUC并发编程全套教程_哔哩哔哩_bilibili,然后目前正在看JAVA并发编程的艺术
2、数据结构与算法看的哪个资料:
- 链表,栈,队列,二叉树能自己手写吗:链表可以,栈和队列以前写过,有点忘了,二叉树没学过
- AVL树,红黑树,线段树学过吗:没有
- 冒泡,快速,归并排序能手写吗:可以
- 递归,二分,贪心,回溯,动规,枚举这几种算法学过哪几种:递归,二分,回溯,动规
- LeetCode 大概刷了多少题:105左右
3、框架与中间件
- servlet,cookie,session学过吗:
- SSM学过了吗:学过Spring,IOC和AOP,其他都没有
- redis 学过吗:学过,api使用阶段看的比较多,redis设计与实现看了前13章
- SpringBoot项目做过几个:
4、MySQL看的哪些资料:
- sql 熟练吗:熟练
- 索引底层原理懂吗:不懂
5、计算机基础
- 计算机网络看什么资料:图解HTTP 图解TCP/IP Unix高级网络编程看过2章
- 操作系统看什么资料:没看过
- 计算机组成原来看的什么资料:没看过
学习建议(2022.1.6)
首先在学习上,我的建议是,依然脚踏实地学,不用为了赶提前批而学的很浅层,无论是春招还是秋招,面试都是一个持续时间比较长的过程,并且这个过程会很艰难且收获贼多。
下面我跟你说一说你需要补的东西:
算法:你的计划是可以的,然后可以刷我总结的题:算法高频题库,差不多 100 道吧,类似于 leetcode 的 top100,是往年出现的比较高频的题,比如你一天刷 3 道,一个月可以完成一轮刷,另外记得去牛客网熟悉下自己处理输入输出
Java部分:集合你可以等我给的文章,JVM你就按照你现在的节奏看那本书,重点是垃圾回收+内存运行区域+委派机制,并发你可以看这个 Java并发,一个基本够,你可以优先掌握下 volatile=>sychronized=>cas=>qps,对于 volatile 和 sychronized 你可以写段很简单的程序,然后看下字节码,看看是怎么回事。
框架等:等我给资料,不过先做个项目,就做这个 MQ+SpringBoot项目,投递简历前得做完,给下优先级,做的时候,ES搜索那块不做。
MySQL与Redis:MySQL就看 45 讲,肯定要二刷的,重点是前面基础部分,主从备份那里,随便了解就行,Redis 你做完项目之后,我再给你对应的学习资料,一般项目用到redis,经常会基于项目来问你。
计算机基础:操作系统和计算机组成原理,可以刷下课程大纲这两个视频:课程大纲,然后其他的,我给你们从面试题的角度找文章深入。
简单说下学习顺序:你算法我觉得每天刷两三道,很可以的了,然后是在保持刷算法的同时,可以
1、先做下我说的项目,投递前简历有项目是必选项,可以优先做一个项目:MQ+SpringBoot项目
2、然后其他的,我觉得优先级差不多的,你一天不要学习太散,我觉得学习 3 个左右或者 2 个就差不多了,就是学习的时候,得专注 1 个小时+这种,如果硬要排个顺序,我觉得可以先把操作系统=》mysql+jvm=>并发。
最后说几句,不要为了赶面试前能全部完成而走马观花学哈,面试持续很长,不一定就非要全部学完,应该在某些东西要有深度,我前几天录制过一个如何回答面试官问题的视频,可以看下:https://www.iamshuaidi.com/8230.html
有什么问题可以随时微信私聊我哈,不用担心打扰我,随时都可以滴,然后可以每周说下学习进度,这样是实时知道你们的学习情况,当然,每日去星球打卡也是可以滴。
每周学习进度跟进
2月7日-2月13日进度:JavaWeb中 Servlet MyBatis Request Response快速入门, 操作系统课程看到存储(1/2),二叉树高频题刷完,链表还差5题刷完
2月28日-3月6日进度:
(1)计算机网络方面:复习了TCP的报文头格式,拥堵控制,滑动窗口,以及流格式。三次连接相关的面试题(为什么是3次,为什么不是2次,为什么不是4次)
(2)项目基本完成第三章,redis正在过,预计本周五过完redis+消息队列
(3)操作系统复习虚拟内存,进程,线程相关面试题知识,虚拟内存(分段,分页,段页),内存置换算法(最佳页面,先进先出,最近最久未使用,最少频率使用,时钟),调度算法(先来先调度,最短作业优先,高响应比,时间片,最高优先级,MLF多级反馈))
(4)mysql:以面试题为准进行复习,根据《从根上理解mysql》快速过了mysql支持的连接方式,InnoDB行存储(compact,REDUNDANT,dynamic,对溢出页的处理),InnoDB页的格式(File header ,page header, free space, user record, 以及 page directory 和 trailer),复习了索引的由来,为什么用b+树,为什么不用b树,索引的好处。
(5)算法做的比较少,基本没怎么做,把lru写了
(6)jvm:复习了类加载机制,待复习双亲委派机制,破坏双亲委派机制
下周目标:
(0)项目:redis过完+消息队列
(1)算法:复习链表的错题,快速把回溯的题写完,把左程云的数组高频题结合hot100来看看
(2)mysql:把索引的章节吃透,还有时间就复习事务
(3)jvm:类加载阶段用思维导图作为删除
(4)网络:把tcp剩下的部分复习完,对应面试题
(5)操作系统:剩下select,poll ,epoll。复习网络,主要是复习进程,线程,内存管理,零拷贝,(上周学的)
(6)研究生课程:深度学习的作业(调参)
3.6~3.19:空了2个星期:回忆一下,大概做的事情
(1)redis看了一遍书,了解了常用的数据结构,性能优缺点
(2)计算机网络相关:TCP的可靠连接实现
(3)操作系统:进程间通信的方式
(4)mysql:认真过完了索引部分,但是还没看完锁,日志,mvcc
(5)并发:
– 线程池
– aqs cas
3月20日-3月27日的进度:
(1)netty过完,netty几个组件的作用,以及心跳检测
(2)算法:
链表的递归难题(k个反,反一部分(还不会)两两反)
回溯法:组合,组合综合,子集,全排列
(3)Java并发模型中的底层:硬件相关(缓存,写缓存,无效队列,缓存一致性协议,内存屏障,可见性的根本在于写缓存,synchronized的原子性:从内存屏障的角度去理解,获取屏障,释放屏障)
4月4日-4月10日的进度:
(1)服务端一面,面经整理
(2)HTTP专栏-40%(基本头文件,队头阻塞,如何缓解,get/post 幂等性的区别..)
(3)TCP(计算机网络-自上而下-传输层,不仅仅从tcp角度,是从传输层的角度介绍了要基于一个不可靠的信道(ip,不保证到达,不保证顺序),通过序号,重传,协议等..)(TCPIP协议,卷1,看了tcp的2章)
(4)UNIX套接字编程–从c语言套接字的角度去理解网络编程。socket,bind,listen,connect,unix的5个io模型,阻塞,非阻塞,多路复用,信号,异步。套接字地址结构,为什么要有通用的套接字地址结构(类似void※空指针)demo:写了一个服务端的pingpong检测demo,类似心跳检测。
(5)网络编程模型-Reactor,单进程/线程 reactor,单reactor多线程,多reactor,多线程,Proactor(待看)
下周目标
(1)算法(二叉树复习close,数组新开的题1/2,动态规划begin)
(2)项目:整理项目的问题(网络编程相关,redis相关,spring事务相关,mysql相关)
(3)投递-字节,腾讯,阿里的投递·
(4)八股文:消息队列帅地整理的部分,专栏的部分,tcp把剩下的看完,http把2和3的八股看完。
4月11日-4月17日的进度:
算法题
(1)动态规划题目复习(01背包,完全背包,分组背包,公共子序列,递增子序列,子数组的题有点生疏(连续子数组,乘积最大子数组,回文子串最大长度))
(2)笔面试题复习:链表的快排,快排
(3)二分:整理高频题,复习区间不变形的定义 (出现的第一个数、最后一个数,山脉数组,旋转数组,)
计算机网络
(1)整理了HTTP的优缺点,HTTPS的连接建立过程,HTTP2的流传输,多路复用
笔试
(1)网易笔试 牛客系统崩溃,a了1/4道
(2)网易游戏笔试 A了1.7道/3道
网络编程
(1)NIO前三章,熟悉5个IO模型,Reactor和Proactor模式
复盘:有了几个投递(腾讯,网易,字节),这周网易字节面试,
总结:这周主要看算法,研究生的项目用了很多时间,这周终于搞定了,这周时间比较分散,有效学习时间大概在21h,下周开始可以专心搞java相关
目标:下周有效学习时间提升到35-40h,方向:
(1)算法:整理排序相关的延伸题,链表题做第二遍,动态规划整理几个专题
(2)计算机网络:HTTP收尾,TCP收尾
(3)网络编程:select,poll,epoll的c代码分析
(3)项目:整理项目文档。
(4)mysql:八股
4月18日-4月24日的进度:
算法题
(1)链表递归题-排序
面试
(1)字节二面挂
(2)网易二面挂
(3)京东二面待定
Mysql
(1)MVCC,锁
项目
(1)Netty网络架构
复盘:总结一下二面挂的原因:项目深度问题,Spring相关问题不太了解。
有效学习时间:30h
4月25日-5月1日的进度:
这周看的东西不多,主要是以下方面:
(1) 二叉树专题(把二叉搜索树 链表 树的构造做了一下)
(2)C语言基础知识 C Primer Plus 4章 为了学习操作系统用
5月2日-5月9日的进度:
(1)C Primer Plus 看完
(2)博乐笔试:
小结:最近学习效率不高,被笔面试搞得心态调整的不好,接下来一周打算重新回到35-40h的学习时间,分配如下
(1)C语言&操作系统(打算看看操作系统层面的知识 包括书和视频,操作系统基础停留在八股文) 预计时长:10h
(2)算法:这段时间整理了链表和二叉树的题目,打算这周把难题都做完,动态规划开个头 预计15h左右
(3)计算机组成原理:专栏+八股(3-5h)
优先级:算法>C语言&操作系统> 计算机组成原理
5月10日-5月16日的进度:
有效学习时长:28h左右(下周目标回到40h)
(1)C语言:预处理器,编译等(C语言现代方法3章+课后习题,为操作系统打基础)
(2)算法题:小结:主要做的是对某些习题的深入,以及做了部分新题(总题数:180)
– 透彻理解堆(通过上浮下沉操作维护一个完全二叉树,基本api,push,pop操作)以及相关面试题:堆排序,前k高频..,
– 做了一部分算法题:接雨水,二叉树最大宽度,数据前k高频的数,数据的第k大的数,
(3)面试准备:
– JVM虚拟机:内存区域复习(堆,栈,方法区中的串池等),垃圾回收算法的复习
– Mysql关于查询优化:联合查询,最左前缀的复习(实习相关)
小结:本周本来想做完C语言开始看CSAPP和操作系统的,但是临时有面试,周三周四临时准备和回顾了一下项目,基本算法题也简单,下周任务:
– 看Spring的IOC和AOP形成自己的面经
– 算法完成链表递归部分以及二叉树的二叉搜索树部分,开始总结动态规划的题目
– Mysql整理查询优化方面的资料
5月17日-5月23日的进度:
(1)Mysql相关:MVCC加强理解,undo日志
(2)面试相关:度小满三面
(3)Linux相关:常用命令行,vim操作(shell的还没看)
(4)C相关:CS61C前4节,关于C语言的指针,函数,字符串常用函数,malloc, calloc等以及内存结构(栈,堆,代码区)
本周总结:本周为了项目看了很多八股文,如mysql的分库分表,主从复制等,如kafka消息队列的高可用,高性能,消息队列选型对比,但是从三面得出项目本身的深度还需要提高,还是需要继续深挖难点,形成自己的脉络。
下周目标:
(1)动态规划刷15-20道题目(打家劫舍,股票,凑零钱)形成自己的刷题框架
(2)CS61C一周进度刷4-8节课,希望能赶到汇编语言的级别
(3)Linux操作系统:图解Linux这周看完(250页) 看相关博客和专栏,了解其内存管理和进程管理
5月24日-5月30日的进度:
时长:28h
(1)算法题:二叉树搜索相关,树形dp。5-10题
(2)C语言:
(3)Java web
5月31日-6月5日的进度:
时长:26h
(1)git(6h):基本把基本命令过了一遍
(2)java web:jsp servlet基础知识
(3)计算机组成原理八股文:把c语言的预编译知识过了一遍,
(4)算法题:二叉搜索树:closed,把题目刷完了
6月6日-6月12日的进度:
有效学习时长:25h
– 操作系统:
(1)Three easy pieces 中的进程 Process,理解内存布局,进程是对cpu资源的抽象,cpu的状态,进程所需要的系统调用(创建(重点),销毁,状态,等待,其他控制),
(2)线程:内核线程,用户线程,对应关系,多对1,1对1,多对多(华为面试)
– 大数据相关:
(1)Flink demo,对于流计算(本质是离线计算和在线计算的区别),
(2)Kafka的消费者(发偏移量:同步 异步),生产者api(生产者异步发送,同步发送,)
– java8特性:
(1)Lambda表达式,函数引用,服务于行为参数化(之前需要传递对象才能达到传递不同分法实现,本质是写一个接口,之前是用匿名实现类,但是现在如果声明成函数式接口,就可以直接用lambda表达式)
(2)流:流 vs 集合,流的计算
总结:没怎么看算法,这周看的更多是实习相关,看得更多是大数据原理,希望之后能对面试有帮助
读的书:java8实战,Flink实战,Kafka权威指南,现代操作系统
下周目标:
秋招部分
(1)把一些简单的架构书过1,2本,迅速理解概念(预计5-6h)
(2)算法:待确定
(5)多线程:多线程设计模式(可以结合netty来看)
基础部分
(2)操作系统进程继续深入理解(希望4-5h)
实习部分
(3)实习相关:大数据,kafka,流计算(估计要5h+)
6月13日-6月24日的进度:
躺平..
实习配环境,写Spark脚本
熟悉Linux/git基本操作
小结:因为实习,学习的时间松懈了,要重新捡起来了
目标:从25日开始,开始对照地哥的进度进行算法题,高频面试题,项目优化。
6月25日-7月10日的进度:
算法:Leetcode 链表专题(Hot100,剑指offer)合计20题,还需要再整理代码
Netty:
(1)nio基本模型:channel,bytebuffer,selector
(2)Netty基本编程组件:pipeline handler evenloopgroup channel bytebuf ctx
(3)Linux&c:c部分,
(4)java基础板块:集合框架基础知识总结:iterator, iterable, collection, map等跟接口的理解。
(5)计算机网络:传输层
7月11日-7月17日的进度:
算法:Leetcode 字符串 5题 链表收尾(关于递归)
Mysql:整理索引部分知识,复习面试题
网络:整理dns基础知识,http基础知识(20讲),tcp传输层基本知识
7月24-31日的进度:
操作系统:进程,线程,进程调度算法,进程通信
算法:Leetcode 栈5题 排序3题 堆 3题
HashMap:源码以及面试题
并发:volatile,synchornized,内存屏障,Java线程的实现
8月1日-7日的进度:
个人评价:本周因为要准备面试,所以看的多了一些
笔试:2场笔试
算法题:10道题(关于堆+栈),栈还剩下3-5题,堆已经做完了
Redis:架构,持久化(aof,rdb),为什么快,单线程是单在哪里,缓存异常,穿透,雪崩,数据不一致性。 数据结构相关
Kafka:架构,如何保证可靠性,如何实现高性能
Zookeeper:常见面试题:节点类型,是什么,有什么用,如何实现分布式锁