1 连环炮
面试官:说一下你们在项目里是怎么用消息队列的?
候选人:巴拉巴拉,我们啥啥系统发送个啥啥消息到队列,别的系统来消费啥啥的(很多同学在这里会进入一个误区,就是你仅仅就是知道以及回答你们是怎么用这个消息队列的,用这个消息队列来干了个什么事情?)
比如我们有个订单系统,订单系统会每次下一个新的订单的时候,就会发送时一条消息到ActiveMQ里面去,后台有个库存系统负责获取了消息然后更新库存。
面试官:那你们为什么使用消息队列啊?(你的订单系统不发送消息到MQ,直接订单系统调用库存系统一个接口,咔嚓一下,直接就调用成功能了,库存就更新了)
候选人:没怎么想过,老大让用就用了。
面试官:那你说说用消息队列都有什么优点和缺点?
面试官:kafka、activemq、rabbitmq、rocketmq都有什么区别?
(面试官问你这个问题,就是说,绕过比较虚的话题,直接看看你对各种MQ中间件是否了解,是否做过功课,是否做过调研)
面试官:那你们是如何保证消息队列的高可用啊?
面试官:如何保证消息不被重复消费啊?如何保证消费的时候是幂等的啊?
面试官:如何保证消息的可靠性传输啊?要是消息丢失了怎么办啊?
面试官:那如何保证消息的顺序性?
面试官:如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决?
面试官:如果让你写一个消息队列,该如何进行架构设计啊?说一下你的思路
2 小结
BAT等大厂 比较类似的一种面试风格。就是一般我们不是发散的,我们是从点,铺开,比如说我们会可能跟你聊聊高并发话题,就这个话题里面跟你聊聊缓存、MQ等等东西吧。
对于每个小话题,比如说MQ,会从浅入深,这个上面的这个面试套路其实是蛮典型的,如果你确实说自己会MQ,你出去面试,去一些大公司面试,有些面试官可能就是这种风格,就是一步一步深挖。
其实上面是一个非常典型的关于消息队列的技术考察过程,好的面试官一定是从你做过的某一个点切入,然后层层展开深入考察,一个接一个问,直到把这个技术点刨根问底,问到最底层。
但是如果你把这些常见问题都掌握了,哪怕是面试官没问到你这么深入,他问你一个消息队列问题,你就自己给他说出自己的一整套见解,那么恭喜你,就是plus加分项了。