主题
面试速答(先看这里)
**一句话结论:**8年,中厂游戏,Java,go,spring,做过dbserver,游戏饰品商城(交易模块、第三方支付接入),压测系统(xml、protobuf、流程化配置、分布式压测,Prometheus、grafana),
60秒标准回答:
8年,中厂游戏,Java,go,spring,做过dbserver,游戏饰品商城(交易模块、第三方支付接入),压测系统(xml、protobuf、流程化配置、分布式压测,Prometheus、grafana)
如何实现的压测的并发数,场景化配置是如何实现的?作弊指令
压测时关注哪些指标? p90 大概多少 ms ? 100ms
**答题顺序:**结论 → 原理/机制 → 关键流程 → 场景与取舍 → 易错点
回答主线:
- **要点1:**游戏账号是如何维护的?
- **要点2:**Redis 快的原因是什么?
- **要点3:**Redis 的分布式锁,如何实现可重入?
- **要点4:**Zk 能用在什么场景下?
- **要点5:**Redis的分布式锁,如何实现可重入?
**记忆锚点:**Redis → redis → key → mongodb → mysql → Zookeeper
关键取舍:
- 性能、原理、一致性、 分布式锁,一致性和可用性哪个更重要?
易错提醒:
- 如何避免解锁的时候把别人的锁解了?
加分表达:
- 8年,中厂游戏,Java,go,spring,做过dbserver,游戏饰品商城(交易模块、第三方支付接入),压测系统(xml、protobuf、流程化配置、分布式压测,Prometheus、grafana), 如何实现的压测的并发数,场景化配置是如何实现的?
- 写完 1/2 节点之后,如果超过 1/2 节点都挂了怎么办?
- 为啥市面上 99% 场景都用 redis ?
追问准备:
- 作弊指令, 压测时关注哪些指标?
- p90 大概多少 ms ?
- 100ms 游戏账号是如何维护的?
- 为啥不用开源的方案比如 jemeter ?
面试者背景
> 8年,中厂游戏,Java,go,spring,做过dbserver,游戏饰品商城(交易模块、第三方支付接入),压测系统(xml、protobuf、流程化配置、分布式压测,Prometheus、grafana), > > 如何实现的压测的并发数,场景化配置是如何实现的?作弊指令, > > 压测时关注哪些指标?p90大概多少ms?100ms > > **游戏账号是如何维护的?为啥不用开源的方案比如jemeter?** > > 用过哪些中间件?redis、mongodb、mq、mysql。redis和mongodb区别? > > Redis****什么地方用到了? > > 为啥mysql用B+树,mongodb为啥用B树,redis用跳表? > > 三种数据库该怎么选?一般是如何选择? > > Redis的事务和mysql****的事务区别? > > Redis****快的原因是什么?基于内存、单线程模型、多路复用,为啥单线程会更快? > > Redis的热key****问题遇到过吗?有什么问题吗?多级缓存、拆分。本地缓存不一致问题怎么办? > > 热key变成了大key怎么办?你觉得多大可以认为是大key? > > Redis的分布式锁,如何实现可重入?什么是可重入?如何避免解锁的时候把别人的锁解了?听说过redlock****吗? > > Lua脚本用过吗?在集群模式下使用lua****脚本有问题么?有办法解决吗? > > Zookeeper干什么用了?为啥zk可以用来做nameserver**?** > > Zookeeper的CP****体现在哪里?强一致性,查询的时候一定会不一样呢?不一致了怎么体现强一致性?A的牺牲体现在哪里? > > 写完1/2节点之后,如果超过1/2节点都挂了怎么办? > > Zk能用在什么场景下?zk的分布式锁和redis****的分布式锁区别是啥?性能、原理、一致性、 > > 分布式锁,一致性和可用性哪个更重要?为啥市面上99%场景都用redis?数据库兜底, > > 分布式事务涉及过吗?介绍下TCC,你认为有必要做分布式事务吗?太重了, > > 不做分布式事务,怎么保证一致性呢? > > “为什么要限流,不应该服务好用户么?”,如何反驳?恶意流量、上下游
题目解析
> 如何实现的压测的并发数,场景化配置是如何实现的?作弊指令, > > 压测时关注哪些指标?p90大概多少ms?100ms
> 用过哪些中间件?redis、mongodb、mq、mysql。redis和mongodb区别? > > Redis****什么地方用到了? > > 为啥mysql用B+树,mongodb为啥用B树,redis用跳表? > > 三种数据库该怎么选?一般是如何选择? > > Redis的事务和mysql的事务区别?
📄 ✅Redis、MySQL和MongoDB的区别是什么,各自适用场景呢?
打开文档:✅Redis、MySQL和MongoDB的区别是什么,各自适用场景呢?
打开文档:✅为什么MySQL用B+树,MongoDB用B树?
📄 ✅InnoDB为什么不用跳表,Redis为什么不用B+树?
打开文档:✅InnoDB为什么不用跳表,Redis为什么不用B+树?
> Redis****快的原因是什么?基于内存、单线程模型、多路复用,为啥单线程会更快? > > Redis的热key****问题遇到过吗?有什么问题吗?多级缓存、拆分。本地缓存不一致问题怎么办? > > 热key变成了大key怎么办?你觉得多大可以认为是大key?
> Redis的分布式锁,如何实现可重入?什么是可重入?如何避免解锁的时候把别人的锁解了?听说过redlock吗?
> Lua脚本用过吗?在集群模式下使用lua脚本有问题么?有办法解决吗?
📄 ✅Redis Cluster 中使用事务和 lua 有什么限制?
打开文档:✅Redis Cluster 中使用事务和 lua 有什么限制?
> Zookeeper干什么用了?为啥zk可以用来做nameserver**?** > > Zookeeper的CP****体现在哪里?强一致性,查询的时候一定会不一样呢?不一致了怎么体现强一致性?A的牺牲体现在哪里? > > 写完1/2节点之后,如果超过1/2节点都挂了怎么办? > > Zk能用在什么场景下?
> zk的分布式锁和redis的分布式锁区别是啥?性能、原理、一致性、 > > 分布式锁,一致性和可用性哪个更重要?为啥市面上99%场景都用redis?数据库兜底,
📄 ✅Redis 的分布式锁和 Zookeeper 的分布式锁有啥区别?
打开文档:✅Redis 的分布式锁和 Zookeeper 的分布式锁有啥区别?
> 分布式事务涉及过吗?介绍下TCC,你认为有必要做分布式事务吗?太重了, > > 不做分布式事务,怎么保证一致性呢?
> “为什么要限流,不应该服务好用户么?”,如何反驳?恶意流量、上下游