前言
我们说 Kafka 是一个消息队列,其实更加确切的说:是 Broker 这个核心部件。为何这么说?你会发现我们可以通过控制台、 Java 代码、 C++ 代码、甚至是 Socket 向 Broker 写入消息,只要我们遵从了 Kafka 写入消息的协议,就可以将消息发送到 Kafka 队列中。
用专业一点的话术来说,Kafka 定义了一个应用层的网络协议,只要我们基于传输层构造出符合这个协议的数据,就是合法的 Kafka 消息。
所以说我们写入 Kafka 消息的只是一个生产者的客户端,他的形式多种多样,有 Java ,Python,C++ 等多种实现,那么我们每次发消息难道还需要自己去实现这套发送消息的协议么?显然 Kafka 官方已经考虑到这个问题了,为了给我们提供 开箱即用 的消息队列,官方已经帮我们写好了各种语言的优质生产者实现,例如我们今天要讨论的 Java 版本的实现。
技术面(一、二、三面)
- Java 有什么锁类型?
- 有了解Spark吗?Spark为什么比Hadoop要快?
- 谈谈poll和epoll,epoll是同步还是异步
- JMM、老年代在什么情况下会触发GC、对老年代的GC会不会导致程序卡顿?(最优吞吐量和最短停顿时间)
- TCP怎么断开连接
- 讲一讲红黑树
- 红黑树插入一个结点的时间复杂度
- 你所知道的算法的时间复杂度有哪些?快排的复杂度是多少?为什么?
- HashMap的实现,为什么结点插在链表的头部容易导致死锁?
- HashMap扩容
- 手撕代码:字符串a和b,假设只由26种小写字母组成,且a比b长,判断b中字符是否在a中都有出现
- JDK11的ZGC
- Java类加载过程
- 手撕代码:双向有序链表,去除有重复值的所有结点
- 说你熟悉的几种设计模式,手写单例设计模式
- ConcurrentHashMap的实现有了解吗
- 画B+树的底层框图,B+树的叶子结点是什么结构
- 给已经存有0-99的索引的B+树,查询3-30的索引对应的记录
- 如何保证缓存与数据库的双写一致性?
- Redis 和 Memcached 有什么区别?
- Redis 的线程模型是什么?为什么单线程的 Redis 比多线程的 Memcached 效率要高得多
- 分库分表之后,id 主键如何处理?
- 如何自己设计一个类似 Dubbo 的 rpc 框架?
HR面
- 哪个项目收获最大,项目中遇到问题是怎么解决的?
- 说一个你的缺点
- 你更希望做平稳的业务,还是去做新业务?
- 你觉得从0到1和从1到100哪个更难?
- 你未来职位的规划
以上就是最新美团点评技术三面和HR面试题,以下阿里资深高级Java必考题和答案,范围包含最全MySQL、Spring、Redis、JVM、多线程等最全面试题和答案,仅用于参考~
最后
现在正是金三银四的春招高潮,前阵子小编一直在搭建自己的网站,并整理了全套的**【一线互联网大厂Java核心面试题库+解析】:包括Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等**…都已全部整理上传在**我的腾讯文档上:点击这里前往传送门**并会持续更新…可以star一下。
/docs.qq.com/doc/DSmxTbFJ1cmN1R2dB)**并会持续更新…可以star一下。