在热招的大数据架构师岗位面试中,Kafka 面试题被面试官选中的几率非常大,也是HR 的杀手锏和狠招,一般来讲,面试题有以下几种:

1. Kafka 为什么这么快?

2. 如何对 Kafka 集群进行调优?

3. Kafka 的高性能网络架构是如何设计的?

4. Kafka 集群资源如何评估?

大多数人遇到这样的问题,脑海中简单构思之后就快速给出了答案:

1.  Kafka 是基于磁盘顺序写的设计。

2. 将 Kafka 的副本因子调大,提高数据的安全性,把生产者程序的 ack 调整为0,提高数据写入的效率等。

3. Kafka 的高性能网络架构设计方案包含批处理,高效的序列化方式。

4. Kafka 的集群资源评估主要看 topic 的数量以及每个 topic 的数据量规模。

这样看似“突出要点式”的简短回答,其实正好不知不觉陷入了几个雷区,我们来分析一下这几个回答究竟踩中了哪些“”?

1. 回答太过于简洁,而且不完整,明显感觉不全面,欠思考。

2. 回答不够全面,调优一般基于某种业务场景给出最佳方案,毕竟脱离了业务场景而干谈技术和参数调优,那就是耍流氓呀。

3. Kafka 的网络架构设计,应该从已有方案的痛点,其他类似组件的成功设计方案进行设计参考,这样会显得系统全面。

4. 集群资源评估,除了数据规模一样,也还要考虑副本,考虑压缩,考虑生命周期。

那么,避免踩坑,应该怎么回答面试官的问题呢?别着急,我来先给大家做个正确示范。

问题:Kafka 为什么那么快?

示范如下:

1. 首先,Kafka 作为一个消息系统,通过 topic 的方式来管理 message,把这些消息都顺序写入磁盘文件来提高写入速度,其实这些消息并没有实时写入磁盘,而是充分利用了现代操作系统分页存储来利用内存提高IO效率。

2. 其次,它的工作原理是直接利用操作系统的 page 来实现文件到物理内存的直接映射。完成映射之后你对物理内存的操作会被同步到硬盘上(操作系统在适当的时候)。

3. 再次,Kafka 也基于 sendfile 实现 zero copy,简化网络上和两个本地文件之间的数据传输,sendfile 的引入不仅减少了数据复制,还减少了上下文切换。

4. 最后,Kafka 为了能网络上提高传输数据的效率,message 也支持压缩。在很多情况下,系统的瓶颈不是 CPU 或磁盘,而是网络 IO,对于需要在广域网上的数据中心之间发送消息的数据流水线尤其如此。

总结一下:Kafka 速度的秘诀在于,它把所有的消息都变成一个批量的文件,并且进行合理的批量压缩,减少网络 IO 损耗,通过 mmap 提高 IO 速度,写入数据的时候由于单个 partition 是末尾添加所以速度最优;读取数据的时候配合 sendfile 直接暴力输出。

你看,这样的回答,是不是就更全面了?挑不出毛病的满分答案是完全能让面试官眼前一亮的,这样就离接到offer大大向前迈进了一步。

其实,为了更加全面掌握 Kafka 的底层原理,可以拓展一些相关阅读。我给大家推荐几本书:

  • 《 Kafka 技术内幕》郑奇煌·著

  • 《Apache Kafka 实战》胡夕·著

  • 《深入理解Kafka: 核心设计与实践原理》朱忠华·著

但是大多数程序员在延展学习的时候都遇到了大同小异的问题,不信你看,是不是你也中了招?

1. 大家都被工作压榨的太狠了,996完全没有闲暇时间学习。

2. 读了书中的原理,但却没有一个很好的实际应用案例进行实战。

3. 找不到合理的方法,遇到技巧性的编码就顿时一脸懵逼。

那么,针对有部分自学困难的同学呢,很适合接下来送出的这套免费且互动感十足的视频教程——《Kafka源码深度剖析》。这是我上周刚刚参加过的奈学教育—免费 Kafka进阶训练营,当时报名人数高达12621+人次,现在奈学已经将录播课程资料全部打包,价值近千元的Kafka源码剖析课,现免费赠送!这波羊毛,不薅白不薅,相信你跟我一样,听完干货满满的内容绝对会从容应对面试官的灵魂拷问,让你轻松玩转 Kafka 底层原理!

 需要的同学扫码添加课程顾问免费领取喔

动手扫一扫,3秒的时间让你在学习上至少节省1440个小时!

当然,仅仅如此远没有诚意,针对爱看书的小伙伴,接下来这波福利一定不容错过!

6/18 福利大放送

活动介绍:6.18矩惠来袭,【奈学教育】与【当当网】强强联合为大家献上【奈学教育专属优惠码——FKNADA】

活动规则:每购满100元立减50元,叠加实付150元立减30元,即120元尊享300元购物体验!

活动日期:2020/6/15-2020/6/20

