美团暑期后端一面

常规八股就不说了,印象深刻的几个问题:

(hmdp)分布式锁超时释放导致误删的情况,说明同一时刻有不止一个线程去执行同一段代码,锁并没有锁住,这种情况怎么考虑

缓存和数据库操作一个成功一个失败怎么办(我说加事务,又问使用事务可能会导致较长的等待和性能开销怎么解决)

为什么java能实现反射机制,别的语言不行?

联合索引最左匹配原则这样设计的意义在哪?

请大佬帮忙解答一下

3.21:已挂,但是很奇怪的是两个月之前投的一个日常给我捞起来了
全部评论
第二题的话其实就是在考你的业务敏感度。 不是所有的业务对一致性要求都这么高。因此这个是需要分类讨论的。 如果就是要求强一致性,那就开事务。 但是大多数加缓存的场景其实对于数据一致性的要求是没有这么高的。在这种情况下我们更加倾向于数据库变更之后投递消息到mq,由mq进行写缓存的操作,并且开启重试机制,最多重试三次(避免消费堆积)。当三次消费失败之后,要么抛异常发告警让对应的后端人员自己手动往缓存中补偿一下,要么投递到死信队列,晚上或者服务低谷的时候统一进行重试。最后开一个BCP业务校验系统来确保mysql和缓存的最终一致性。
4 回复 分享
发布于 2025-03-21 02:45 陕西
为什么java能实现反射机制,别的语言不行? 主要还是因为java会先编译为字节码这个原因吧, 这样反射才能从字节码中反读取类元素信息.
3 回复 分享
发布于 2025-03-21 09:28 福建
最后一题感觉可以从B+树中的联合索引存储来思考 比如(a,b,c)a在B+树中是全局有序的,b和c只能是在某一个a中局部有序,而全局是无序的,所以没有使用a的话b或c就无法依照顺序性快速定位到某个区间,只能进行全表扫描,所以原则上是使用时要有a的
3 回复 分享
发布于 2025-03-21 00:25 辽宁
第二个数据库和缓存这个,为了保证同时成功或者失败的这个,我觉得可以先更新数据库,然后再用mq发消息让消费者去做这个缓存的更新,因为mq有失败重试的机制,可以多次重试的去构建缓存
3 回复 分享
发布于 2025-03-20 22:50 天津
第一题:假设有一个线程插入数据库阻塞了,锁到达了指定的时间7s。锁被自动释放了,第二个线程过来了可以获取锁,但是这时候突然第一个线程醒了,他就把第二个线程的锁给释放了。解决方案就是在value结构加一个线程id。
1 回复 分享
发布于 2025-03-20 22:56 广东
老哥hmdp这个问题该怎么答啊
1 回复 分享
发布于 2025-03-20 18:09 重庆
蹲后续Orz
点赞 回复 分享
发布于 2025-04-20 15:17 天津

相关推荐

2025-12-08 09:20
门头沟学院 Java
1.项目介绍2.分布式系统中的幂等性问题在设计一个电商系统的订单支付接口时,如何保证幂等性,防止重复支付?3.消息队列的消息积压处理若Kafka消息队列出现大量消息积压,你会从哪些方面排查原因?请详细说明对应的解决方案。4.微服务接口的熔断降级设计在基于SpringCloud的微服务架构中,如何设计一个依赖外部第三方服务的接口的熔断降级策略,确保系统高可用?5.Redis 缓存雪崩应对当Redis缓存发生雪崩:导致大量请求直接打到数据库,如何快速恢复系统并预防此类问题再次发生?6.数据库分库分表后的事务处理在电商系统数据库分库分表后,跨库的订单创建与库存扣减操作,怎样保证事务的一致性?7.JVM垃圾回收器的选择与调优针对不同的业务场景,如何选择合适的JVM垃圾回收器?8.高并发下的接口限流实现在秒杀活动场景中,如何基于Guava的 RateLimiter或Sentinel实现接口限流,避免系统被流量击垮?9.Java线程池的动态调整在一个实时日志处理系统中,如何根据任务队列长度和系统负载动态调整线程池的核心线程数与最大线程数?10.Spring Boot 应用的启动性能优化对于一个包含大量自动配置和第三方依赖的SpringBoot应用,怎样优化其启动时间?11.分布式系统中的全局唯一ID生成在分布式订单系统中,如何设计一个高效且全局唯一的订单 ID生成方案?12.JVM内存碎片的分析与解决当Java应用频繁出现FullGC且存在内存碎片问题,如何利用工具定位并解决?13.分布式锁的性能优化使用Redis实现分布式锁时,如何提高锁的获取和释放效率,减少线程等待时间?14.MySQL慢查询优化实战在项目中发现一条执行缓慢的SOL语句,你会通过哪些步骤和方法进行优化?15.Spring事务失效场景分析在Spring项目中,哪些情况会导致事务注解@Transactional失效?如何排查和解决?16.Kafka消息重复消费处理在使用Kafka作为消息队列时,若出现消息重复消费该如何设计解决方案?17.分布式系统中的服务注册与发现基于Nacos实现服务注册与发现,如何保证服务实例的健康检查准确性和高可用性?18.Java对象的序列化与反序列化在分布式RPC调用中,为什么需要对象序列化?常见的序列化框架有哪些,如何选择?19.数据库读写分离的实现与问题在电商系统中实现MySOL读写分离后,可能会遇到哪些数据一致性问题?如何解决?
查看18道真题和解析
点赞 评论 收藏
分享
评论
8
108
分享

创作者周榜

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