美团面试的一些项目问题

问题1:

为什么会使用分库分表,到达了什么样的数据级别才会去加设计,是否对数据量有一个统计

我的理解:看星哥之前写过 单表行数超 500 万行或者单表容量超过 2GB,推荐分库分表,但是面试的过程中怕被问自己写的项目会有这么大的数据量吗

不要这么硬背,具体情况具体分析,有的表字段少,经常是条件等值查询,这样加个索引,一个亿也不用分表,有的字段多,还是范围查询,可能5000万就得分表,面试官问你你说是自己在学习分库分表应用到项目中,自己造了几千万的数据量

问题2:

基因法需要分表的一个数量和确定的一个东西(我的理解是分表的依据,例如大麦中是订单编号和用户id),但是正常的生产环境中是可能动态改变的,比如说需要动态扩容的话,怎么解决呢(例如当前有4个分表,但是现在需要扩充到8个分表),是使用双写吗?

这个在扩容前就要考虑好能维持多少年内不需要再扩容。转转架构师在分库分表前,通过之前记录的数据增长量,做了256张表,能在7年内不需要再扩容,如果需要扩容的话,可以使用双写,新扩容表写的过程中,用新的分库分表算法

问题3:

如果在防止超卖的过程中,Redis不可用了,怎么解决

我的理解:使用Redis集群和主从复制吗?因为Redis宕机的话数据库的数据也不能保证是最新的版本,所以得尽量保证Redis不宕机?

肯定要使用redis集群模式,但可能会有主从延迟,导致从节点数据不是最新的,但关系不大。可以在用户生成订单后,修改数据库的座位和库存,然后用户支付后,再改数据库的座位和库存,每一步都做好验证。这样从节点的数据问题会降到最低。

问题4:

如果在当前的幂等验证逻辑中,有一个消息所对应的幂等标识符是不存在的,按照现有的逻辑是可以执行的,但是幂等验证之后的业务系统异常了,这个时候应该怎么处理呢(即通过了幂等的验证,但是后面的服务down掉了,比如说下游抛了一个异常出来)【没太明白应该回答什么,是指需要将幂等标识符重新进行设置吗】

异常了就异常了呗,把这个请求的标识从redis中删除了,就像分布式锁时,业务异常也要执行解锁一样,让下一个请求进来正常执行,然后设置好标识位

问题5:

本地缓存为什么使用Caffine呢,为啥不用Guava

因为caffine的性能要远高于Guava,没有其他复杂原因

我的理解:查了下Caffine就是Guava改进而来的,可以这么说吗

- Caffine在读写操作方面的性能更高,是基于异步的操作,将淘汰过期操作与读写进行分离
- Caffine采用了一种结合 LRU、LFU的算法W-TinyLFU+,具有高命中率,低内存占用的特点
全部评论

相关推荐

📍面试公司:虾皮🕐面试时间:2025-08-24💻面试岗位:虾皮- AI训/推框架算法工程师❓面试问题:如下🙌面试感想:面试官很好,秋招以来遇到过最好的。BG:末9本,中科院硕,和组内课题不相关自我介绍:一分钟完事## 1.讲讲FlashAttention机制## 2.讲讲PageAttention机制## 3.既然提到了操作系统虚拟内存,那讲讲操作系统中页表的结构,页面是否是连续存储的?## 4.讲讲PPO核心原理## 5.PPO中有个重要性采样是什么?写一下PPO的损失函数?为什么需要重要性采样?## 6.深度剖析PPO中每个模型的作用是什么## 7.为什么需要KL散度## 8.奖励模型时怎么训练的,既然有了奖励模型打分,那为什么还需要价值模型,价值模型的作用是什么?奖励模型和价值模型是怎么训练的?## 9.GRPO在此基础上有什么优化?## 10.讲一讲连续批处理技术是什么,为什么需要连续批处理技术?## 11.为什么需要PD分离?## 12.集合通信原语有哪些?## 13.Python中的Dict是什么,如何解决哈希冲突的问题?有哪些解决方案,有没有可能降到O(1)## 14.你这个RAG项目是如何进行Embedding的,用的什么向量检索工具,Fassi的原理是什么?## 15.跑过PPO训练吗?## 16.分布式并行策略有哪些?## 17.TP并行张量是如何切分的,又是如何合并的,按行切和按列切有何不同?## 18.PP并行的缺陷是什么?如何解决气泡问题?你能写出计算气泡大小的公式吗?## 19.有没有了解过分布式训练?## 20.你用过哪些显卡,他们的动态指标有哪些?有用过什么工具去监测吗?🍣手撕:Hot100.数组中只出现过一次的数,其他元素都只出现过两次变形:其他元素都出现过三次呢?反问:您觉得我掌握的怎么样,我自认为觉得还有点距离需要沉淀;面试官评价理论还可以,实操太少。确实中肯,虚心接受,挂了也心服口服。
查看20道真题和解析
点赞 评论 收藏
分享
评论
6
28
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务