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/