助力2020面试!看完这波微服务面试题,“10拿9稳”

前言

微服务是当下最流行的应用架构了,它跟容器云、DevOps 合称新时代三剑客,帮我们化解业务发展过快导致的产品迭代压力,让我们有自由选择最适合自己团队的技术栈,让系统能够承载互联网海量用户的访问。近些年在厂商、社区和用户等各方努力推动下,微服务相关的理论和产品都日趋成熟,从零开始搭建微服务变得非常简单快捷,那我们是否就此全面进入微服务时代呢?

微服务的演进成熟需要时间,我们熟悉掌握这套新技术也需要时间,除此之外机房里面还跑着大量的单体式应用,它们需要继续维护和升级,任何时候我们都不可能抛开历史轻松上阵。这些单体式应用还担负着公司的核心业务,全部推倒重来、休克式重构是不可取的,投入大周期长,风险完全不可控。

我们必须学会边行车边换胎的技能,在不影响现网业务的前提下推动微服务改造,让老系统焕发新的生命力,继续支持业务下一个十年的发展。

题目

1、您对微服务有何了解?

微服务,又称微服务 架 构,是一种架构风格,它将应用程序构建为以业务领域为模型的小型自治服务集合 。

通俗地说,你必须看到蜜蜂如何通过对齐六角形蜡细胞来构建它们的蜂窝状物。他们最初从使用各种材料的小部分开始,并继续从中构建一个大型蜂箱。这些细胞形成图案,产生坚固的结构,将蜂窝的特定部分固定在一起。这里,每个细胞独立于另一个细胞,但它也与其他细胞相关。这意味着对一个细胞的损害不会损害其他细胞,因此,蜜蜂可以在不影响完整蜂箱的情况下重建这些细胞。
在这里插入图片描述

                                                图 1:微服务的蜂窝表示 – 微服务访谈问题

请参考上图。这里,每个六边形形状代表单独的服务组件。与蜜蜂的工作类似,每个敏捷团队都使用可用的框架和所选的技术堆栈构建单独的服务组件。就像在蜂箱中一样,每个服务组件形成一个强大的微服务架构,以提供更好的可扩展性。此外,敏捷团队可以单独处理每个服务组件的问题,而对整个应用程序没有影响或影响最小。

2、微服务架构有哪些优势?

在这里插入图片描述

                                               图 2:微服务的 优点 – 微服务访谈问题

· 独立开发 – 所有微服务都可以根据各自的功能轻松开发

· 独立部署 – 基于其服务,可以在任何应用程序中单独部署它们

· 故障隔离 – 即使应用程序的一项服务不起作用,系统仍可继续运行

· 混合技术堆栈 – 可以使用不同的语言和技术来构建同一应用程序的不同服务

· 粒度缩放 – 单个组件可根据需要进行缩放,无需将所有组件缩放在一起

3、微服务有哪些特点?
在这里插入图片描述

                                                图 3:微服务的 特点 – 微服务访谈问题

· 解耦 – 系统内的服务很大程度上是分离的。因此,整个应用程序可以轻松构建,更改和扩展

· 组件化 – 微服务被视为可以轻松更换和升级的独立组件

· 业务能力 – 微服务非常简单,专注于单一功能

· 自治 – 开发人员和团队可以彼此独立工作,从而提高速度

· 持续交付 – 通过软件创建,测试和批准的系统自动化,允许频繁发布软件

· 责任 – 微服务不关注应用程序作为项目。相反,他们将应用程序视为他们负责的产品

· 分散治理 – 重点是使用正确的工具来做正确的工作。这意味着没有标准化模式或任何技术模式。开发人员可以自由选择最有用的工具来解决他们的问题

· 敏捷 – 微服务支持敏捷开发。任何新功能都可以快速开发并再次丢弃

4、设计微服务的最佳实践是什么?

以下是设计微服务的最佳实践:

在这里插入图片描述

                                               图 4:设计微服务的最佳实践 – 微服务访谈问题

5、微服务架构如何运作?

微服务架构具有以下组件:
在这里插入图片描述

                                                图 5:微服务 架构 – 微服务面试问题

· 客户端 – 来自不同设备的不同用户发送请求。

· 身份提供商 – 验证用户或客户身份并颁发安全令牌。

· API 网关 – 处理客户端请求。

· 静态内容 – 容纳系统的所有内容。

· 管理 – 在节点上平衡服务并识别故障。

· 服务发现 – 查找微服务之间通信路径的指南。

· 内容交付网络 – 代理服务器及其数据中心的分布式网络。

· 远程服务 – 启用驻留在 IT 设备网络上的远程访问信息。

6、微服务架构的优缺点是什么?

  • 微服务架构的缺点:
    增加故障排除挑战、由于远程呼叫儿增加延迟、增加了配置和其他操作的工作量、难以保持交易安全、艰难地跨越各种边界跟踪数据、难以在服务之间进行编码
  • 微服务架构的优点:
    自由使用不同的技术、每个微服务都侧重单一功能、支持单个可部署单元、允许经常发布软件、确保每项服务的安全性、多个服务是并行开发和部署的

7、单片,SOA 和微服务架构有什么区别?
在这里插入图片描述

                                                图 6: 单片 SOA 和微服务之间的比较 – 微服务访谈问题

· 单片架构类似于大容器,其中应用程序的所有软件组件组装在一起并紧密封装。

