1. 简历指导-咕泡
时间
2023.2.9
问题点
要咬字清晰
要少说 ‘呃’
要少说‘就’
要自信点,专业点
要少醒鼻子
心得
很多问题停留在表层,追问就不行了
八股没背,只会简单表述
很久没交流了,交流生疏,吞吐
问题
----- 以下答案不再更新(考虑删除),统一在面试宝典中更新
服务之间是如何调用的?
rest api形式下http的一个feign调用
rpc、grpc、消息队列等方式进行调用。
消息推送给oa为什么不直接推送,而是走kafka?
通过异步处理提高系统性能(减少响应所需时间)
削峰/限流
降低系统耦合性
线上的消息堵塞怎么去排查?
检查系统状态或者消息队列的状态是否正常,以及看日志是否有异常等等。
怎么解决消息堵塞?
目的是为了保证消息队列的流通,可以采用限制发送速度、增加消费速度、优化发送代码、异步、消息队列扩容等方式。
怎么去提高消息队列消费的上限?
加机器,加内存,加线程数
增加代码的消费能力
哪里用到了redis?
分布式锁,用户token,以及一些热点数据
项目上怎么用的分布式锁,原理是什么?
主要使用 Redisson 去实现的,Redisson的底层逻辑是基于 lua 脚本去实现的;
如果是第一次加锁,就会在 key 对应的 hash结构中添加一个 UUID:线程标识和1,代表了该线程对这个 key加锁了一次;
并且key的过期时间默认为30秒,如果启用了 watchdog机制,就会在后台启用一个线程,该线程会去执行一个定时任务,每10秒检查一次,如果key存在,就重置key的生存时间为30秒;
并且 Redisson 也实现了可重入锁的机制,当再次加锁,会对key对应的value加1,当value为0或者宕机,锁就会释放。
分布式锁的几种实现方式?
数据库:
悲观锁:select .... for update
CSA机制:共享和交换
jdk自带的并发包:如concurrentHashMap
Redisson:
手动加锁:(一致性问题:原子性,锁过期,释放到其他线程的锁,lua脚本保证原子性)
使用 redLock:解决主从不一致问题:多节点选举,多数票通过
Zookeeper框架
获取锁:生成临时节点,如果在第一位就获取锁,不在就监听前面一位
释放锁:调用删除指令,如果意外终止,Zookeeper会释放连接断开的锁。
为什么说redis性能高?
完全基于内存
专门的数据结构
采用单线程
采用多路I/O复用模型
接口性能怎么提升?
java层:代码优化
数据库层:
分库分表
数据库分区存储
表设计优化
数据量优化
sql优化
索引优化
需求层:需求是否合理
spring主要作用?(谈谈你对spring的理解)
spring是一款轻量级的开源框架,为了解决开发的复杂性而建立的,拥有一系列的产品,比如 jdbc框架、web框架等等。
Spring核心容器的主要组件是Bean工厂(BeanFactory),Bean工厂使用控制反转模式来降低程序代码之间的耦合度,依赖注入到对象而不是创建或寻找依赖对象,并提供面向切面编程的实现。
spring核心的两个东西是 AOP 和 IOC
Spring IOC
IOC控制反转,是指创建对象的控制权被反转到Spring框架上,而不是由用户new一个对象;
然后 IOC 主要的实现方法是依赖注入(DI),,把依赖注入到对象而不是创建或寻找依赖对象;
对于IOC来说最重要的就是容器,容器管理着Bean的生命周期,控制着Bean的依赖注入。
容器的话主要有两个,BeanFactory和ApplicationContext,他们简单区别就是:BeanFactory是低级容器,延迟加载bean,编程时方式创建;ApplicationContext是 BeanFactory 的子接口,是高级容器,一次性加载bean,以声明式方式创建
Spring AOP
aop用于对代码的一个增强,或者定义一些核心的功能,比如日志管理和事务管理
主要实现方式是代理模式
通过哪些方式可以将对象交给spring(IOC)去管理?
xml
mysql为什么要用不同的隔离级别?
由于锁竞争的存在,隔离级别越高,性能越差
默认是rr,是innoDB 用 mvcc实现的,有些公司会将隔离级别改成rc
mvcc多版本并发控制详解(了解 lvcc 和 mvcc吗?)
mvcc是 InnoDB 实现隔离级别的一种方式,用于处理并发下的读写冲突,发生冲突也可以做到读不加锁。mvcc主要是通过快照读的形式对 RC 和 RR的做一个隔离级别的实现。
实现原理:
通过Read View+ Undo Log 实现,undoLog存储所有历史快照信息,通过回滚指针把所有快照连接起来;Read View可见性规则,通过一些可见性id的字段,帮助判断当前版本的数据是否可见。
同一事务内,RC隔离级别下每次都会读取最新的快照信息,RR读取第一次查询语句的历史快照信息。
参考链接:InnoDB存储引擎对MVCC的实现
#23届找工作求助阵地##你觉得今年春招回暖了吗#