掌握这些高并发面试题,保证你能造火箭拿offer
1、在项目中Redis缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果?面试官心理分析【掌握这些高并发面试题,保证你能造火箭拿offer】这个是互联网公司必问 , 要是一个人连Redis缓存都不太清楚 , 那做毛线开发 。
上来第一个先问问你项目哪里用了缓存?为啥要用?不用行不行?如果用了以后可能会有什么不良的后果?
这就是看看你对缓存背后有没有思考 , 如果你就是傻乎乎瞎用 , 没法给面试官一个合理的解答 , 那面试官对你第一印象打折扣 。
面试题剖析项目中缓存是如何使用的?
需要结合自己项目的业务讲解 。
为什么要用缓存?
用缓存 , 主要有两个用途:高性能、高并发 。
高性能
假设一个场景 , 一个请求过来 , 你各种乱七八糟操作mysql , 半天查出来一个结果耗时600ms 。 但是这个结果可能接下来几个小时都不会变了 , 或者变了也可以不用立即反馈给用户 , 那么此时咋办?
缓存啊 , 折腾 600ms 查出来的结果扔缓存里 , 一个 key 对应一个 value , 下次再有人查 , 别走mysql折腾 600ms了 , 直接从缓存里 , 通过一个 key 查出来一个value , 2ms搞定 。 性能提升 300 倍 。
对于一些需要复杂操作耗时查出来的结果 , 且确定后面不怎么变化 , 但是有很多读请求 , 那么直接将查询出来的结果放在缓存中 , 后面直接读缓存就好 。
高并发
你有个系统 , 高峰期一秒钟过来的请求有 1 万 , 一个mysql 单机绝对会死掉 。 你这个时候就只能上缓存 , 把很多数据放缓存 , 别放 mysql 。 缓存功能简单 , 说白了就是 key-value 式操作 , 单机支撑的并发量轻松一秒几万十几万 , 支撑高并发 so easy 。 单机承载并发量是 mysql 单机的几十倍 。
用了缓存之后会有什么不良后果?
常见的缓存问题有以下几个:
缓存与数据库双写不一致 、缓存雪崩、缓存穿透、缓存并发竞争后面再详细说明 。
2、如何保证 redis 的高并发和高可用?redis 的主从复制原理和哨兵原理讲一下?面试官心理分析这个问题是问你redis 单机能承载多高并发?如果单机扛不住如何扩容扛更多并发?redis 会不会挂?既然 redis 会挂怎么保证 redis 是高可用的?
其实针对的都是项目中你要考虑的问题 , 如果你没考虑过 , 那确实你对生产系统中的问题思考太少 , 技术不够扎实 。
面试题剖析用 redis 缓存技术 , 肯定要考虑如何用 redis 加多台机器保证 redis 是高并发的 , 如何让 redis 保证自己不是挂掉以后就直接死掉 , 即redis高可用 。
Redis 主从架构 - redis 基于哨兵实现高可用redis 实现高并发主要依靠主从架构 , 一主多从 , 一般来说 , 很多项目其实就足够了 , 单主用来写入数据 , 单机几万 QPS , 多从用来查询数据 , 多个从实例可以提供每秒 10w 的 QPS 。
如果想要在实现高并发的同时 , 容纳大量数据 , 那么就需要redis集群 , 使用 redis 集群之后 , 可以提供每秒几十万的读写并发 。
redis 高可用 , 如果是做主从架构部署 , 那么加上哨兵就可以了 , 就可以实现 , 任何一个实例宕机 , 可以进行主备切换 。
文章插图
接下来看一个不造火箭的案例:最近招人!面试时我打算先聊点不是很难的 , 打开一下技术话题 , 结果发现面试者对于一些开发中很基本问题都回答的不是很好 , 比如:
- Git的分支你们是怎么管理的?
- PHP进程间通信是如何实现的?
- Swoole的协程和php自带的yield的区别有哪些?
- 搭建MySQL分布式有哪些方式?
推荐阅读
- 不单性能一骑绝尘 iQOO 7的这些亮点也值得一提
- 小姐姐们的心头好,这些手机为啥这么受欢迎
- Mate 20系列再升级,EMUI 11的这些功能你一定要试试
- 比原子弹还稀有,全球就两国掌握,光刻机为什么如此难造?
- 在线教育陷入持久战 作业帮凭“长期主义”掌握主动权
- 国美九九会员风靡闺蜜圈 这些“小心机”让姐妹们爱不释手
- 打乱全球供应链!每年损失千亿?美对华芯片封锁的后果不止这些
- 中国移动早有提醒!这些照片别放手机里,不然隐私、钱财都不安全
- 这些地方竟标注“室内玩乐”、“休闲娱乐的好去处”?美团紧急致歉
- 怎样提高苹果6的运行速度?有这些问题就别救了,你用了几年了?