数字马力一面

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

因为我的项目用了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 江苏

相关推荐

04-17 15:05
已编辑
南京师范大学 Java
#暑期实习# #日常实习# 1. 项目中的难点是什么?2. 高精度视频为什么要把播放记录存在缓存里?频繁访问redis性能会不会也有问题?是读操作多还是写操作多3. 数据库与缓存的一致性问题,如果删除缓存时发生了异常,怎么办?4. 用消息队列解决,根据什么从消息队列里把它去掉?5. redis用的比较多,聊聊 (作用,数据结构,持久化,分布式锁,内存淘汰策略,删除策略,缓存三兄弟,线程模型)6. redis里的I/O多路复用详细再说说7. 缓存穿透、缓存击穿的解决方法8. 缓存穿透会引发什么问题?9. rpc项目的背景,功能10. 一次rpc调用会经历哪些过程?(代理,编解码,网络通信,熔断降级等等)11. 服务端怎么知道客户端调用了什么方法?(编码规则?)12. java怎么保证并发安全(synchronized,lock,原子类这些)13. 讲讲lock接口怎么实现的(CAS+AQS)14. CAS是干什么的?15. CAS为什么要判断内存里的值与旧值是否相等,举个例子16. CAS能保证线程安全吗17. ThreadLocal了解吗18. ThreadLocal的内存泄露如何产生的19. ThreadLocal为什么ThreadLocalMap中key是弱引用,value是强引用20. 聊聊数据库(索引,事务,锁,三大日志,主从复制,性能调优)21. 聊聊JVM(JVM内存构成,垃圾回收器,垃圾回收算法)22. 怎么判定这个这个对象是垃圾23. 哪些可以作为GC-root24. 最有成就感的事(项目结合AI)25. 对大模型有哪些了解(prompt,function-call,Rag)
饿了么一面115人在聊 查看50道真题和解析
点赞 评论 收藏
分享
04-25 16:04
已编辑
深圳大学 Java
一面1. 为什么从腾讯离职2. 问实习做的模块本人的职责3. 问实习经历写的SQL优化,有没有考虑别的方案4. 联合索引在匹配的时候要考虑什么,答最左前缀法则和索引跳跃扫描5. 数据量变成原来十倍怎么办6. 有没有用过ES7. 怎么利用Redisson解决重复调度8. 了解过看门狗机制吗9. 如果续锁失败怎么办10. 校园经历的技术社团的职务干了什么11. 团队成员技术方案不一致怎么处理12. 反问,业务:基础平台中台,也有下沉的业务需求包括知识分享和直播;转正机会:往年60%,不区分日常和暑期,有三到四面;对实习生有什么期待,觉得煮波能胜任嘻嘻—————————分割线—————————二面1. 问实习做的定时任务,有一块没讲明白2. 线程池参数3. 怎么配置线程数4. 为什么CPU密集用多进程,IO密集用多线程,面试官给我解释说CPU密集也可以用多线程,多进程是为了防止任务崩溃影响其他任务,后来搜了一下原来是Python有GIL,多线程利用不了多核CPU,Java还是可以的5. 有没有听说过英特尔宣传自己是几核几线程,是什么意思,没听过(乐6. 你看看自己电脑是多少核,真的有这么多核吗,我说12个,细想难道利用了什么虚拟化技术让我们用起来比真的核数要多吗(悬疑7. 那你讲下什么叫虚拟化,讲了下虚拟机和Docker8. 你们这个特色班有什么特色9. 有没有用过AI辅助编程,有的兄弟有的10. 反问,业务,有什么建议:补好操作系统基础(太搞了
查看40道真题和解析
点赞 评论 收藏
分享
评论
6
38
分享

创作者周榜

更多
牛客网
牛客企业服务