数据存储
2、说说反模式设计:反范式,表数据冗余
3、说说分库与分表设计:用户中心,用户id维度分库分表,通过mod用户id或者hash等方式来实现数据路由
4、分库与分表带来的分布式困境与应对之策:分布式事务,采用分布式事务系统|表关联查询,拆分跨表查询脚本|..
5、说说 SQL 优化之道:explain,索引,冗余
6、MySQL 遇到的死锁问题
7、存储引擎的 InnoDB 与 MyISAM:InnoDB支持事务--MyISAM不支持,InnoDB支持行级锁,表锁--MyISAM只支持表锁
8、数据库索引的原理:B+树
9、为什么要用 B-tree
10、聚集索引与非聚集索引的区别:聚集索引的数据记录物理顺序一致,非聚集索引B+树
11、limit 20000 加载很慢怎么解决:排序+ID限制范围
12、选择合适的分布式主键方案:db的,sequnce(tair),uuid。。。
13、选择合适的数据存储方案:
14、ObjectId 规则:
15、聊聊 MongoDB 使用场景
16、倒排索引:搜索的反向索引
17、聊聊 ElasticSearch 使用场景
缓存使用
1、Redis 有哪些类型:set,zset,list,string,hash
2、Redis 内部结构:
3、聊聊 Redis 使用场景:高性能,缓存
4、Redis 持久化机制:aof(增量)/rdb(全量)
5、Redis 如何实现持久化:aof阻塞落盘/rdb进程异步落盘
6、Redis 集群方案与实现:客户端分片(jedis)/基于代理的分片(codis)/路由查询(redis-cluster)
7、Redis 为什么是单线程的:缓存主要耗费的是IO,不是CPU,所以单线程已经满足要求
8、缓存奔溃
9、缓存降级
10、使用缓存的合理性问题
消息队列
1、消息队列的使用场景:异步化(注册发邮件),削峰()
2、消息的重发补偿解决思路:重试+幂等性
3、消息的幂等性解决思路:id记录表
4、消息的堆积解决思路:定位堆积的原因
5、自己如何实现消息队列:
6、如何保证消息的有序性:在选择broker的时候采用mod业务id的方式,让同一个业务id数据路由到同一个broker(rocketmq)