数字马力一面

面试官一上来让我做自己介绍,然后开始问项目,基本都不是简单地问八股,都是融合场景问的,一环扣一环。说是让我顺序介绍项目,但我刚讲完第一个项目,就把这个项目一直问到结束。

因为我的项目用了ElasticSearch,就先让我说一下我是怎么用ElasticSearch的。介绍完之后,看我有用RabbitMQ去更新ElasticSearch,就开始问我RabbitMQ以及业务场景题,比如说现在消息队列里有这么些消息,更新A,更新B,更新C。如何确保在并发的情况下是先更新A再更新B的(假如说B先到了消息队列里面,A因为某些原因慢到了),我一开始想的是直接给消息编号,然后与数据库里的编号比较,如果比它大,说明这个消息的执行优先级是比较后的(不断轮询直到能执行为止)。面试官对这个答案有点不满意,说ElasticSearch里有能实现这个效果的功能(我对ElasticSearch理解还真不多)。事后我查了一下,这个也是RabbitMQ常问的点,就是消息顺序性问题,但是我确实没记住,一般来说就是一个 queue但是对应一个 consumer,然后这个 consumer内部用内存队列做排队,然后分发给底层不同的 worker 来处理。

之后问题就转到RabbitMQ了,问死信队列,延迟队列,由于我很久没看RabbitMQ的知识点,连延迟队列怎么实现的都忘了,然后就疯狂拷打。紧接着又问延迟队列的应用场景(支付订单的倒计时界面),以及还有没有其他可以实现延迟队列的方法,我说redis应该也可以。

提到接着话题顺势到了我的分布式锁,因为我的分布式锁是由Redisson实现的,那么Redisson也是有延迟队列的但是我不知道,他问我redis如何实现延迟队列,我说轮询+检测过期时间,感觉面试官有点被逗笑了,就说Redisson就有延迟队列。说我对所用的中间件或者框架都是只知道个大概,有顺着分布式锁问分布式锁如何续约(Redisson自己有个续约机制),以及还有什么可以做分布式锁(我答数据库),接着问我是项目里怎么上分布式锁。我说是写了两个注解,用AOP来调用Redisson处理,接着又问我注解怎么写的,我说有Lock和Key两个注解,Lock就是对方法上锁,Key就是提供上锁的参数。它又说我的锁的颗粒度有点大了,锁的是整个方法,突然问我知道SpEL吗。我说知道一丢丢,因为我的Key就是这么写的(expr = "#{userId + '::' + bookId}"),顺着又往下问,说你没用过Mybatis吗,用过Mybatis的话SpEL怎么只会一点点。我说我都用basemapper的,很少手写xml了。

中间还问了我xxljob的优点什么什么的,这里不展开说了。

扯了一大堆最后问我SpringBoot相关的,问我经常用什么注解,知道三级缓存(循环依赖)不,这部分我总算能答上来了,自此面试结束。我能回忆起来的点我基本都说了,面试官人还是挺好的,就是问的太有针对性了,我一个小菜鸡还真招架不住,他一直和我说使用技术前要对技术进行调研,不能浅尝辄止,并且不要死背八股文,要懂得结合应用场景阐述你对这个技术的理解。虽然感觉一面要凉了,不过收获还是挺多的。

#24届软开秋招面试经验大赏#

#24届软开秋招面试经验大赏#
全部评论
9爷别来抢鼠鼠的offer了
1 回复 分享
发布于 2023-10-20 22:00 湖南
复试了嘛
点赞 回复 分享
发布于 2023-10-20 20:14 湖南
可能是同一位面试官了,也给我说了不要只背八股,多去理解和用
点赞 回复 分享
发布于 2023-10-20 19:43 江苏

相关推荐

07-24 09:51
已编辑
The University of Warwick 后端
0java有哪些集合,讲讲底层实现1hashmap的源码有看过吗,hashmap的put方法有哪些流程,扩容为什么是二倍而不是一或三倍2hashset为什么要重写hashcode和equals方法,如果不重写会出现什么问题3juc包下用过哪些类,说下reentrantlock的底层实现原理4线程池有没有用过,说下核心参数,tomcat线程池有了解过吗5volatile的原理是什么,可以单用volatile可以实现线程安全的逻辑吗6mysql的事务隔离级别,read view在第二第三级别的生成时机是一样的吗7索引失效的情况,用or会导致索引失效8输入一条select语句mysql的流程是什么样的,优化器了解吗9有实习过吗,说一下常用的redis的数据结构,说一下string的底层实现,sds相比于c的字符串有什么特点,创建或者释放的时候sds比c有什么优点10hash的扩容是怎么做的11redis的内存的淘汰策略12redis为什么这么快,redis6.0后面是多线程的,你有了解过13数据库和缓存一致性的问题有没有解决过,还有什么其他的解决方案吗14说下spring的ioc15jwt如何生成解析和刷新的,存在缓存对吧,考虑过token过期和篡改的问题吗16怎么解决的session的共享问题的17线程池参数是怎么配置的,任务的提交速率是什么样的,怎么避免线程池资源耗尽或者任务堆积,说一下四种限流算法,说一下每个的优缺点和适用常用场景,如果你选一个用到你的项目你会使用哪种18最长回文子串,先讲思路然后本地ide测试反问建议:面试官建议我再多看看底层,评价总体还是非常不错的当天约二面
查看19道真题和解析
点赞 评论 收藏
分享
评论
6
38
分享

创作者周榜

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