滴滴国际化外卖后端面试经历
面试题目
- 自我介绍
- 个人职业前景
- 技术栈相关:从C-C++转向Java中间件的理解(包括epoll、消息队列、主从模型、生产者消费者模型,以及处理TCP粘包/拆包的应用层协议设计)
- IO网络模型有哪些
- 场景题:如何保证抗住高并发流量
- 场景题:如何保证外卖流程的顺序不乱
- 场景题:如何保证MQ在MQ层不丢失(引导至Raft一致性算法)
- 手撕算法:合并有序链表
- 反问:AI开发支持、Agent开发前景、美洲外卖业务展望
参考解析
- IO网络模型:主要包括阻塞IO、非阻塞IO、IO多路复用(select/poll/epoll)、信号驱动IO和异步IO。重点关注epoll的边缘触发(ET)与水平触发(LT)区别及内核事件表机制。
- 高并发流量保障:通过集群化部署、负载均衡(Nginx/LVS)、缓存(Redis)、限流降级(Sentinel/Hystrix)及数据库读写分离、分库分表等手段应对。
- 外卖流程顺序性:主要通过消息队列的单分区顺序消费、版本号/时间戳校验或分布式锁控制业务并发来实现。
- MQ消息可靠性(Raft):MQ层不丢失通常依赖于多副本同步机制。Raft算法通过Leader选举和日志复制,确保消息在集群中大多数节点持久化成功后才确认,从而保证数据一致性和高可用。
- 合并有序链表:可采用递归或迭代双指针法,维护一个虚拟头节点,依次比较两个链表节点数值并链接至结果链表,时间复杂度O(n+m)。