美团暑期后端一面

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

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

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

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

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

请大佬帮忙解答一下

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

相关推荐

03-20 15:25
武汉大学 后端
分享面经,积攒好运🙏自我介绍实习过吗?实习多久?布隆过滤器有什么好处?为什么短链接不能生成重复?布隆过滤器是单机部署的吗?分布式情况下布隆过滤器会有问题吗?为什么mq能提升接口吞吐量?你觉得什么东西应该被异步处理?怎么保证数据的一致性?就是消息不丢失,不重复消费?分表的分片键是什么?我想做一个报表一键导出所有统计信息,怎么做?缓存击穿,穿透,雪崩?短链生成算法是什么?为什么不用zookeeper用etcd?kyro序列化器有什么好处?为什么不用protobuf?为什么http头部太大会影响传输性能?一致性哈希怎么解决数据倾斜问题?实习了一个月,有什么感受?学习、实习、生活中有没有遇到什么有挑战的事情?本科为什么没实习过?Linux怎么看cpu占用率?介绍一下Java中的GC?为什么视频会议用udp?tcp怎么建立连接的?https介绍一下?arraylist可以用for循环从第一个元素开始逐个删除元素吗?hashmap是线程安全的吗?MySQL里面怎么看一条sql的执行过程?你建索引的时候有没有一套自己的规范?我有三个常用查询字段,用户id,性别,城市,你会怎么建立索引?redis的zset了解吗?底层是什么原理?跳表介绍一下?手撕:82. 删除排序链表中的重复元素 II平常看什么书?让你学一个新技术,你会怎么学?大模型了解吗?你觉得你哪些部分需要提升?
点赞 评论 收藏
分享
评论
8
87
分享

创作者周榜

更多
牛客网
牛客企业服务