今年面试懵逼记录

问:redis突然变慢了?你要怎样排查?解决方案?

问:怎样保证redis和MySQL的数据的完整性?解决方案?

问:MySQL的CPU突然飙升,甚至到达了500%,你会怎样排查和分析?解决方案是什么?

问:一个事务中操作了A、B、C三个表,B表和C表操作成功了,A表的记录没有变化,你会怎样排查和分析?解决方案是什么?

问:生产上,生产上!!!假如又两三亿数据消息队列失败了,此时你要怎么处理?

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 18
陈先生

问:redis 突然变慢了?你要怎样排查?解决方案?

  1. Redis 慢日志可以看到
  2. 查看是不是有很长的key 和很大的 Value ,之前遇到过一个 Value 的长度直接超过内网带宽的情况
  3. 看下是不是 持久化的配置问题,例如每次保存更新删除操作都会存到 RDB 里面以及写入 AOF 日志记录里面
  4. 看看是不是没内存了。。。。。。或者是不是在用虚拟内存,虚拟内存本质还是文件,所以必然会慢。
  5. 是不是和问题三在同一台机器上面?????

问:怎样保证 redis 和 MySQL 的数据的完整性?解决方案?

  1. 永远都是先释放 redis 的缓存,然后操作数据库,最后写回缓存。中间一个环节出现问题,就终止流程,把缓存写为null,给一个相对少的过期时间。

问:MySQL 的 CPU 突然飙升,甚至到达了 500%,你会怎样排查和分析?解决方案是什么?

  1. 是不是在高频写入。
  2. 是不是在执行一批很大的 SQL。
  3. show processlist 
    //拿到sql后自行 explain 
  4. 是不是有哪个小逼崽子把索引删了!!!!!!!!

问:一个事务中操作了 A、B、C 三个表,B 表和 C 表操作成功了,A 表的记录没有变化,你会怎样排查和分析?解决方案是什么?

  1. 确保 A 表是否支持事务。
  2. 确保 A 表数据确实被操作了而不是简单的重新复写 例如 update tablename set age =5 where id = 1 and age = 5
  3. 拿到 sql 手动 explain .
  4. 在没有日志的情况下分析任何问题都是盲人摸象!

问:生产上,生产上!!!假如又两三亿数据消息队列失败了,此时你要怎么处理?

  1. 贵司的devops 可以提头来上班了。杀了程序员没什么用
  2. 2-3亿 ??? 请问贵司是哪家?
  3. 2-3亿全都失败,先确认错误原因,不要盲人摸象,上文已经说过没有日志的解决问题 = SuperBoss的缩写。
  4. 检查 消费者的服务情况是否是健康的。
  5. 尝试手动消费 然后再做具体分析。这里其实考的不是你要做什么,而是你会怎么分析解决问题
2年前 评论
AyuAyu 2年前
shuidaan 2年前
shuidaan 2年前
陈先生 (作者) 2年前
╰ゝSakura

答:请问如果我答上来了,贵司给我的薪资是多少呢?

2年前 评论
porygonCN 2年前
NoTurningBack 2年前

这四个问题,随便拎出一个来都够说半小时的

2年前 评论

这个应该是高级工程师考虑的吧

2年前 评论
mengdodo

有点意思

2年前 评论

有没有大佬回答一下,让我们小白学习学习

2年前 评论
陈先生

问:redis 突然变慢了?你要怎样排查?解决方案?

  1. Redis 慢日志可以看到
  2. 查看是不是有很长的key 和很大的 Value ,之前遇到过一个 Value 的长度直接超过内网带宽的情况
  3. 看下是不是 持久化的配置问题,例如每次保存更新删除操作都会存到 RDB 里面以及写入 AOF 日志记录里面
  4. 看看是不是没内存了。。。。。。或者是不是在用虚拟内存,虚拟内存本质还是文件,所以必然会慢。
  5. 是不是和问题三在同一台机器上面?????

问:怎样保证 redis 和 MySQL 的数据的完整性?解决方案?

  1. 永远都是先释放 redis 的缓存,然后操作数据库,最后写回缓存。中间一个环节出现问题,就终止流程,把缓存写为null,给一个相对少的过期时间。

问:MySQL 的 CPU 突然飙升,甚至到达了 500%,你会怎样排查和分析?解决方案是什么?

  1. 是不是在高频写入。
  2. 是不是在执行一批很大的 SQL。
  3. show processlist 
    //拿到sql后自行 explain 
  4. 是不是有哪个小逼崽子把索引删了!!!!!!!!

问:一个事务中操作了 A、B、C 三个表,B 表和 C 表操作成功了,A 表的记录没有变化,你会怎样排查和分析?解决方案是什么?

  1. 确保 A 表是否支持事务。
  2. 确保 A 表数据确实被操作了而不是简单的重新复写 例如 update tablename set age =5 where id = 1 and age = 5
  3. 拿到 sql 手动 explain .
  4. 在没有日志的情况下分析任何问题都是盲人摸象!

问:生产上,生产上!!!假如又两三亿数据消息队列失败了,此时你要怎么处理?

  1. 贵司的devops 可以提头来上班了。杀了程序员没什么用
  2. 2-3亿 ??? 请问贵司是哪家?
  3. 2-3亿全都失败,先确认错误原因,不要盲人摸象,上文已经说过没有日志的解决问题 = SuperBoss的缩写。
  4. 检查 消费者的服务情况是否是健康的。
  5. 尝试手动消费 然后再做具体分析。这里其实考的不是你要做什么,而是你会怎么分析解决问题
2年前 评论
AyuAyu 2年前
shuidaan 2年前
shuidaan 2年前
陈先生 (作者) 2年前

Redis核心技术与实战 time.geekbang.org/column/intro/100...

MySQL实战45讲 time.geekbang.org/column/intro/100...

你值得拥有

2年前 评论
╰ゝSakura 2年前

@PHPer技术栈 怀疑你是卖课贩子 :see_no_evil:

2年前 评论

这几个问题问的也太虚了吧。没有应用场景,没有业务与技术的上下文。直接在空中给一个问题,然后问解决方案。这样的问题换谁都会懵逼吧。。。

像第一个问题:redis 突然变慢了?你要怎样排查?解决方案?

突然变慢是怎么突然法的,是上一秒还正常,这一秒就不行?redis 主要做什么用途(key value 存储、热数据缓存),运行在什么环境下(单机、集群),目前业务量是什么类型(IO密集、CPU密集),数据量有多大。。。这些信息都没有的话,就一句话突然变慢了,怎么排查?而没有具体场景和业务信息的话又怎么给出符合实际的解决方案呢?

所以懵逼不是你的问题,而且估计你就算像高赞那哥们那样回答,估计也没多大用。这样问问题,问出这些问题的人,心里多半有一份"标准答案"。 好多面试的时候看薪水与问问题的人就知道这个公司靠不靠谱了。什么时候面试能接点地气,不要整的这么虚。

2年前 评论
陈先生 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!