基础题,高频面试题,这个问题可以看做是面试官准备和你深入讨论 Kafka 相关内容的开场白。
回答这个问题的基本思路就是列举自己平时使用 Kafka 的场景。但是如果你只是列举一些简单的、没啥心意的 Kafka 使用场景,那么你很难赢得竞争优势,并且打开话题。所以最好是在面试之前准备一些高级的 Kafka 使用场景,并且是某个复杂解决方案中的一部分,这样就可以将话题引导到你精心准备的高级方案下,从而拖过面试时间,并且赢得竞争优势。
略难的题,如果你之前只是遵循公司传统使用 Kafka 而没有思考为什么要优先考虑 Kafka,那么这个问题你很可能回答不出来。
回答这个问题,要从解耦、削峰、性能、可用性这些角度去论证 Kafka 这种机制要比同步调用好,并且进一步推导出一个结论:就是在设计系统的时候,应该并且总是应该优先考虑使用 Kafka 或者说异步操作的。
略难的题,高频面试题。Kafka 的设计者使用了非常多的技巧来提高 Kafka 的性能,而这些性能优化手段互相之间也没太多逻辑上的联系,所以你记忆起来会比较困难。
但是从面试的角度来说,这个问题又是一个非常好的打开话题,引导面试方向的问题。所以你在回答这个问题的时候,就要尽量提及你记得的所有的能够提高 Kafka 性能的点,而后等待面试官进一步追问。
基础题。如果你是科班出身,那么你在学习操作系统的时候几乎肯定会学习到这个概念。
要想回答好这个问题,一定要讲清楚零拷贝的原理,而后引申到零拷贝在不同中间件中的应用。
基础题。相信你肯定听说过顺序写的性能极好,但是一旦让你分析为什么顺序写的性能好,你就回答不出来了。
所以只要你能从操作系统的角度去解释清楚顺序写的特点,就能赢得竞争优势。
简单题,很常见,尤其是在校招或者初级工程师的招聘里面。
这个问题的回答要点在于两个:一是介绍 Kafka 的基本概念,提及尽可能多的关键字,从而引导面试方向;另外一个则是要简单介绍一下自己使用 Kafka 解决过什么问题,最好就是用一个复杂方案中的 Kafka 来介绍,从而将话题引导到那个复杂的解决方案上。
简单的题,高频考题。之所以说这个是简单的题,是因为问得太多以至于差不多人人都会了。
回答这个问题的要点在于区分清楚全局有序和单一业务内部有序这两种情况,而要刷出亮点,则要在顺序消息的基础上进一步讨论顺序消息积压的问题,或者说引出我给你准备的顺序消息积压的解决方案。
略难的题,不太常问。
回答这个问题的最大的关键点就是要指出 Kafka 同一个分区的消息是有序的,但是不同的分区的消息是无序的,从而将话题引导过去如何保证消息有序上,进一步引出你的解决方案。
略难的题,高频题目。
大部分人就只会回答异步消费什么的,但是这个方案属实有点烂大街了,毫无竞争力。你需要的做的是先区分是临时积压还是永久性积压。
回答这个问题的关键有两个,一个是要把你能记得的各种方案都讲一下;另外一个关键点是你要把话题引导过去顺序消息的消息积压解决方案上。
略难的题,高频问题。
要刷亮点你就需要综合比较不同中间件的高可用方案,当然也没什么好比的,毕竟能够做到高可用的解决思路就那么几个。
简答题,校招和初级岗位面试中常见。