前言
消息中间件作为分布式系统的重要成员,各大公司及开源均有许多解决方案。目前主流的开源解决方案包括RabbitMQ、RocketMQ、Kafka、ActiveMQ等。消息这个东西说简单也简单,说难也难。简单之处在于好用方便,接入简单使用简单,异步操作能够解耦系统间的依赖,同时失败后也能够追溯重试。难的地方在于,设计一套可以支撑业务的消息机制,并提供高可用架构,解决消息存储、消息重试、消息队列的负载均衡等一系列问题。然而难也不代表没有方法或者“套路”,熟悉一下原理与实现,多看几个框架的源码后多总结势必能找出一些共性。
消息框架大同小异,熟练掌握其原理、工作机制是必要的。就拿用的比较多的RocketMQ为引,来说说消息引擎的设计与实现。阿里的消息引擎经过了从Notify到Napoli、再到MetaQ三代的发展,现在已经非常成熟,在不同部门的代码中现在没准都还可以从代码里看到这一系列演进过程。当前的Apache RocketMQ 就是阿里将MetaQ项目捐赠给了Apache基金会,而内部还是沿用MetaQ的名称。
一面(一个半小时)
-
首先自我介绍
-
了解Web层开发?数据库索引了解么?聚簇索引,非聚簇索引?索引分类?
-
了解数据库都由哪些引擎?分别有什么区别和使用场景?
-
了解分布式?高可用?如何保证节点集群的同步?Nginx了解过么?
-
什么是事务,数据库的隔离级别,Mysql默认的隔离级别。
-
JVM的内存模型,GC算法
-
非递归实现青蛙跳台阶(非递归斐波拉契数列)
-
判断链表是否有环,若有则返回环的入口节点
-
对象的重写和重载?
-
设计模式里面,单例模式?实现单例模式的双重校验。
-
epoll函数怎么理解?epoll函数在别的哪些地方有用到?
-
手撕:两个链表的重合第一个节点。
二面(一个小时)
-
自我介绍吧
-
项目介绍
-
进程与线程的区别
-
进程通信的方式
-
信号量是怎么实现的
-
URL分为哪些部分
-
浏览器输入URL发生了什么
-
DNS如何解析域名的
-
TCP的三次握手和四次挥手及其原因
-
手撕:有时间区间,判断昨天送外卖的峰值。(这个题做了快三十分钟,主要是外卖订单可能是前天的,昨天的或者今天的)。
-
死锁的原因及如何解决
-
常见的I/O模式,同步和异步的区别
三面(四十分钟)
-
自我介绍
-
实习项目
-
请总结实习学到的三个点
-
类似于百度地图,如何求A地到B地的路径,刚开始被面试官套路了,用各种分类讨论了半天,最后才发觉面试官想问的是有向图求最短路径?说了一下方法是什么?迪杰斯特拉算法作用,复杂度?
-
智力题:一天24小时,时针和分针会重合几次?
-
智力题:四个人打牌,钱都被风刮到地上,每个人都知道自己多少钱,你只知道总数。请问你能帮他们都分准钱吗,其中每个人都可能说谎。
-
还有啥问题?
HR面
-
自我介绍
-
为啥想来美团?对美团了解多少?
-
心中的互联网公司排序啊
-
腾讯和美团选哪个啊
-
自己的优点和缺点
-
还有什么问题 ?
写在最后
以上就是我的面试过程,为了这次面试,也收集了很多的面试题,反正我已经面过了,那就免费分享出来吧!
需要的朋友:关注一下,然后点击这里即可免费领取
以下是部分面试题截图
就免费分享出来吧!
需要的朋友:关注一下,然后点击这里即可免费领取
以下是部分面试题截图