标签:PDF文档 总结 通过 val 主从同步 com 设计 轻松 最好
一个玩的很好的程序员姐妹跳槽面试,她的技术水平也是女生里面数一数二的,可是竟然落选了………
于是呢,我和姐妹深深地探讨了一下这个问题,最后得出结论——对面试官而言,确实答非所问了,再然后,我们整理出了下面这个文档,真的是痛彻心扉啊,还好最好,朋友也通过举一反三的学习,拿到了一个比较满意的offer!!!女程序员面试其实还是有一点优势的,毕竟物以稀为贵,只是看着她日益憔悴的面庞,以及越来越少的头发,我深怕自己害了她
好了,回归正题,我和朋友研究出来的这个文档决定分享出来,让更多的人从中受益!大概整理出来了八个系列。所有题目分析基本都是 面试官心理分析+面试题剖析 的方式来展开的讲解,基本通过举一反三,能摸清面试官面试时的心理状态,也能重新温习一遍知识,何乐而不为!?
消息队列
例题:为什么使用消息队列?消息队列有什么优点和缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么优点和缺点?
面试官心理分析
其实面试官主要是想看看:
第一,你知不知道你们系统里为什么要用消息队列这个东西?
不少候选人,说自己项目里用了 Redis、MQ,但是其实他并不知道自己为什么要用这个东西。其实说白了,就是为了用而用,或者是别人设计的架构,他从头到尾都没思考过。
没有对自己的架构问过为什么的人,一定是平时没有思考的人,面试官对这类候选人印象通常很不好。因为面试官担心你进了团队之后只会木头木脑的干呆活儿,不会自己思考。
第二,你既然用了消息队列这个东西,你知不知道用了有什么好处&坏处?
你要是没考虑过这个,那你盲目弄个 MQ 进系统里,后面出了问题你是不是就自己溜了给公司留坑?你要是没考虑过引入一个技术可能存在的弊端和风险,面试官把这类候选人招进来了,基本可能就是挖坑型选手。就怕你干 1 年挖一堆坑,自己跳槽了,给公司留下无穷后患。
第三,既然你用了 MQ,可能是某一种 MQ,那么你当时做没做过调研?
你别傻乎乎的自己拍脑袋看个人喜好就瞎用了一个 MQ,比如 Kafka,甚至都从没调研过业界流行的 MQ 到底有哪几种。每一个 MQ 的优点和缺点是什么。每一个 MQ 没有绝对的好坏,但是就是看用在哪个场景可以扬长避短,利用其优势,规避其劣势。
如果是一个不考虑技术选型的候选人招进了团队,leader 交给他一个任务,去设计个什么系统,他在里面用一些技术,可能都没考虑过选型,最后选的技术可能并不一定合适,一样是留坑。
面试题剖析
为什么使用消息队列
其实就是问问你消息队列都有哪些使用场景,然后你项目里具体是什么场景,说说你在这个场景里用消息队列是什么?
面试官问你这个问题,期望的一个回答是说,你们公司有个什么业务场景,这个业务场景有个什么技术挑战,如果不用 MQ 可能会很麻烦,但是你现在用了 MQ 之后带给了你很多的好处。
先说一下消息队列常见的使用场景吧,其实场景有很多,但是比较核心的有 3 个:解耦、异步、削峰。
三个核心以及这个模块后续的内容就不做具体展开了,所有总结出来的内容已经形成了PDF文档,这是我和朋友几天几夜奋战出来的结果,需要源文档的朋友13272413561(备注51免费获取),我把这个文档免费送给你,希望也能帮到你。
Redis 缓存
例题: 项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果?
面试官心理分析
这个问题,互联网公司必问,要是一个人连缓存都不太清楚,那确实比较尴尬。
只要问到缓存,上来第一个问题,肯定是先问问你项目哪里用了缓存?为啥要用?不用行不行?如果用了以后可能会有什么不良的后果?
这就是看看你对缓存这个东西背后有没有思考,如果你就是傻乎乎的瞎用,没法给面试官一个合理的解答,那面试官对你印象肯定不太好,觉得你平时思考太少,就知道干活儿。
面试题剖析
项目中缓存是如何使用的?
这个,需要结合自己项目的业务来。
为什么要用缓存?
用缓存,主要有两个用途:高性能、高并发。
高性能
假设这么个场景,你有个操作,一个请求过来,吭哧吭哧你各种乱七八糟操作 mysql,半天查出来一个结果,耗时 600ms。但是这个结果可能接下来几个小时都不会变了,或者变了也可以不用立即反馈给用户。那么此时咋办?缓存啊,折腾 600ms 查出来的结果,扔缓存里,一个 key 对应一个 value,下次再有人查,别走 mysql折腾 600ms 了,直接从缓存里,通过一个 key 查出来一个 value,2ms 搞定。性能提升 300 倍。就是说对于一些需要复杂操作耗时查出来的结果,且确定后面不怎么变化,但是有很多读请求,那么直接将查询出来的结果放在缓存中,后面直接读缓存就好。
高并发
mysql 这么重的数据库,压根儿设计不是让你玩儿高并发的,虽然也可以玩儿,但是天然支持不好。mysql单机支撑到 2000QPS 也开始容易报警了。
所以要是你有个系统,高峰期一秒钟过来的请求有 1 万,那一个 mysql 单机绝对会死掉。你这个时候就只能上缓存,把很多数据放缓存,别放 mysql。缓存功能简单,说白了就是 key-value 式操作,单机支撑的并发量轻松一秒几万十几万,支撑高并发 so easy。单机承载并发量是 mysql 单机的几十倍。缓存是走内存的,内存天然就支撑高并发。
用了缓存之后会有什么不良后果?
常见的缓存问题有以下几个: - 缓存与数据库双写不一致 - 缓存雪崩、缓存穿透 - 缓存并发竞争
后面再详细说明。
SpringCloud 微服务架构
分库分表
读写分离
1、你们有没有做 MySQL 读写分离?如何实现 MySQL 的读写分离?MySQL 主从复制原理的是啥?如何解决MySQL 主从同步的延时问题?
2、如何设计一个高并发系统?
高可用架构
分布式系统
所有总结出来的内容已经形成了PDF文档,这是我和朋友几天几夜奋战出来的结果,需要源文档的朋友添加VX:13272413561(备注51免费获取),我把这个文档免费送给你,希望也能帮到你。
标签:PDF文档 总结 通过 val 主从同步 com 设计 轻松 最好
原文地址:https://blog.51cto.com/14409100/2491636