shopee后端一面

1.项目中mysql和redis一致性保障是怎么做的?我简历上写的是先更新数据库,后RocketMQ删redis缓存。然后追问,如果写好Mysql了,但是消息没发出去怎么办。我回答MQ会有ack,生产者没收到回传的ack就重试/抛异常统一处理,或者事物消息。消费者那边mq有重试机制,重试多次未成功就进死信队列,或者落库后续人工处理。
2.Mysql的隔离机制是什么?回答RR,问RR有什么问题吗?我说有可能幻读,快照读通过MVCC机制解决,当前读通过临键锁。他追问我的项目是怎么选择隔离机制的呢?我说因为Mysql默认就那样,不过我的电商系统,用RR可能更好,如果RC有可能出现数据不一致的情况。
3.有没有了解过读写锁?适用于什么情况?我说读读不互斥,读写,写写互斥,一般用在读多写少的场景。追问1微秒临界区,读写比例10:1,该不该用读写锁?(完全不会,最后提问问他,面试官和我说想考查我有没有看过读写锁实现底层,问了ai,也各个说法不一,有无大佬会这个的)
4.项目用的websocket长连接,服务端如果发现一个客户端连接qps特别高,疑似被攻击,服务端想要断开连接,这时候该怎么做?这个我也不是很会,我说的是像tcp那种发个消息给客户端(就是瞎说的),他好像不太满意,就说他换个说法:如果直接关闭会有什么问题?(完全不知道,查了以后感觉有可能是没发断开连接的原因,客户端会无限重连)
5.concurrenthashmap,底层怎么实现的?说了数组 + 链表 + 红黑树 用 CAS + synchronized实现,synchronized是什么锁?主要让我答可重入,为什么要可重入?我没回答太好,我说的是递归的时候不会死锁。(查了以后感觉是不一定是递归,有可能这个线程会调用其他加锁的方法)
6.算法:LRU,acm模式,自己写main方法。
#秋招笔面试记录#
全部评论
菜鸡学习了,祝佬顺利offer
1 回复 分享
发布于 08-11 15:20 江苏
读写锁本身的开销比互斥锁大。临界区时间越短,锁本身的开销占业务总时长就越多,就要考虑锁本身的开销带来的影响。临界区时间越长,这种自身的开销影响可以忽略,就要考虑锁的功能特性带来的影响了。
点赞 回复 分享
发布于 08-08 16:35 安徽
佬,结果怎么样呀
点赞 回复 分享
发布于 08-07 10:38 浙江

相关推荐

评论
3
21
分享

创作者周榜

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