2021-04
一面
1. 介绍项目: 订单履约系统流程
1.1 业务介绍
1.2 项目Maven模块化拆分介绍;
2. 项目中设计的技术点
项目QPS
MQ:Kafka 高级特性:重复消费,高吞吐
缓存:Redis分布式锁->由setNx引入,超时缺点,引出Redisson 锁续命机制;
数据存储:分库分表逻辑 (还没有实战,聊了逻辑,但是看出面试官比较看重)
订单表,订单商品明细表,发货表,订单收货人信息,订单促销信息(目前5个)
头部商家,路由策略,如何解决数据分配不均匀问题。(要非常具体的那种,因为没做过,所以细节根本不会)
数据库:
Mysql如何存储千万级别的数据(聚簇索引,1170*1170*16=2100W数据,B+树高度为3,只需要2次IO)
算法:
手写二叉树层序遍历(queue bfs)
大数据topK问题,分片,构造大顶堆,堆排序原理(优先队列) (sift up/sift down)
Redis 布隆过滤器;
大数据场景相关问题 bitmap(没回答上来)
3.反问环节
业务介绍: 类似于松鼠拼拼,团长,前置仓,配送,团长收货/佣金,用户完成,履约结束等等。
业务痛点: 社区团购履约时效控制,尤其到了夏天,水果/蔬菜这些 很容易造成货损,仓配方向核心问题;
技术框架: RPC:dubbo, springboot, MQ削峰,分库分表,数据量一天2000W订单;
二面
二面偏向于实战高并发开发过程重细节
Kafka 高级特性,高并发下丢数据什么原因,如何解释及解决;
Redis分布式锁,对于Redisson 加锁时,如果当前节点宕机,会出现什么情况,该怎么办?
分库分表逻辑及细节
Dmall 主站APP订单下单流程中 如何控制分布式事务?
算法:
888&889&890.....&98765 = ?
当时分析:
110
1000
------
0000
遇到2^n后 所有结果都会变成0
最后面试结束时,面试官提交到是一种数据结构,线段树 ?后缀数组 ?
面试完后在LC上找到了类似题目:https://leetcode-cn.com/problems/bitwise-and-of-numbers-range/