· 一个面向服务的架构是一种相互通信服务的集合。通信可以涉及简单的数据传递,也可以涉及两个或多个协调某些活动的服务。

· 微服务架构是一种架构风格,它将应用程序构建为以业务域为模型的小型自治服务集合。

8、在使用微服务架构时,您面临哪些挑战?

开发一些较小的微服务听起来很容易,但开发它们时经常遇到的挑战如下。

· 自动化组件:难以自动化,因为有许多较小的组件。因此,对于每个组件,我们必须遵循 Build,Deploy 和 Monitor 的各个阶段。

· 易感性:将大量组件维护在一起变得难以部署,维护,监控和识别问题。它需要在所有组件周围具有很好的感知能力。

· 配置管理:有时在各种环境中维护组件的配置变得困难。

· 调试:很难找到错误的每一项服务。维护集中式日志记录和仪表板以调试问题至关重要。

9、SOA 和微服务架构之间的主要区别是什么?

SOA 和微服务之间的主要区别如下:

  • SOA:
    遵循”尽可能多的共享”架构方法、重要性在于业务功能、他们有共同的治理和标准、使用企业服务总线(ESB)进行通信、他们支持多种消息协议、多线程,有更多的开销来处理I/O、最大化应用程序服务可重用性、更多的使用传统关系数据库、系统的变化需要对整体进行修改、DevOps/Continuous
    Delivery正在变得流行,但还不是主流
  • 微服务:
    遵循"尽可能少分享"的架构方法、重要性在"有界背景"的慨念、他们更专注与人与人的合作和其他自由的选择、简单的消耗系统、他们使用轻量级协议,如HTTP/REST等。 单线程通常使用Event Loop功能进行非锁定I/O处理、专注于解耦、更多的使用现代关系数据库、系统变化是创造一种新的服务、专注于DevOps/持续交付

10、微服务有什么特点?

您可以列出微服务的特征,如下所示:
在这里插入图片描述

                                               图 7:微服务的特征 – 微服务访谈问题

11、什么是领域驱动设计?

在这里插入图片描述

                                                图 8: DDD 原理 – 微服务面试问题

12、为什么需要域驱动设计(DDD)?

在这里插入图片描述

                                               图 9:我们需要 DDD 的因素 – 微服务面试问题

13、什么是无所不在的语言?

如果您必须定义泛在语言(UL),那么它是特定域的开发人员和用户使用的通用语言,通过该语言可以轻松解释域。

无处不在的语言必须非常清晰,以便它将所有团队成员放在同一页面上,并以机器可以理解的方式进行翻译。

14、什么是凝聚力?

模块内部元素所属的程度被认为是凝聚力。

15、什么是耦合?

组件之间依赖关系强度的度量被认为是耦合。一个好的设计总是被认为具有高内聚力和低耦合性。

16、什么是 REST / RESTful 以及它的用途是什么?

Representational State Transfer(REST)/ RESTful Web 服务是一种帮助计算机系统通过 Internet 进行通信的架构风格。这使得微服务更容易理解和实现。

微服务可以使用或不使用 RESTful API 实现,但使用 RESTful API 构建松散耦合的微服务总是更容易。

17、你对 Spring Boot 有什么了解?

事实上,随着新功能的增加,弹簧变得越来越复杂。如果必须启动新的 spring 项目,则必须添加构建路径或添加 maven 依赖项,配置应用程序服务器,添加 spring配置。所以一切都必须从头开始。

Spring Boot 是解决这个问题的方法。使用 spring boot 可以避免所有样板代码和配置。因此,基本上认为自己就好像你正在烘烤蛋糕一样,春天就像制作蛋糕所需的成分一样,弹簧靴就是你手中的完整蛋糕。

在这里插入图片描述

                                                图 10: Spring Boot 的因素 – 微服务面试问题

18、什么是 Spring 引导的执行器?

Spring Boot 执行程序提供了 restful Web 服务,以访问生产环境中运行应用程序的当前状态。在执行器的帮助下,您可以检查各种指标并监控您的应用程序。

19、什么是 Spring Cloud?

根据 Spring Cloud 的官方网站,Spring Cloud 为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,领导选举,分布式会话,集群状态)。

20、Spring Cloud 解决了哪些问题?

在使用 Spring Boot 开发分布式微服务时,我们面临的问题很少由 Spring Cloud解决。

· 与分布式系统相关的复杂性 – 包括网络问题,延迟开销,带宽问题,安全问题。

· 处理服务发现的能力 – 服务发现允许集群中的进程和服务找到彼此并进行通信。

· 解决冗余问题 – 冗余问题经常发生在分布式系统中。

· 负载平衡 – 改进跨多个计算资源(例如计算机集群,网络链接,中央处理单元)的工作负载分布。

· 减少性能问题 – 减少因各种操作开销导致的性能问题。

结语及后续

随着分布式技术栈逐渐成熟,近几年业界采用微服务架构设计的系统和领域越来越多,包括金融、电商、直播、物流、营销、采购、制造等,有互联网领域,也有传统领域。
近段时间正值找工作的最佳时间,本人将一些各大厂商的面试题和今年(2020)最新资料的收集,以下是部分资料截图(所有资料均已整合成文档,pdf压缩打包处理)。
如有有需要的朋友可以点击这里来获取资料,暗号:qf

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/SpringBoot_/article/details/108579037