美团面试的一些项目问题

问题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+,具有高命中率,低内存占用的特点
全部评论

相关推荐

1.讲解模版化公共效能工具的开发思路:如何设计/如何打包/如何让其他人引入2.项目用的JDK版本?3.功能是自定义的AOP切面类还是手动写的动态代理?4.自定义注解是如何被监听,如何被扫描的?5.静态代理和动态代理的差异是什么?6.AOP的两种实现机制的优劣及其适用场景?7.怎么做的OOM排查?从ssh开始分析,一直分析到MAT使用的细节与临时处理方案,真正解决方案。8.你认为MongoDB和MySQL有什么差异,为什么对于非结构化数据存储你选择MongoDB?9.有考虑过MongoDB和MySQL产生数据的不一致么?你认为什么场景下会不一致?10.如果让你来解决这种不一致,你会使用哪些技术来实现同步?11.你谈到了用Spring提供的@Scheduled,除了这种定时任务之外,你还可以用哪些技术来实现定时任务?12.为什么要用Redis?Redis为什么快?13.谈谈Redis的五种基本数据结构及其底层原理14.除了这五种基本数据结构,你还知道有哪些高性能的数据结构么?这些数据结构有哪些特定应用场景?15.ORM框架是什么?在Mybatis出现之前,如果我希望与MySQL通信,会使用什么技术栈?这种技术栈有什么缺点?16.你的项目里自定义了Mybatis的插件,那你说说:Mybatis插件的本质是什么?17.你在定义Mybatis插件的流程中,使用到了哪些注解?涉及到了哪些参数?考虑到了Mybatis的哪些内部构件?18.SQL题:给定语文、数学、英语三门,找出其中三门成绩最高的10人19.SQL题:假设有一个销售数据表sales,按产品类别分组计算每个类别的总销售额,并筛选出总销售额>80元的账单。20.SQL题:给定语文、数学、英语三门,其中英语大于80分的有10人,数学大于80分的有5人,语文大于80分的有4人,你需要返回语数外都大于80分的有多少人,上面的数据有重叠,怎么写SQL?21.你使用了EasyExcel,那你知道为什么EasyExcel的性能高于ApachePOI么?22.那如果是大批量的数据,还可以使用EasyExcel么?大量数据情况下,ApachePOI有什么优势?23.你是怎么比较上述两个依赖的性能开销的?24.谈谈你常用的Arthas的命令,结合一个场景,谈谈这个命令怎么用?可以获取到哪些信息?
查看24道真题和解析 Java求职圈
点赞 评论 收藏
分享
05-24 09:55
已编辑
上海大学 Java
更新:一面过了,但通勤有点远,接了另一个小厂的offer鼠鼠二本,现在大二,项目是苍穹和仿Git,问得还是挺简单的,不过还是有几个没答好公司规模算是中小厂,100-499那个档的,做的业务应该是快消的产业链、信息化这一块一面是线上,如果通过,二面是要线下去的。公司里学校挺远的,地铁要一个半小时,各位牛爷爷给点意见1. 自我介绍2. 从哪里学的CS61B(自我介绍中提到的)3. 学校里学过的专业课中哪门课印象最深刻/收获最多4. 第一个项目就是java程序设计的课程项目吗5. 学习java多久了6. java中常见的规范7. 讲讲Restful规范——没答出来8. 数据库用的什么9. 了解哪些java集合,讲讲它们的原理(LinkedList、ArrayList)10. Hashmap线程安全吗?哪个是线程安全的?介绍一下原理(Hashmap、ConcurrentHashmap)11. 说说mysql优化12. 说说逻辑外键13. 说说mysql的索引优化——没答出来14. 看到你的第二个项目是与git相关的,那么你来说说我们常用的git命令吧15. 数据结构和算法掌握得怎么样16. 口头手撕:非严格单调递增数列如何去重?17. 看你简历上说对前端有一定了解,那就是对前端三件套和vue了解并可以进行开发吗18. 挑一个项目给我简要介绍一下19. 项目中遇到的难点20. bitmap操作的时间复杂度——没答出来21. 常见的排序算法,它们的时间复杂度22. 讲一讲快速排序的具体实现——没答出来23. 看到你项目中第一点写到JWT令牌完成登录,Threadlocal储存用户信息,能讲讲吗24. ThreadLocal是弱引用,那么相比于强引用,弱引用的优势是什么——没答出来25. 实习时长26. 学校在哪27. 未来的职业规划28. 反问 
查看27道真题和解析
点赞 评论 收藏
分享
评论
5
20
分享

创作者周榜

更多
牛客网
牛客企业服务