模拟面试(一)|微服务架构面试思路一图懂
模拟面试(一)|微服务架构面试思路一图懂
你好,我是大明。
恭喜你学完第一章的内容,终于到了要验收成果的时刻了。微服务这一章的内容很多,而且知识点之间盘根错节,记忆起来并不容易,所以为了帮助你更好地掌握这部分内容,我们在这里设置了面试题。
你在回答的时候,最好是能够写成一个文档,至少也要口头上说一遍。千万不要只在脑海里面回忆一遍。因为在真正面试的时候,脑海中的记忆到嘴里说出的话,还需要一个转换。
此外,在回答的时候你可以从以下几个角度来评估自己的回答:
- 在面试前有没有想好自己要打造什么人设?你的回答有没有围绕这个人设进行?
- 当你看到一个问题的时候,你能不能瞬间想到可以怎么刷亮点?怎么引导面试官?
- 有没有在回答中留下足够的引导话术?
- 有没有在我准备的回答基础上,糅合自己的项目经历,打造独一无二的回答?
我希望你可以通过我给你列出的这些问题,回想起我教给你的那些方案,真正地掌握这部分内容,下面我们开始通关吧!
整体性问题
✨ 什么是微服务架构?
✨ 怎么保证微服务架构的高可用?
还有下面这些问题,横跨了多个主题,可以从不同的角度回答。
✨ 怎么判定服务是否已经健康?
✨ 如果服务不健康该怎么办?
✨ 怎么判定服务已经从不健康状态恢复过来了?
✨ 听你说你用到了 Redis 作为缓存,如果你的 Redis 崩溃了会怎么样?
✨ 听你说你用到了 Kafka 作为消息队列,如果你的 Kafka 崩溃了怎么办?
✨ 现在需要设计一个开放平台,即提供接口给合作伙伴用,你觉得需要考虑一些什么问题?
01|服务注册与发现:注册中心应该选 AP 还是 CP?
🔍 什么是注册中心?
🔍 服务注册与发现机制的基本模型是怎样的?
🔍 服务上线与服务下线的步骤是什么?
🔍 注册中心选型需要考虑哪些因素?
🔍 你为什么使用 Zookeeper/Nacos/etcd 作为你的注册中心?
🔍 什么是CAP?
🔍 在服务注册与发现里面你觉得应该用 AP 还是 CP?
🔍 如何保证服务注册与发现的高可用?
🔍 服务器崩溃,如何检测?
🔍 客户端容错的措施有哪些?
🔍 注册中心崩溃了怎么办?
🔍 注册中心怎么判断服务端已经崩溃了?
02|负载均衡:调用结果、缓存机制怎么影响负载均衡的?
⚖️ 你了解负载均衡算法吗?
⚖️ 静态负载均衡算法和动态负载均衡算法的核心区别是什么?
⚖️ 轮询与随机负载均衡算法有什么区别?
⚖️ 你了解平滑的加权轮询算法吗?
⚖️ 如何根据调用结果来调整负载均衡效果?
⚖️ 为什么有些算法要动态调整节点的权重?权重究竟代表了什么?
⚖️ 你们公司的算法有没有调整过权重?为什么?
⚖️ 最快响应时间负载均衡算法有什么缺点?
⚖️ 如果我现在有一个应用,对内存和 CPU 都非常敏感,你可以针对这个特性设计一个负载均衡算法吗?
⚖️ 为什么使用轮询、加权轮询、随机之类的负载均衡算法,系统始终会出现偶发性的流量不均衡,以至于某台服务器出故障的情况?怎么解决这一类问题?
03|熔断:熔断-恢复-熔断-恢复,抖来抖去怎么办?
🔥 为什么说熔断可以提高系统的可用性?
🔥 如何判断节点的健康状态,需要看哪些指标?
🔥 触发熔断之后,该熔断多久?
🔥 响应时间超过多少应该触发熔断?
🔥 响应时间超过阈值就一定要触发熔断吗?
🔥 怎么避免偶发性超过阈值的情况?
🔥 服务熔断后如何恢复?
🔥 产生抖动的原因,以及如何解决抖动问题?
04|降级:为什么每次大促的时候总是要把退款之类的服务停掉?
🤚 什么时候会用到降级,请举例说明?
🤚 降级有什么好处?
🤚 跨服务降级常见的做法是什么?
🤚 你怎么评估业务服务的重要性?或者说,你怎么知道 A 服务比 B 服务更加重要?
🤚 请说一说服务内部常见的降级思路。
🤚 怎么判断哪些服务需要降级?
🤚 触发降级之后,应该保持在降级状态多久?
🤚 服务降级之后如何恢复,如何保证恢复过程中不发生抖动?
🤚 你们公司的产品首页是如何保证高可用的?
05|限流:别说算法了,就问你阈值怎么算?限流的目的是什么?
🏁 限流算法都包括哪些?
🏁 不同的限流算法怎么选?
🏁 限流的对象应该如何选择?
🏁 怎么确定流量的阈值?
🏁 如何应对突发流量?
🏁 被限流的请求会被怎么处理?
🏁 为什么使用了限流,系统还是有可能崩溃?
🏁 我们有一个功能,对于普通用户来说,一些接口需要限制在每分钟不超过 10 次,整天不能超过 1000 次;VIP 用户不限制。你怎么解决这个问题?
06|隔离:怎么保证尊贵的 VIP 用户体验不受损?
🤝 什么是隔离,你用来解决什么问题?
🤝 你了解哪些隔离策略?你用过哪些?
🤝 当某个服务崩溃的时候,你有什么办法保证其它服务不受影响?
🤝 在使用线程池、连接池和协程池的时候,怎么避免业务之间相互影响?
07|超时控制:怎么保证用户一定能在1s内拿到响应?
🕙 为什么要做超时控制?
🕙 为什么缺乏超时控制有可能引起连接泄露、线程泄露?
🕙 什么是链路超时控制?
🕙 如何确定超时时间?
🕙 怎么在链路中传递超时时间?
🕙 超时时间传递的是什么?
🕙 如何计算网络传输时间?
🕙 什么是时钟同步问题?
🕙 客户端和服务端谁来监听超时?
🕙 超时之后能不能中断业务?怎么中断?
08|调用第三方:下游的接口不稳定性能又差怎么办?
🌊 如何保证调用第三方接口的可用性?
🌊 如果在出错的时候你会切换不同的第三方,但是如果全部第三方换一遍之后都崩溃了,怎么办?
🌊 调用第三方接口出错的时候,你是怎么重试的?重试次数和重试间隔你是怎么确定的?
🌊 你怎么判定第三方服务已经非常不可用,以至于要切换一个新的第三方服务了?
🌊 对时效性要求不高的接口,你可以怎么优化架构?
🌊 在压力测试一个接口的时候,如果这个接口依赖了一个第三方接口,你怎么解决?
🌊 公司业务依赖一个非常关键的第三方依赖,我要怎么保证我在调用第三方的时候不出错?
一图懂
最后我将这节课的内容整理成了一张图片,图片能够更好地展现知识点之间的联系,你可以参考,如果你觉得有用的话,可以把这节课的内容分享给身边的朋友,邀他一起学习,共同进步。好了,我们下一章再见吧!