29个你必须掌握的微服务面试问题(含答案解析)

这29个微服务面试题基本涵盖了方方面,但愿对你有所帮助。web

1、什么是Spring Cloud?

在微服务中,SpringCloud是一个提供与外部系统集成的系统。它是一个敏捷的框架,能够短平快构建应用程序。与有限数量的数据处理相关联,它在微服务体系结构中起着很是重要的做用。面试

如下为 Spring Cloud 的核心特性:spring

  1. 版本化/分布式配置。
  2. 服务注册和发现。
  3. 服务和服务之间的调用。
  4. 路由。
  5. 断路器和负载平衡。
  6. 分布式消息传递。

2、什么是Spring Boot?

Spring boot是微服务面试问题的主要话题。数据库

随着新功能的加入,Spring变得愈来愈复杂。不管什么时候启动新项目,都必须添加新的构建路径或Maven依赖项。简而言之,你须要从头开始作每件事。Spring Boot是一种帮助您避免全部代码配置的解决方案。api

3、如何覆盖Spring Boot项目的默认属性?

这能够经过在application.properties文件中指定属性来完成。安全

例如,在Spring MVC应用程序中,您必须指定后缀和前缀。这能够经过在application.properties文件中输入下面提到的属性来完成。bash

  • 对于后缀 - spring.mvc.view.suffix: .jsp
  • 对于前缀 - spring.mvc.view.prefix: /WEB-INF/

4、Actuator在Spring Boot中的做用

它是最重要的功能之一,可帮助您访问在生产环境中运行的应用程序的当前状态。有多个指标可用于检查当前状态。它们还为RESTful Web服务提供端点,能够简单地用于检查不一样的度量标准。服务器

5、如何在Spring Boot应用程序中实现Spring安全性?

实施须要最少的配置。您须要作的就是spring-boot-starter-security在pom.xml文件中添加starter。您还须要建立一个Spring配置类,它将覆盖所需的方法,同时扩展 WebSecurityConfigurerAdapter 应用程序中的安全性。这是一些示例代码:架构

package com.gkatzioura.security.securityendpoints.config; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.security.config.annotation.web.builders.HttpSecurity; 
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; 
@Configuration 
public class SecurityConfig extends WebSecurityConfigurerAdapter {     
@Override     
protected void configure(HttpSecurity http) throws Exception {         
http.authorizeRequests()             
.antMatchers("/welcome").permitAll()             
.anyRequest().authenticated()             
.and()             
.formLogin()             
.permitAll()             
.and()             
.logout()             
.permitAll();     
} 
}复制代码

6、Spring Boot支持哪些嵌入式容器?

不管什么时候建立Java应用程序,均可以经过两种方法进行部署:mvc

使用外部的应用程序容器。

将容器嵌入jar文件中。

Spring Boot包含Jetty,Tomcat和Undertow服务器,全部服务器都是嵌入式的。

Jetty - 用于大量项目,Eclipse Jetty能够嵌入到框架,应用程序服务器,工具和集群中。

Tomcat - Apache Tomcat是一个开源JavaServer Pages实现,能够很好地与嵌入式系统配合使用。

Undertow - 一个灵活而突出的Web服务器,它使用小型单一处理程序来开发Web服务器。

7、微服务的端到端测试意味着什么?

端到端测试 验证工做流中的全部流程,以检查一切是否按预期工做。它还确保系统以统一的方式工做,从而知足业务需求。

8、什么是Semantic监控?

它结合了对整个应用程序的监控以及自动化测试。语义监控的主要好处是找出对您的业务更有利可图的因素。

从业务角度来看,语义监控以及服务层监控能够监控微服务。一旦检测到问题,它们就能够实现更快的隔离和 错误分类,从而减小修复所需的主要时间。它对服务层和事务层进行分类,以肯定受可用性或性能不佳影响的事务。

九如何设置服务发现?

有多种方法能够设置服务发现。我将选择我认为效率最高的那个,Netflix的Eureka。这是一个简单的程序,不会对应用程序形成太大影响。此外,它支持多种类型的Web应用程序。

Eureka配置包括两个步骤 - 客户端配置和服务器配置。

