20230814:快手三面

  1. 自我介绍
  2. 职业规划
  3. 硕士研究方向
  4. 项目中两个技术亮点
  5. 消息推送平台发送消息时的责任链模式
  6. 购物系统添加商品时使用MQ保证数据库与es分布式事务的数据一致性
  7. 深挖项目(我觉得应该叫深度拓展项目,下面这些东西我全部没有实现!!!)
  8. 项目一
  9. 😀你项目中上架商品的逻辑是使用延时MQ保证数据一致性,例如上架商品后,往es里面存放商品数据,这样用户就能查询到商品,同时往延时队列中发送一条消息,这个消息包含了商品id,之后再修改数据库中该商品状态为已上架,延时队列到期后,你拿着商品id去查商品表,如果商品是未上架的,就说明商品在修改数据库时发生了异常,但此时es中有商品数据了,所以要删除es中这条记录,但如果拿着商品id去查数据库时网络超时怎么办?我回答的是使用手动ack MQ的机制,因为如果网络超时,会抛出异常,而我只有当查询完商品信息之后才会手动ack,发生异常后手动ack并不会触发,因此消息还在,只要下次能消费就行。
  10. 😀面试官问那这条消息没有手动ack后是在队头还是队尾,我回答的队头。
  11. 😀面试官说那这样可能会导致消息阻塞的问题,因为这条消息在查询数据库时超时了,下一次消息后查询可能也会超时,那怎么办?我回答可以采取一个兜底处理,比如如果超时,那么把这条消息放到一个异常队列当中,并手动ack原队列,这样就不会阻塞原队列中后续消息的消费了,后续我只需要开一些consumer来消费异常队列中的消息就行了
  12. 😀面试官继续追问,那如果消息消费的时候有顺序性怎么办,比如有三条消息A,B,C,他们依次进入队列,业务逻辑上也必须先消费A,再B,再C,你上面的解决方案就会导致顺序性失效,这时候怎么办?我回答既然有顺序性,那么就说明这些消息是原子性的操作,要么全部成功,要么全部失败,因此在发送这些有顺序性的消息的时候就可以把这些消息包装成一个大消息,然后作为一个单个消息消费就行了
  13. 😀面试官继续追问,那如果事先不知道后续的消息呢,这样就没法事先封装一个大消息了,比如一个用户刷视频,他刷完A,然后刷B,然后刷C,但我这个B,C是通过推荐系统在刷完A后实时计算出来的,这个时候怎么保证MQ的顺序性。我回答借鉴spring三级缓存的思想,把A和推荐算法也封装为一个大Message(这个真不会了)。面试官后面提示能不能用刚性的方法来解决呢?我开始回答Seata分布式事务,但是Seata没复习啥也不会,菜哭了
  14. 项目二
  15. 😀在消息推送平台中,如果有这么一个需求,比如快手用户在刷视频时浏览了某个商品,然后这个时候我想给用户发送一个优惠券,这个消息怎么推送给用户呢?我回答既然用户在刷视频,那么他肯定和服务器建立了TCP连接,那其实可以在刷下一次视频的时候,服务器返回用户请求时把优惠券的消息也发给用户就行了
  16. 😀面试官追问,那你这样只能在用户刷下一个视频后才能发送优惠券,能不能直接给用户发优惠券呢?而且你的解决方案还有一个问题,比如我用户下一次确实是刷视频,这个时候服务器会给用户发优惠券,但是我用户在发送完刷视频的请求后又跳到其他界面了,比如用户详情,这样你的上一个请求还没有响应回来就被打断,用户就没法收到优惠券了,这个怎么解决?我回答的是可以找用户行为的共性,比如刷视频、查看用户详情、评论这些操作的共性是用户登录了,那么只要在判断用户是否登录时顺带返回优惠券信息就行了,这样不管用户下一次操作是什么都能收到优惠券
  17. 😀面试官继续追问,你的解决方案都是必须用户发送请求给服务器,服务器才能返回优惠券,服务器能不能主动推给用户呢?我回答可能可以,但是要解决内网穿透问题,因为客户端没有唯一ip(这里真不会,不知道服务器怎么直接推消息给服务器)
  18. 😀面试官问用户和快手服务器是长连接还是短链接,我回答长连接(不会)
  19. 😀面试官问,那所有用户都是长连接,那我服务器压力不是很大吗,这么多连接,我回答有保活机制,如果长时间没有传输数据会自动断开连接
  20. 😀一台普通服务器最大可以有多少连接
  21. 场景题
  22. 公司有一个任务调度系统,里面存有很多定时任务,这些任务到了一定时间就要执行,比如每隔5秒执行A,每隔8秒执行B等等
  23. 已知这个调度系统有百万级别的任务数,这些任务的时间间隔不尽相同,有很多人可以调用这个任务调度系统,往里面添加定时任务或者对定时任务进行删除修改操作,怎么实现在秒级精度的触发。请你设计一下这个系统中任务怎么存,怎么唤醒
  24. 我回答用很多消息队列,比如一个小时的消息队列,一秒钟对应一个消息队列,这样一小时有3600个消息队列,当任务到时后,可以计算当前时间与1970年时间的差值,这样就可以计算出他落在3600个队列中的哪一个,然后每个队列绑定消费者就行了(这个我不会,把面试官菜哭了)

