第一面 大概一个小时
是一个阿里这边的一个同事联系到我,我们约好面试时间。
1.先自我介绍一下
主要是介绍工作经验、项目经历、你在项目中承担的角色是什么等(这些是重点,要有逻辑和侧重点来介绍)
2.那大概说一下你们支付系统
这个主要是涉及自己对自己做过项目的熟悉程度,要对写在简历上的东西负责,且要对项目有思考、比如技术选型时候的考虑、系统存在的问题、如何改进等。
3.你们用到rocketMq 是基于什么考虑?
4.你们项目也用到了kafka,那为什么不统一一下,只用rocketMq或者只用kafka不行吗?基于什么考虑?
这个要结合具体的业务场景、为什么rocketmq合适而kafka不合适?主要要理解rocketmq和kafka的优势和劣势。
5.那说一下rocketmq如何保证消息不丢失呢?从原理上说一下
6.系统中如果保证消息不会重复消费?
我们都知道回答幂等,但是要提供出具体的实现方式、比如插入用唯一索引来保证插入的唯一性、更新时候状态设置等,具体实现可以上网找一下。、
7.你说你们用到了分布式锁?具体场景是什么样的?怎么实现的?
8.因为涉及到高并发的场景,那你怎么保证数据库更新的有效性?
这个其实主要涉及到mysql的锁机制。乐观锁如何实现、悲观锁分类以及如何上锁等。要特别注意行锁和间隙锁实现,这个是重点,可能大多数人也一知半解,但是必须要搞懂的。我当初面试时候也是没回答好。
9.如何保证数据的一致性?
这个属于分布式事务的一部分。大家可以去掘金搜索一下,很多好文章。
10.好了,今天差不多了。你有什么问题问我吗?
这个就看个人了,真诚一点就好。我主要还是会问这次面试我的表现还有不足,但是不问具体的技术问题。面试也是为了检验自己和进步嘛。
全部评论
(1) 回帖