简单题,在校招和初中级工程师面试中都比较常见,在高级工程师面试中不常见。
回答这个问题,有一个比较尴尬的地方,就是你不知道这个面试官想问的究竟是啥。比如说有些面试官问的是物理实体,那么对应的就是生产者、消费者和 Broker。有些面试官问的是包含了逻辑上的组件,包括了 Topic 和分区这种东西。
而面试首先要考虑不出错,所以你在回答的时候要同时将物理实体和逻辑组件都回答出来。
略难的题,纯理论题,你了不了解 GMP 调度都不影响你写出来牛逼的代码。这个题目之所以难,纯粹是因为要背诵的内容比较多,很多人会觉得全部背下来有点困难。
要回答好这个问题,能够将原理解释得很清晰,就可以赢得竞争优势了。如果你还能深入讨论 GMP 为什么设计成这个样子,就能在面试中赢得巨大的竞争优势了。
简答题,校招和初级岗位面试中常见。
在面试中,最好的方式就是结合自己的实践,谈及在某个项目中使用了 EXPLAIN 命令来排查 SQL 慢查询问题。而后要注意,在使用这种案例的时候,一定要详细描述 EXPLAIN 命令的输出和对应的解读。一方面是可以水时长,一方面也是确保有足够的细节以取信面试官。
简答题,校招和初级岗位面试中常见。
在这个话题下,最好的引导点就是谈及自己使用过类似 Canal 之类的工具,和 binlog 打过交道。例如说最想的就是说自己使用了 Canal 来解决 Redis 和 MySQL 中缓存不一致的问题。此外,如果你对其余中间件还有一个比较深刻的理解,那么你就要进一步延伸到这些中间件中类似的机制上。
简答题,校招和初级岗位面试中常见。
简答题,校招和初中级岗位面试中常见。
要在这个问题之下回答出色,那么可以考虑延伸到使用覆盖索引来优化慢查询的案例。
最左匹配原则也算是一个面试的热点。最左匹配原则的回答要点就在于讲清楚它的具体匹配原则,最好是能够结合具体的案例。因此这个问题又可以结合如何选择索引列里面的相关内容来回答。
略难的题,因为你要掌握两个东西:状态流转和对应的补偿任务。
那么很多人在听到这个问题的时候,第一个念头就是我执行一条 INSERT 语句不就好了?这样回答就肯定寄了,因为在微服务架构下,你要考虑到订单是一个服务,库存是另外一个服务,你得保证创建订单-锁定库存一起成功或者一起失败。
略难的题,这个地方非常适合装逼。
常规的方案无非就是使用双 Kafka 集群,勿论哪个发成功了都可以。但是要装逼就要讨论两个奇诡的做法,一个是将秒杀看做是一个类似于抽奖的过程,随机拒绝掉一部分人;另外一个就是直接去掉 Kafka,也不是不可以。
简单题,你从消息队列里面都能猜到这个就是为了削峰的。
但是如果你想在这里刷亮点,那么就要讨论深入揭示消息队列甚至不能看做是必须的,进而讨论到消息队列崩溃之后的容错问题。