快转发你的小伙伴领取专属好礼吧!

<点击原文 更多精彩>

Kafka面试,你真的过关了吗?相关推荐

  1. 手撸架构,Kafka 面试42问

    技术栈 传送门 JAVA 基础 手撸架构,Java基础面试100问_vincent-CSDN博客 JAVA 集合 手撸架构,JAVA集合面试60问_vincent-CSDN博客 JVM 虚拟机 手撸架 ...

  2. 十个面试九个秒杀,你设计的秒杀系统真的过关了吗?

    双十一期间,秒杀玩法在电商,直播带货业务中运用的非常广泛,越来越多的秒杀玩法不断出现,秒杀系统几乎成了所有互联网公司的"标配" 秒杀系统中涉及到的很多技术点也是许多一二线大厂面试重 ...

  3. 在Android面试前背八股和学面试技巧真的有用吗?

    前言: 今年秋招以来,我集中面试了一些公司,想着至少能过一家吧,但后面发现面试安排十分紧凑,有种顾此失彼的感觉. 我刚开始的时候对Android面试的具体情况全然不知,也没有人告诉我应该注意些什么,可 ...

  4. 面试技巧: 轻松过关10种方法

    当你欣赏奥林匹克花样滑冰运动员轻松自如地在冰上表演时,你可能会想,多么简单而不费力气.但你没有看到,是运动员经年累月的艰苦训练才使她达到今日的状态.好的面试也是这样,你必须经过充分的准备和练习,才能使 ...

  5. 《kafka面试100例 -6》如果在/admin/delete_topics/中手动写入一个节点会不会正常删除Topic

  6. 这篇java面试是真的真的够全的,强烈推荐给大家

    来源:https://blog.csdn.net/qq_35190492/article/details/105992063 前言 前段时间敖丙不是在复习嘛,很多小伙伴也想要我的复习路线,以及我自己笔 ...

  7. kafka源码_终于看到有人把Kafka讲清楚了,阿里面试官推荐你看这份源码笔记

    这几年,大数据发展迅猛,其中 Kakfa 凭借高可靠.高吞吐.高可用.可伸缩几大特性,成为数据管道技术的首选. 越来越多人开始使用 Kafka,对学习源码的需求也愈发强烈,原因主要有这么几个方面: 了 ...

  8. 面试官灵魂拷问:为什么 SQL 语句不要过多的 join?

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 后台回复"k8s",可领取k8s资料 来源:r6d.c ...

  9. 50K求聘.NET,我们是认真的!

    今年的节奏特别快,不知道你有没有同感?春节刚过,跳槽季仓促开始,打了个疫苗,过了个清明,一转头4月过半,金三银四就快尾声了,真是时光飞逝.当然,手速快的已经offer拿到手软,手速慢的可能还在吭哧吭哧 ...

最新文章

  1. 兄弟连区块链教程Fabric1.0源代码分析configupdate处理通道配置更新
  2. Ubuntu16.04.1安装Caffe(GPU)
  3. HTML5实践 -- 介绍css3中的几个属性:text-shadow、box-shadow 和 border-radius
  4. 可视化图布局算法简介
  5. QQ 木子版 vs 现在的某些修改版
  6. 小米5x 运行linux,小米5X root+xposed使用方法
  7. puttygen 可以将key文件转为pem文件for xshell 20211213
  8. sql vb xml 换行_VB中文本框换行--------急!!!
  9. 在mysql中unique唯一索引的作用_mysql唯一索引和unique
  10. 刨根笔记--由antd开始的jsx渲染学习路线
  11. recovery mode
  12. bert常用基准数据集:GLUE数据集介绍以及数据集资源
  13. 服务端判断客户端是移动端浏览器还是PC端浏览器
  14. TiDB数据库架构概述
  15. SkyWalking8.4监控跨线程问题解决
  16. 合合信息——用智能文字识别技术赋能古彝文原籍数字化
  17. 网络安全态势感知研究综述、MD5C#实现
  18. BIOS 启动类型:Legacy+UEFI、UEFI BOOT、Legacy BOOT
  19. Keycloak简单几步实现对Spring Boot应用的权限控制,程序员Java基础案例教程
  20. 寻宝机器人电路板焊接_寻宝活动——组装机器人

热门文章

  1. 21天打卡Andoid学到的一些小知识-第十五十六天
  2. SRC,CRC,SQ_SRC,SQ_CRC,SQF_SRC,SQF_CRC
  3. CAD常用命令:对象选择过滤器(FILTER)
  4. 赛效:WPS文字(Word)如何合并多个文档
  5. 捷配精密金属,感受钢铁直男的力量
  6. 在matlab中如何调用自己写的函数
  7. 电脑版微信自动同步转播安装步骤
  8. 红米note9和oppoK7x哪个好?红米note9和oppoK7x区别
  9. 简单的动态网页(表格)——将SQL Server的数据读入表格中
  10. 常见java空指针异常NPE