Shopee后端一面

1.项目中mysql和redis一致性保障是怎么做的?我简历上写的是先更新数据库,后

RocketMQ删redis缓存。然后追问,如果写好Mysql了,但是消息没发出去怎么办。我回答MQ会有ack,生产者没收到回传的ack就重试/抛异常统一处理,或者事物消息。消费者那边mg有重试机制,重试多次未成功就进死信队列,或者落库后续人工处理。

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方法。

三个月没看八股和项目了。感觉面的挺差的,很多都没答上来,就凭感觉讲的思路。LRU是撕出来了。当晚约二面了。

全部评论

相关推荐

怎么我还不通知啊也不知道是不是进下个流程了
投递深圳虾皮信息科技有限公司等公司10个岗位
点赞 评论 收藏
分享
09-02 11:14
已编辑
四川大学 Java
吴offer选手:这种面试是最烦的,学不到东西,然后还被挂的莫名其妙。之前看到一种说法是面试官如果不想要你了,就会问一些很简单的问题,防止你举报他
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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