使用属性文件能够轻松完成客户端配置。在clas spath中,Eureka搜索一个eureka-client.properties文件。它还搜索由特定于环境的属性文件中的环境引发的覆盖。

对于服务器配置,您必须首先配置客户端。完成后,服务器启动一个客户端,该客户端用于查找其余服务器。。默认状况下,Eureka服务器使用客户端配置来查找对等服务器。

10、为何要选择微服务架构?

这是一个很是常见的微服务面试问题,你应该准备好了!微服务架构提供了许多优势。这里有几个:

  1. 微服务能够轻松适应其余框架或技术。
  2. 单个进程的失败不会影响整个系统。
  3. 为大企业和小型团队提供支持。
  4. 能够在相对较短的时间内独立部署。

11、为何在微服务中须要Reports报告和Dashboards仪表板?

报告和仪表板主要用于监视和维护微服务。有多种工具能够帮助实现此目的。报告 和仪表板可用于:

找出哪些微服务公开了哪些资源。

找出组件发生变化时受影响的服务。

提供一个简单的点,只要须要文档,就能够访问它。

部署的组件的版本。

12、为何人们会犹豫使用微服务?

我见过许多开发者在这个问题上摸索。毕竟,在面试微服务架构师角色时,他们会被问到这个问题,因此认可它的缺点可能有点棘手。如下是一些很好的答案:

它们须要大量协做 - 微服务须要大量的合做。不一样的微服务模块,可能分散在不一样的团队,团队之间须要始终保持良好的同步。

他们须要创建繁重的架构 - 系统是分布式的,架构涉及不少。

他们须要过多的计划来处理操做开销 - 若是您计划使用微服务架构,则须要为操做开销作好准备。

须要熟练的专业人员,他们能够支持异构分布的微服务。

十3、PACT如何运做?

PACT是一个开源工具。它有助于测试消费者和服务提供商之间的互动。消费者服务开发人员首先编写一个测试,该测试定义了与服务提供者的交互模式。测试包括提供者的状态,请求正文和预期的响应。基于此,PACT建立了一个针对其执行测试的存根。输出存储在JSON文件中。

十4、谈一下领域驱动设计

主要关注核心领域逻辑。基于领域的模型检测复杂设计。这涉及与公司层面领域方面的专家按期合做,以解决与领域相关的问题并改进应用程序的模型。在回答这个微服务面试问题时,您还须要说起DDD的核心基础知识。他们是:

  • DDD主要关注领域逻辑和领域自己。
  • 复杂的设计彻底基于领域的模型。
  • 为了改进模型的设计并解决任何新出现的问题,DDD不断与公司领域方面的专家合做。

十5、什么是耦合和凝聚力?

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

面试官常常会问起凝聚力。它也是另外一个测量单位。更像是一个模块内部的元素保持结合的程度。

必须记住,设计微服务的一个重要关键是低耦合和高内聚的组合。当低耦合时,服务对其余服务的依赖不多。这样能够保持服务的完整性。在高内聚性中,将全部相关逻辑保存在服务中成为可能。不然,服务将尝试彼此通讯,从而影响总体性能。

十6、什么是Oauth?

开放受权协议,这容许经过在HTTP服务上启用客户端应用程序(例如第三方提供商Facebook,GitHub等)来访问资源全部者的资源。所以,您能够在不使用其凭据的状况下与另外一个站点共享存储在一个站点上的资源。

OAuth容许像Facebook这样的第三方使用最终用户的账户信息,同时保证其安全(不使用或暴露用户的密码)。它更像是表明用户的中介,同时为服务器提供访问所需信息的令牌。

十7、为何咱们须要微服务容器?

要管理基于微服务的应用程序,容器是最简单的选择。它帮助用户单独部署和开发。您还可使用Docker将微服务封装到容器的镜像中。没有任何额外的依赖或工做,微服务可使用这些元素。

十8、访问RESTful微服务的方法是什么?

另外一个常常被问到的微服务面试问题是如何访问RESTful微服务?你能够经过两种方法作到这一点:

  • 使用负载平衡的REST模板。
  • 使用多个微服务。

十9、微服务测试的主要障碍是什么?