------------------------------------------------------------------------------------------------------------------------------------

深度拷打我的项目,把面试官菜哭了😭😭😭

大佬们帮我解答几个问题吧:5ai,5aii,5aiii,5bi

#快手#
全部评论
😀😀😀推广一下一个快手师兄的内推链接,流程贼快!!!😀😀😀🔥【快手 秋招】 内推链接(不需要填写内推码):https://campus.kuaishou.cn/#/campus/jobs?code=xJNsclMiG 无限复活甲!!一直投一直冲 咨询找云澜师兄啊 ***********r
4 回复 分享
发布于 2023-08-15 22:45 陕西
我是 5ai
2 回复 分享
发布于 2023-08-14 23:16 陕西
我是 5aii
2 回复 分享
发布于 2023-08-14 23:16 陕西
我是 5bi
2 回复 分享
发布于 2023-08-14 23:18 陕西
我是 6
2 回复 分享
发布于 2023-08-14 23:18 陕西
我是 5aiii
1 回复 分享
发布于 2023-08-14 23:17 陕西
我是 5aiv
1 回复 分享
发布于 2023-08-14 23:18 陕西
好难
点赞 回复 分享
发布于 2023-08-15 09:17 上海
二三面隔了好久哇,将近两周
点赞 回复 分享
发布于 2023-08-15 11:13 浙江
大佬这是啥项目
点赞 回复 分享
发布于 2023-08-15 12:15 广东
大佬哪个部门
点赞 回复 分享
发布于 2023-08-15 12:27 湖北
好难啊
点赞 回复 分享
发布于 2023-08-15 19:12 广东
谢谢楼主分享
点赞 回复 分享
发布于 2023-08-15 20:30 香港
谢谢楼主分享
点赞 回复 分享
发布于 2023-08-15 21:25 广东
谢谢楼主分享 等我面完最近的一些面试写一下
点赞 回复 分享
发布于 2023-08-16 12:44 浙江
如果您的第一志愿是华为终端BG软件部,base 北京,欢迎私聊
点赞 回复 分享
发布于 2023-08-16 21:31 贵州
还没拿到offer的同学 可以看一下。 【阿里F24秋招】-淘天集团-自营技术部门】 https://www.nowcoder.com/discuss/521688013303259136
点赞 回复 分享
发布于 2023-08-17 14:07 浙江
请问楼主项目是mq相关的吗
点赞 回复 分享
发布于 2023-08-17 14:56 北京
楼主,OC了吗
点赞 回复 分享
发布于 2023-08-18 19:54 天津
LZ项目是团购优选嘛?怎么感觉技术点好像
点赞 回复 分享
发布于 2023-08-30 10:34 安徽

相关推荐

11-05 23:47
已编辑
门头沟学院 Java
华为 安卓开发 薪资一年差接近10个
refain_:后端后边跳槽呗?客户端可能干三年就要告别互联网了
点赞 评论 收藏
分享
23 170 评论
分享
牛客网
牛客企业服务