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

@Bean 注解

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届找工作求助阵地##你觉得今年春招回暖了吗#
全部评论
简历信息有限,需要提供更多教育背景、工作经历、项目经历、职业技能和获奖经历。简历和目标岗位的匹配度还有提升空间,过往经历等模块还需优化。 点击获取免费简历点评哦! https://www.nowcoder.com/link/re-comment?serialNo=437c1e34b3764430b25bbe249215c344
点赞 回复 分享
发布于 2023-11-17 02:39 北京

相关推荐

04-29 18:07
常州大学 Java
寂静羽翼:兄弟我已经亲身经历了,双非没实习很多大厂还是会给笔试的,可是有的公司笔试做的好也不给面一直卡着,ssob基本看我没实习都拒绝我了,但是每天投满偶尔也能有一两场初创公司的面试,但是薪资基本在五六千
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
24
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务