2021最新版微服务面试题总结(65道题含答案解析)
Posted Java小叮当
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021最新版微服务面试题总结(65道题含答案解析)相关的知识,希望对你有一定的参考价值。
文章目录
- 1.微服务,又称微服务 架构,是一种架构风格,它将应用程序构建为以业务领域为模型的小型自治服务集合 。
- 2、微服务架构有哪些优势?
- 3、微服务有哪些特点?
- 4、设计微服务的最佳实践是什么?
- 5、微服务架构如何运作?
- 6、微服务架构的优缺点是什么?
- 7、单片,SOA和微服务架构有什么区别?
- 8、在使用微服务架构时,您面临哪些挑战?
- 9、SOA和微服务架构之间的主要区别是什么?
- 10、微服务有什么特点?
- 11、什么是领域驱动设计?
- 12、为什么需要域驱动设计(DDD)?
- 13、什么是无所不在的语言?
- 14、什么是凝聚力?
- 15、什么是耦合?
- 16、什么是REST / RESTful以及它的用途是什么?
- 17、你对Spring Boot有什么了解?
- 18、什么是Spring引导的执行器?
- 19、什么是Spring Cloud?
- 20、Spring Cloud解决了哪些问题?
- 21、在Spring MVC应用程序中使用WebMvcTest注释有什么用处?
- 22、你能否给出关于休息和微服务的要点?
- 23、什么是不同类型的微服务测试?
- 24、您对 Distributed Transaction有何了解?
- 25、什么是Idempotence以及它在哪里使用?
- 26、什么是有界上下文?
- 27、什么是双因素身份验证?
- 28、双因素身份验证的凭据类型有哪些?
- 29、什么是客户证书?
- 30、PACT 在微服务架构中的用途是什么?
- 31、什么是 OAuth?
- 32、康威定律是什么?
- 33、合同测试你懂什么?
- 34、什么是端到端微服务测试?
- 35、Container在微服务中的用途是什么?
- 36、什么是微服务架构中的 DRY?
- 37、什么是消费者驱动的合同(CDC)?
- 38、Web,RESTful API 在微服务中的作用是什么?
- 39、您对微服务架构中的语义监控有何了解?
- 40、我们如何进行跨功能测试?
- 41、我们如何在测试中消除非决定论?
- 42、Mock或Stub有什么区别?
- 43、您对Mike Cohn的测试金字塔了解多少?
- 44、Docker的目的是什么?
- 45、什么是金丝雀释放?
- 46、什么是持续集成(CI)?
- 47、什么是持续监测?
- 48、架构师在微服务架构中的角色是什么?
- 49、我们可以用微服务创建状态机吗?
- 50、什么是微服务中的反应性扩展?
- SpringCloud面试
- Spring Boot面试题
- 总结
最近面试的小伙伴很多,对此我整理了一份Java面试题手册:基础知识、JavaOOP、Java集合/泛型面试题、Java异常面试题、Java中的IO与NIO面试题、Java反射、Java序列化、Java注解、多线程&并发、JVM、mysql、Redis、Memcached、MongoDB、Spring、SpringBoot、SpringCloud、RabbitMQ、Dubbo、MyBatis、ZooKeeper、数据结构、算法、Elasticsearch、Kafka、微服务、Linux等等。可以分享给大家学习。【持续更新中】
完整版Java面试题地址:【2021最新版】Java面试真题汇总
1.微服务,又称微服务 架构,是一种架构风格,它将应用程序构建为以业务领域为模型的小型自治服务集合 。
通俗地说,你必须看到蜜蜂如何通过对齐六角形蜡细胞来构建它们的蜂窝状物。他们最初从使用各种材料的小部分开始,并继续从中构建一个大型蜂箱。这些细胞形成图案,产生坚固的结构,将蜂窝的特定部分固定在一起。这里,每个细胞独立于另一个细胞,但它也与其他细胞相关。这意味着对一个细胞的损害不会损害其他细胞,因此,蜜蜂可以在不影响完整蜂箱的情况下重建这些细胞。
图1:微服务的蜂窝表示–微服务访谈问题
请参考上图。这里,每个六边形形状代表单独的服务组件。与蜜蜂的工作类似,每个敏捷团队都使用可用的框架和所选的技术堆栈构建单独的服务组件。就像在蜂箱中一样,每个服务组件形成一个强大的微服务架构,以提供更好的可扩展性。此外,敏捷团队可以单独处理每个服务组件的问题,而对整个应用程序没有影响或影响最小。
2、微服务架构有哪些优势?
答:
图2:微服务的优点–微服务访谈问题
3、微服务有哪些特点?
答:
图3:微服务的特点–微服务访谈问题
4、设计微服务的最佳实践是什么?
5、微服务架构如何运作?
答:
微服务架构具有以下组件:
图5:微服务架构–微服务面试问题
6、微服务架构的优缺点是什么?
答:
7、单片,SOA和微服务架构有什么区别?
答:
图6:单片SOA和微服务之间的比较–微服务访谈问题
单片架构类似于大容器,其中应用程序的所有软件组件组装在一起并紧密封装。
一个面向服务的架构是一种相互通信服务的集合。通信可以涉及简单的数据传递,也可以涉及两个或多个协调某些活动的服务。
微服务架构是一种架构风格,它将应用程序构建为以业务域为模型的小型自治服务集合。
8、在使用微服务架构时,您面临哪些挑战?
答:
开发一些较小的微服务听起来很容易,但开发它们时经常遇到的挑战如下。
9、SOA和微服务架构之间的主要区别是什么?
答:
SOA和微服务之间的主要区别如下:
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解决。
21、在Spring MVC应用程序中使用WebMvcTest注释有什么用处?
答:
在测试目标只关注Spring MVC组件的情况下,WebMvcTest注释用于单元测试Spring MVC应用程序。在上面显示的快照中,我们只想启动ToTestController。执行此单元测试时,不会启动所有其他控制器和映射。
22、你能否给出关于休息和微服务的要点?
答:
虽然您可以通过多种方式实现微服务,但REST over HTTP是实现微服务的一种方式。REST还可用于其他应用程序,如Web 应用程序,API设计和MVC应用程序,以提供业务数据。
微服务是一种体系结构,其中系统的所有组件都被放入单独的组件中,这些组件可以单独构建,部署和扩展。微服务的某些原则和最佳实践有助于构建弹性应用程序。简而言之,您可以说REST是构建微服务的媒介。
23、什么是不同类型的微服务测试?
答:
在使用微服务时,由于有多个微服务协同工作,测试变得非常复杂。因此,测试分为不同的级别。
24、您对 Distributed Transaction有何了解?
答:
25、什么是Idempotence以及它在哪里使用?
答:
幂等性是能够以这样的方式做两次事情的特性,即最终结果将保持不变,即好像它只做了一次。
用法:在远程服务或数据源中使用Idempotence,这样当它多次接收指令时,它只处理指令一次。
26、什么是有界上下文?
答:
有界上下文是域驱动设计的核心模式。DDD战略设计部门的重点是处理大型模型和团队。DDD通过将大型模型划分为不同的有界上下文并明确其相互关系来处理大型模型。
27、什么是双因素身份验证?
答:
双因素身份验证为帐户登录过程启用第二级身份验证。
图11: 双因素认证的表示–微服务访谈问题
因此,假设用户必须只输入用户名和密码,那么这被认为是单因素身份验证。
28、双因素身份验证的凭据类型有哪些?
答:
这三种凭证是:
图12: 双因素认证的证书类型–微服务面试问题
29、什么是客户证书?
答:
客户端系统用于向远程服务器发出经过身份验证的请求的一种数字证书称为客户端证书。客户端证书在许多相互认证设计中起着非常重要的作用,为请求者的身份提供了强有力的保证。
30、PACT 在微服务架构中的用途是什么?
答:
PACT是一个开源工具,允许测试服务提供者和消费者之间的交互,与合同隔离,从而提高微服务集成的可靠性。
微服务中的用法
用于在微服务中实现消费者驱动的合同。
测试微服务的消费者和提供者之间的消费者驱动的合同。
查看即将到来的批次
31、什么是 OAuth?
答:
OAuth代表开放授权协议。这允许通过在HTTP服务上启用客户端应用程序(例如第三方提供商Facebook,GitHub等)来访问资源所有者的资源。因此,您可以在不使用其凭据的情况下与另一个站点共享存储在一个站点上的资源。
32、康威定律是什么?
答:
“任何设计系统的组织(广泛定义)都将产生一种设计,其结构是组织通信结构的副本。” –Mel Conway
图13: Conway定律的表示–微服务访谈问题
该法律基本上试图传达这样一个事实:为了使软件模块起作用,整个团队应该进行良好的沟通。因此,系统的结构反映了产生它的组织的社会边界。
33、合同测试你懂什么?
答:
根据Martin Flower的说法,合同测试是在外部服务边界进行的测试,用于验证其是否符合消费服务预期的合同。
此外,合同测试不会深入测试服务的行为。更确切地说,它测试该服务调用的输入&输出包含所需的属性和所述响应延迟,吐量是允许的限度内。
34、什么是端到端微服务测试?
答:
端到端测试验证了工作流中的每个流程都正常运行。这可确保系统作为一个整体协同工作并满足所有要求。
通俗地说,你可以说端到端测试是一种测试,在特定时期后测试所有东西。
图14:测试层次–微服务面试问题
35、Container在微服务中的用途是什么?
答:
容器是管理基于微服务的应用程序以便单独开发和部署它们的好方法。您可以将微服务封装在容器映像及其依赖项中,然后可以使用它来滚动按需实例的微服务,而无需任何额外的工作。
图15: 容器的表示及其在微服务中的使用方式–微服务访谈问题
36、什么是微服务架构中的 DRY?
答:
DRY代表不要重复自己。它基本上促进了重用代码的概念。这导致开发和共享库,这反过来导致紧密耦合。
37、什么是消费者驱动的合同(CDC)?
答:
这基本上是用于开发微服务的模式,以便它们可以被外部系统使用。当我们处理微服务时,有一个特定的提供者构建它,并且有一个或多个使用微服务的消费者。通常,提供程 序在XML文档中指定接口。但在消费者驱动的合同中,每个服务消费者都传达了提供商期望的接口。
38、Web,RESTful API 在微服务中的作用是什么?
答:
微服务架构基于一个概念,其中所有服务应该能够彼此交互以构建业务功能。因此,要实现这一点,每个微服务必须具有接口。这使得Web API成为微服务的一个非常重要的推 动者。RESTful API基于Web的开放网络原则,为构建微服务架构的各个组件之间的接口提供了最合理的模型。
39、您对微服务架构中的语义监控有何了解?
答:
语义监控,也称为 综合监控, 将自动化测试与监控应用程序相结合,以检测业务失败因素。
40、我们如何进行跨功能测试?
答:
跨功能测试是对非功能性需求的验证,即那些无法像普通功能那样实现的需求。
41、我们如何在测试中消除非决定论?
答:
非确定性测试(NDT)基本上是不可靠的测试。所以,有时可能会发生它们通过,显然有时它们也可能会失败。当它们失败时,它们会重新运行通过。
从测试中删除非确定性的一些方法如下:
1、 隔离
2、 异步
3、 远程服务
4、 隔离
5、 时间
6、 资源泄漏
42、Mock或Stub有什么区别?
答:
存根
一个有助于运行测试的虚拟对象。
在某些可以硬编码的条件下提供固定行为。
永远不会测试存根的任何其他行为。
例如,对于空堆栈,您可以创建一个只为empty()方法返回true的存根。因此,这并不关心堆栈中是否存在元素。
嘲笑
一个虚拟对象,其中最初设置了某些属性。
此对象的行为取决于set属性。
也可以测试对象的行为。
例如,对于Customer对象,您可以通过设置名称和年龄来模拟它。您可以将age设置为12,然后测试isAdult()方法,该方法将在年龄大于18时返回true。因此,您的Mock Customer对象适用于指定的条件。
43、您对Mike Cohn的测试金字塔了解多少?
答:
Mike Cohn提供了一个名为Test Pyramid的模型。这描述了软件开发所需的自动化测试类型。
图16: Mike Cohn的测试金字塔–微服务面试问题
根据金字塔,第一层的测试数量应该最高。在服务层,测试次数应小于单元测试级别,但应大于端到端级别。
44、Docker的目的是什么?
答:
Docker提供了一个可用于托管任何应用程序的容器环境。在此,软件应用程序和支持它的依赖项紧密打包在一起。因此,这个打包的产品被称为Container,因为它是由Docker完成的,所以它被称为Docker容器!
45、什么是金丝雀释放?
答:
Canary Releasing是一种降低在生产中引入新软件版本的风险的技术。这是通过将变更缓慢地推广到一小部分用户,然后将其发布到整个基础架构,即将其提供给每个人来完成的。
46、什么是持续集成(CI)?
答:
持续集成(CI)是每次团队成员提交版本控制更改时自动构建和测试代码的过程。这鼓励开发人员通过在每个小任务完成后将更改合并到共享版本控制存储库来共享代码和单元测试。
47、什么是持续监测?
答:
持续监控深入监控覆盖范围,从浏览器内前端性能指标,到应用程序性能,再到主机虚拟化基础架构指标。
48、架构师在微服务架构中的角色是什么?
答:
微服务架构中的架构师扮演以下角色:
49、我们可以用微服务创建状态机吗?
答:
我们知道拥有自己的数据库的每个微服务都是一个可独立部署的程序单元,这反过来又让我们可以创建一个状态机。因此,我们可以为特定的微服务指定不同的状态和事件。
例如,我们可以定义Order微服务。订单可以具有不同的状态。Order状态的转换可以是Order微服务中的独立事件。
50、什么是微服务中的反应性扩展?
答:
Reactive Extensions也称为Rx。这是一种设计方法,我们通过调用多个服务来收集结果,然后编译组合响应。这些调用可以是同步或异步,阻塞或非阻塞。Rx是分布式系统中非常流行的工具,与传统流程相反。希望这些微服务面试问题可以帮助您进行微服务架构师访谈。
SpringCloud面试
1、什么是Spring Cloud?
答:
Spring cloud流应用程序启动器是基于Spring Boot 的 Spring集成应用程序,提供与外部系统的集成。Spring cloud Task,一个生命周期短暂的微服务框架,用于快速构建执行有限数据处理的应用程序。
2、使用Spring Cloud有什么优势?
答:
使用Spring Boot开发分布式微服务时,我们面临以下问题
(1)与分布式系统相关的复杂性-这种开销包括网络问题,延迟开销,带宽问题,安全问题。
(2)服务发现-服务发现工具管理群集中的流程和服务如何查找和互相交谈。它涉及一个服务目录,在该目录中注册服务,然后能够查找并连接到该目录中的服务。
(3)冗余-分布式系统中的冗余问题。
(4)负载平衡 --负载平衡改善跨多个计算资源的工作负荷,诸如计算机,计算机集群,网络链路,中央处理单元,或磁盘驱动器的分布。
(5)性能-问题 由于各种运营开销导致的性能问题。
(6)部署复杂性-Devops 技能的要求。
3、服务注册和发现是什么意思?Spring Cloud如何实现?
答:
当我们开始一个项目时,我们通常在属性文件中进行所有的配置。随着越来越多的服务开发和部署,添加和修改这些属性变得更加复杂。有些服务可能会下降,而某些位置可能会发生变化。手动更改属性可能会产生问题。 Eureka服务注册和发现可以在这种情况下提供帮助。由于所有服务都在Eureka服务器上注册并通过调用Eureka服务器完成查找,因此无需处理服务地点的任何更改和处理。
4、Spring Cloud和dubbo区别?
答:
(1)服务调用方式dubbo是RPC springcloud Rest Api
(2)注册中心,dubbo是zookeeper springcloud是eureka,也可以是zookeeper
(3)服务网关,dubbo本身没有实现,只能通过其他第三方技术整合,springcloud有Zuul路由网关,作为路由服务器,进行消费者的请求分发,springcloud支持断路器,与git完美集成配置文件支持版本控制,事物总线实现配置文件的更新与服务自动装配等等一系列的微服务架构要素。
5、SpringBoot和SpringCloud的区别?
答:
SpringBoot专注于快速方便的开发单个个体微服务。
SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,
为各个微服务之间提供,配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等集成服务
SpringBoot可以离开SpringCloud独立使用开发项目, 但是SpringCloud离不开SpringBoot ,属于依赖的关系.
SpringBoot专注于快速、方便的开发单个微服务个体,SpringCloud关注全局的服务治理框架。
6、负载平衡的意义什么?
答:
在计算中,负载平衡可以改善跨计算机,计算机集群,网络链接,中央处理单元或磁盘驱动器等多种计算资源的工作负载分布。负载平衡旨在优化资源使用,最大化吞吐量,最小化响应时间并避免任何单一资源的过载。使用多个组件进行负载平衡而不是单个组件可能会通过冗余来提高可靠性和可用性。负载平衡通常涉及专用软件或硬件,例如多层交换机或域名系统服务器进程。
7、什么是 Hystrix?它如何实现容错?
答:
Hystrix 是一个延迟和容错库,旨在隔离远程系统,服务和第三方库的访问点,当出现故障是不可避免的故障时,停止级联故障并在复杂的分布式系统中实现弹性。
通常对于使用微服务架构开发的系统,涉及到许多微服务。这些微服务彼此协作。
思考以下微服务
假设如果上图中的微服务 9 失败了,那么使用传统方法我们将传播一个异常。但这仍然会导致整个系统崩溃。
随着微服务数量的增加,这个问题变得更加复杂。微服务的数量可以高达 1000.这是 hystrix 出现的地方 我们将使用 Hystrix 在这种情况下的 Fallback 方法功能。我们有两个服务 employee-consumer 使用由 employee-consumer 公开的服务。
简化图如下所示
现在假设由于某种原因,employee-producer公开的服务会抛出异常。我们在这种情况下使用Hystrix定义了一个回退方法。这种后备方法应该具有与公开服务相同的返回类型。如果暴露服务中出现异常,则回退方法将返回一些值。
8、什么是Hystrix断路器?我们需要它吗?
答:
由于某些原因,employee-consumer公开服务会引发异常。在这种情况下使用Hystrix我们定义了一个回退方法。如果在公开服务中发生异常,则回退方法返回一些默认值。
如果firstPage method() 中的异常继续发生,则Hystrix电路将中断,并且员工使用者将一起跳过firtsPage方法,并直接调用回退方法。 断路器的目的是给第一页方法或第一页方法可能调用的其他方法留出时间,并导致异常恢复。可能发生的情况是,在负载较小的情况下,导致异常的问题有更好的恢复机会 。
9、什么是Netflix Feign?它的优点是什么?
答:
Feign是受到Retrofit,JAXRS-2.0和WebSocket启发的java客户端联编程序。
Feign的第一个目标是将约束分母的复杂性统一到http apis,而不考虑其稳定性。
在employee-consumer的例子中,我们使用了employee-producer使用REST模板公开的REST服务。
但是我们必须编写大量代码才能执行以下步骤
(1)使用功能区进行负载平衡。
(2)获取服务实例,然后获取基本URL。
(3)利用REST模板来使用服务。 前面的代码如下
@Controller
public class ConsumerControllerClient {
@Autowired
private LoadBalancerClient loadBalancer;
public void getEmployee() throws RestClientException, IOException {
ServiceInstance serviceInstance=loadBalancer.choose("employee-producer");
System.out.println(serviceInstance.getUri());
String baseUrl=serviceInstance.getUri().toString();
baseUrl=baseUrl+"/employee";
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> response=null;
try{
response=restTemplate.exchange(baseUrl,
HttpMethod.GET, getHeaders(),String.class);
}
catch (Exception ex)
{
System.out.println(ex);
}
System.out.println(response.getBody());
}
之前的代码,有像NullPointer这样的例外的机会,并不是最优的。我们将看到如何使用Netflix Feign使呼叫变得更加轻松和清洁。如果Netflix Ribbon依赖关系也在类路径中,那么Feign默认也会负责负载平衡。
10、什么是 Spring Cloud Bus?我们需要它吗?
答:
考虑以下情况:我们有多个应用程序使用Spring Cloud Config读取属性,而Spring Cloud Config从GIT读取这些属性。
下面的例子中多个员工生产者模块从Employee Config Module获取Eureka注册的财产。
如果假设GIT 中的 Eureka注册属性更改为指向另一台Eureka服务器,会发生什么情况。在这种情况下,我们将不得不重新启动服务以获取更新的属性。
还有另一种使用执行器端点/刷新的方式。但是我们将不得不为每个模块单独调用这个url。例如,如果Employee Producer1部署在端口8080上,则调用 http:// localhost:8080/refresh。同样对于Employee Producer2 http://localhost:8081/refresh 等等。这又很麻烦。这就是Spring Cloud Bus发挥作用的地方。
Spring Cloud Bus提供了跨多个实例刷新配置的功能。因此,在上面的示例中,如果我们刷新Employee Producer1,则会自动刷新所有其他必需的模块。如果我们有多个微服务启动并运行,这特别有用。这是通过将所有微服务连接到单个消息代理来实现的。无论何时刷新实例,此事件都会订阅到侦听此代理的所有微服务,并且它们也会刷新。可以通过使用端点/总线/刷新来实现对任何单个实例的刷新。
Spring Boot面试题
1、什么是Spring Boot?
答:
多年来,随着新功能的增加,spring变得越来越复杂。访问spring官网页面,我们就会看到可以在我们的应用程序中使用的所有Spring项目的不同功能。如果必须启动一个新的Spring项目,我们必须添加构建路径或添加Maven依赖关系,配置应用程序服务器,添加spring配置。因此,开始一个新的spring项目需要很多努力,因为我们现在必须从头开始做所有事情。
Spring Boot是解决这个问题的方法。Spring Boot已经建立在现有spring框架之上。使用spring启动,我们避免了之前我们必须做的所有样板代码和配置。因此,Spring Boot可以帮助我们以最少的工作量,更加健壮地使用现有的Spring功能。
2、Spring Boot有哪些优点?
答:
Spring Boot的优点有:
1、减少开发,测试时间和努力。
2、使用JavaConfig有助于避免使用XML。
3、避免大量的Maven导入和各种版本冲突。
4、提供意见发展方法。
5、通过提供默认值快速开始开发。
6、没有单独的Web服务器需要。这意味着你不再需要启动Tomcat,Glassfish或其他任何东西。
7、需要更少的配置 因为没有web.xml 文件。只需添加用@ Configuration 注释的类,然后添加用@Bean注释的方法,Spring 将自动加载对象并像以前一样对其进行管理。您甚至可以将@Autowired添加到bean方法中,以使Spring自动装入需要的依赖关系中。
8、基于环境的配置 使用这些属性,您可以将您正在使用的环境传递到应用程序:-Dspring.profiles.active={enviornment}。在加载主应用程序属性文件后,Spring将在(application{environment} .properties)中加载后续的应用程序属性文件。
3、什么是JavaConfig?
答:
Spring JavaConfig是Spring社区的产品,它提供了配置Spring IoC容器的纯Java 方法。因此它有助于避免使用XML配置。使用 JavaConfig的优点在于:
(1)面向对象的配置。由于配置被定义为JavaConfig中的类,因此用户可以充分利用Java中的面向对象功能。一个配置类可以继承另一个,重写它的@Bean方法等。
(2)减少或消除XML配置。基于依赖注入原则的外化配置的好处已被证明。但是,许多开发人员不希望在XML和Java之间来回切换。JavaConfig为开发人员提供了一种纯Java方法来配置与 XML 配置概念相似的Spring容器。从技术角度来讲,只使用 JavaConfig配置类来配置容器是可行的,但实际上很多人认为将JavaConfig与XML混合匹配是理想的。
(3)类型安全和重构友好。JavaConfig提供了一种类型安全的方法来配置Spring容器。由于Java5.0对泛型的支持,现在可以按类型而不是按名称检索bean,不需要任何强制转换或基于字符串的查找。
4、如何重新加载Spring Boot上的更改,而无需重新启动服务器?
答:
这可以使用 DEV 工具来实现。通过这种依赖关系,您可以节省任何更改,嵌入式tomcat 将重新启动。Spring Boot 有一个开发工具(DevTools)模块,它有助于提高开发人员的生产力。Java 开发人员面临的一个主要挑战是将文件更改自动部署到服务器并自动重启服务器。开发人员可以重新加载 Spring Boot 上的更改,而无需重新启动服务器。这将消除每次手动部署更改的需要。Spring Boot 在发布它的第一个版本时没有这个功能。这是开发人员最需要的功能。DevTools 模块完全满足开发人员的需求。该模块将在生产环境中被禁用。它还提供 H2 数据库控制台以更好地测试应用程序。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
5、Spring Boot中的监视器是什么?
答:
Spring boot actuator是spring启动框架中的重要功能之一。Spring boot监视器可帮助您访问生产环境中正在运行的应用程序的当前状态。有几个指标必须在生产环境中进行检查和监控。即使一些外部应用程序可能正在使用这些服务来向相关人员触发警报消息。监视器模块公开了一组可直接作为HTTP URL访问的REST端点来检查状态。
总结
该面试题答案解析完整文档获取方式:微服务面试题总结
以上是关于2021最新版微服务面试题总结(65道题含答案解析)的主要内容,如果未能解决你的问题,请参考以下文章
2021最新版Elasticsearch面试题总结(24道题含答案解析)
2021最新版数据结构+算法面试题总结(9+20道题含答案解析)