说到缺点,这里是另外一个微服务面试问题,将围绕测试微服务时面临的挑战。

  • 在开始编写集成测试的测试用例以前,测试人员应该全面了解对全部入站和出站过程。
  • 当独立的团队正在开发不一样的功能时,协做可能会被证实是一项很是困难的任务。很难找到空闲时间窗口来执行完整的回归测试。
  • 随着微服务数量的增长,系统的复杂性也随之增长。
  • 在从单片架构过渡期间,测试人员必须确保组件之间的内部通讯没有中断。

二10、过渡到微服务时的常见错误

不只在开发上,并且在方面流程也常常发生错误。一些常见错误是:

  • 一般开发人员没法概述当前的挑战。
  • 重写已经存在的程序。
  • 职责、时间线和界限没有明肯定义。
  • 未能从一开始就实施和肯定自动化的范围。

二11、微服务设计的基础是什么?

这多是最多见的微服务面试问题之一。在回答这个问题时,你须要记住如下内容:

  1. 定义范围。
  2. 结合低耦合和高内聚。
  3. 建立一个有惟一标识的服务,惟一标识将充当识别源,很是像数据库表中的惟一键。
  4. 建立正确的API并在集成过程当中特别注意。
  5. 限制对数据的访问并将其限制到所需级别。
  6. 在请求和响应之间保持顺畅的流程。
  7. 自动化大多数流程,以减小时间复杂性。
  8. 将表的数量保持在最低水平,以减小空间复杂性。
  9. 不断监控架构,发现缺陷及时修复。
  10. 每一个微服务的数据存储应该分开。
  11. 对于每一个微服务,都应该有一个独立的构建。
  12. 将微服务部署到容器中。
  13. 服务器应被视为无状态。

**二12、在Spring MVC应用程序中使用WebMvcTest注释有什么用处?

WebMvcTest注释用于单元测试Spring MVC应用程序。咱们只想启动ToTestController。执行此单元测试时,不会启动全部其余控制器和映射。

@WebMvcTest(value = ToTestController.class, secure = false):复制代码

二十3、什么是有界上下文?

有界上下文是域驱动设计的核心模式。DDD战略设计部门的重点是处理大型模型和团队。DDD经过将大型模型划分为不一样的有界上下文并明确其相互关系来处理大型模型。

二十4、什么是不一样类型的双因素身份认证?

执行双因素身份验证须要三种类型的凭据:

  • 一件你知道的事情——好比密码、密码或屏幕锁定模式。
  • 您拥有的物理凭证,如OTP、电话或ATM卡,换句话说,您在外部或第三方设备中拥有的任何类型的凭证。
  • 您的物理身份–如语音认证或生物特征安全,如指纹或眼睛扫描仪。

二十5、什么是客户证书?

客户端系统用于向远程服务器发出通过身份验证的请求的一种数字证书称为客户端证书。客户端证书在许多相互认证设计中起着很是重要的做用,为请求者的身份提供了强有力的保证。

二十6、康威定律是什么?

康威定律指出,“设计系统的组织,其产生的设计等同于组织以内、组织之间的沟通结构。”

面试官可能会问反微服务面试问题,好比康威定律与微服务的关系。一些松散耦合的api造成了微服务的体系结构。这种结构很是适合小团队实现自治组件的方式。这种体系结构使组织在重组其工做流程时更加灵活。

二十7、如何配置Spring Boot应用程序日志记录?

Spring Boot附带了对Log4J2,Java Util Logging和Logback的支持。它一般预先配置为控制台输出。能够经过仅在application.properties文件中指定logging.level来配置它们。

logging.level.spring.framework=Debug复制代码

二十8、您将如何在微服务上执行安全测试?

您须要独立测试各个部分。有三种常见的程序:

  • 代码扫描 - 确保任何代码行都没有错误而且能够复制。
  • 灵活性 - 安全解决方案应该是灵活的,以即可以根据系统的要求进行调整。
  • 适应性 - 安全协议应该灵活和更新,以应对黑客或安全漏洞的新威胁。

二十9、什么是幂等性?它是如何使用的?

幂等性指的是这样一种场景:您重复执行一项任务,但最终结果保持不变或相似。

幂等性主要用做数据源或远程服务,当它接收一组以上指令时,它只处理一组指令。

相关文章
相关标签/搜索