2024届_风渐
技术栈测试
1、学Java看的哪个资料:黑马全套,Javase,Javaweb, 苍穹外卖,springboot, springclound2024
- 重载,重写,泛型懂吗?懂得
-
Java集合这块学过了吗?学过
- HashMap源码,JVM,JUC是否看过:HashMap看过,其他两个没看过
2、数据结构与算法看的哪个资料:
- 链表,栈,队列,二叉树能自己手写吗:突击几天可以手写
- AVL树,红黑树,线段树学过吗:AVL,红黑树学过。线段树没学过,第一次听说
- 冒泡,快速,归并排序能手写吗:冒泡快速复习一下可以手写。归并没手写过,要学一下。
- 递归,二分,贪心,回溯,动规,枚举这几种算法学过哪几种:学过递归。其他都都没学过。
- LeetCode 大概刷了多少题:5-6道题。没注重算法。
3、框架与中间件
- servlet,cookie,session学过吗:servlet没学过。其他两个学过
- SSM学过了吗:原始SSM没学,直接学的黑马那套SrpingBoot整合版
- redis 学过吗:学过
- SpringBoot项目做过几个:2个
4、MySQL看的哪些资料:
- sql 熟练吗:一般。
- 索引底层原理懂吗:懂。
5、计算机基础
- 计算机网络看什么资料:学过忘了,掌握一般。
- 操作系统看什么资料:学过忘了,掌握一般。
- 计算机组成原来看的什么资料:学过忘了,掌握一般。
学习规划(2024.6.11)
一些链接入口
课程大纲: 所有课程大纲入口
你的大致情况分析与规划
首先,我们先花几天的时间复习下项目,然后就开始投递,由于时间有限,我们复习的内容主要围绕 八股文 + 项目,而八股文也特别多,我们主要复习下 框架 +Java体系 + redis + mysql + 核心计算机基础,考虑到你即将毕业,所以你需要一边面试一边复习。
目标:一个月内成功上岸。
具体安排(第一阶段)
现在主要以八股文+项目 主,不过项目的背后,其实考察的还是八股文,第一阶段先快速突击下核心考点,具体安排如下:
项目:针对你的简历情况,你的项目需要补充如下知识:
1、掌握一些测压工具,因为你简历里说过速度提升10倍,面试官可能会问你是怎么测试的,所以你要会测,这快你自己搜索一下资料吧。
2、其他的,按照这个模式来复习:项目复习到什么程度?,时间有限,你需要先掌握,你说的内容,自己知道是怎么实现的,你先掌握这个。
2、八股文:八股文太多了,你学不了那么多,直接跟着 八股文高频题库(必看) 刷,不过对于你有一下说明:重点学习这几个。
Java基础:就Java常见概念,看高频题Java基础部分
Java集合:重点了解下 hashmap +arraylist和lingkedlist区别就行
spring+mybatis:小公司会问这个,主要问一下实操。
mysql:重点看下索引+事务基本几个要素就行
redis:看那几个标星高的就行
MQ:看通用的那些就行
以上一般一周可以拿下。基本中小厂,这个高频题就可以搞定的了。
3、八股文复习:之后按 面试突击专题学习指南(必看) 进行第二轮复习,这个时候你已经能够应付挺多八股文了,后面有时间了,再来系统学习其他一些东西 吧。
学习顺序
先自己熟悉下项目,完成最低要求,然后复习下八股文,几天后就可以投递了,投递的时候,也要限定地区,都可以面,然后投递的时候,按照我说的方式投递。
先给你安排这么多,然后记得来每周打卡学习进度哈,也可以星球每天打卡哦,我会看的,比如像他们这样:23与22届做的比较好的成员示例,你也可以每天打卡或者星球打卡吧,我会看的
有什么问题记得随时私聊帅地
每周学习进度(每周日晚更新打卡)
1.对象的存储结构:
对象是由markword(8字节),classpointer(4字节),instance data,padding组成。字节大小是8的倍数,默认开启指针压缩,classpointer-类指针和oop-普通对象指针,由8字节压缩成4字节
2.理解了sychro底层原理,实现过程。
在字节码层面,多了monnitorentry和monnitorexit;
在执行过程中,锁的升级;
在最底层是由lock cmpxchg实现。加锁的对象的对象头里存储的是锁信息。
实现过程是先给对象上一个偏向锁,当有第二个线程竞争则会升级为自旋锁,当竞争继续增加或自旋到一定程度会升级为重量级锁,由OS调度。
3.理解了CAS底层实现。比较和交换,会出现ABA和原子性问题。ABA用版本号解决,原子性问题用lock cmpxchg解决,这个命令会在线程修改值时锁住总线,保证原子性。
4.理解了ThreadLocal内存泄漏的原理。线程池分配线程,该线程指定一个entry对象,当这个线程任务完成后会回收进线程池里,但entry是被强引用的,无法自动回收,相当于存在一个未释放的又用不到的内存,解决方法是调用ThreadLoacal.remove()方法。
5.理解了为什么用MQ。MQ有三个优点:解耦,异步,削峰。当用一个服务需要调用好几个服务的场景,又难以维护,可以用MQ。当一个服务调用好几个服务对数据库的操作是同步的,可以用MQ的异步处理。当一段时间有大量请求,可以有MQ削峰处理。
6.学习了三次握手和四次挥手,为什么这样做。
三次握手的目的:1.确保cs两端接受和发送功能正常2.依靠初始化序列号为后面的发送做可靠性准备。
7.如何实现单点登录?
用户登录成功后服务端给浏览器一个令牌,下次调用其他服务时拦截器或者过滤器会拦截请求,解析令牌,如果没有令牌或者令牌错误则返回登录界面,令牌成功解析后将用户信息存到threadlocal里,方便后续服务调用。
8.业务幂等性处理。支付模块通过MQ向交易模块发送已支付消息,如果MQ发送消息后没收到交易服务的ack结果,就将消息再次入队重试。恰好此时用户突然点击退款,是在交易服务内部执行,会更快一些,将订单改为退款中。而重试的已支付的消息随后到来,就覆盖掉了退款状态。此时就要做幂等处理。第一种方法就是用唯一id,消息转换器自带创建id并附加在请求头上,将id存入数据库,当重复消息到来时查询数据库,如果已经有相同id,则丢掉该消息。第二种方法就是人为对业务逻辑进行判断,在标记订单为已支付之前,判断一下订单是否是未支付状态,如果不是则不执行,如果是则修改为已支付。
9.Valatile防止指令重排序的源码层级,字节码层级,JVM层级,Hotpot层级实现。源码在变量上加了volatile,字节码对其做了标记ACC_VOLATILE,JVM规范是在其上下加了Load,Store屏障防止指令重排序,Hotpot规范底层是调用lock addl指令。CPU层次的MESI缓存一致性保证了线程可见性,lock总线锁
10.
11.Redis如何实现持久化?
RDB方式。主进程先fork子进程,子进程会创建一个临时的RDB文件,将按照一定的时间间隔将共享内存数据以二进制形式写到临时文件,将redis所有数据都写到里面之后会覆盖本地的RDB文件。优点是性能高和文件紧凑,因为是基于二进制实现的。缺点是可能丢失数据。在下次备份之前如果出现宕机,会导致当前内存数据全部丢失,没来得及备份。
AOF方式。Redis在处理写命令是先写在AOF缓冲区里面,再刷新到AOF日志文件里面。AOF文件提供了日志重写瘦身功能,比如K1 set了三次,1,2,3,AOF会直接存储最后一次3这个值的set命令。优点是数据更可靠,可以回放过去所有写操作。缺点是文件大,回复速度慢。