Skip to content

面试速答(先看这里)

**一句话结论:**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

📄 ✅说下什么是p90,p95,P99?

打开文档:✅说下什么是p90,p95,P99?

> 用过哪些中间件?redis、mongodb、mq、mysql。redis和mongodb区别? > > Redis****什么地方用到了? > > 为啥mysql用B+树,mongodb为啥用B树,redis用跳表? > > 三种数据库该怎么选?一般是如何选择? > > Redis的事务和mysql的事务区别?

📄 ✅Redis、MySQL和MongoDB的区别是什么,各自适用场景呢?

打开文档:✅Redis、MySQL和MongoDB的区别是什么,各自适用场景呢?

📄 ✅为什么MySQL用B+树,MongoDB用B树?

打开文档:✅为什么MySQL用B+树,MongoDB用B树?

📄 ✅InnoDB为什么不用跳表,Redis为什么不用B+树?

打开文档:✅InnoDB为什么不用跳表,Redis为什么不用B+树?

📄 ✅Redis的事务和MySQL的事务区别?

打开文档:✅Redis的事务和MySQL的事务区别?

> Redis****快的原因是什么?基于内存、单线程模型、多路复用,为啥单线程会更快? > > Redis的热key****问题遇到过吗?有什么问题吗?多级缓存、拆分。本地缓存不一致问题怎么办? > > 热key变成了大key怎么办?你觉得多大可以认为是大key?

📄 ✅Redis为什么这么快?

打开文档:✅Redis为什么这么快?

📄 ✅什么是热Key问题,如何解决热key问题

打开文档:✅什么是热Key问题,如何解决热key问题

📄 ✅什么是大Key问题,如何解决?

打开文档:✅什么是大Key问题,如何解决?

> Redis的分布式锁,如何实现可重入?什么是可重入?如何避免解锁的时候把别人的锁解了?听说过redlock吗?

📄 ✅什么是可重入锁,怎么实现可重入锁?

打开文档:✅什么是可重入锁,怎么实现可重入锁?

📄 ✅什么是RedLock,他解决了什么问题?

打开文档:✅什么是RedLock,他解决了什么问题?

> Lua脚本用过吗?在集群模式下使用lua脚本有问题么?有办法解决吗?

📄 ✅Redis Cluster 中使用事务和 lua 有什么限制?

打开文档:✅Redis Cluster 中使用事务和 lua 有什么限制?

> Zookeeper干什么用了?为啥zk可以用来做nameserver**?** > > Zookeeper的CP****体现在哪里?强一致性,查询的时候一定会不一样呢?不一致了怎么体现强一致性?A的牺牲体现在哪里? > > 写完1/2节点之后,如果超过1/2节点都挂了怎么办? > > Zk能用在什么场景下?

📄 ✅Zookeeper的典型应用场景有哪些?

打开文档:✅Zookeeper的典型应用场景有哪些?

📄 ✅Zookeeper是CP的还是AP的?

打开文档:✅Zookeeper是CP的还是AP的?

> zk的分布式锁和redis的分布式锁区别是啥?性能、原理、一致性、 > > 分布式锁,一致性和可用性哪个更重要?为啥市面上99%场景都用redis?数据库兜底,

📄 ✅Redis 的分布式锁和 Zookeeper 的分布式锁有啥区别?

打开文档:✅Redis 的分布式锁和 Zookeeper 的分布式锁有啥区别?

> 分布式事务涉及过吗?介绍下TCC,你认为有必要做分布式事务吗?太重了, > > 不做分布式事务,怎么保证一致性呢?

📄 ✅什么是分布式事务?

打开文档:✅什么是分布式事务?

📄 ✅怎么做数据对账?

打开文档:✅怎么做数据对账?

> “为什么要限流,不应该服务好用户么?”,如何反驳?恶意流量、上下游

📄 ✅为什么一定要做限流?不应该服务好客户吗?不应该是加机器吗?

打开文档:✅为什么一定要做限流?不应该服务好客户吗?不应该是加机器吗?