微服务面试问答

在这篇文章中,我们将从基础到深度全面介绍有关微服务的最重要问题,这将帮助您解决所有困难的面试问题。 因此,您无需担心下一次面试的机会,因为Java Code Geeks在这里为您服务!

下面详细列出并讨论了几乎所有可能提出的问题和答案。 微服务面试问题将引导您完成整个微服务生态系统,并提供有关使用该解决方案的范例的全面知识。 我们对问题进行分类,以提供与每个模块相关的信息。 我们确保您不必在接受微服务采访时认真思考。

目录

微服务基础

1.什么是微服务?

微服务是面向服务的体系结构(SOA)的雕刻类型子类型,可将应用程序构建为松散耦合的服务集合。 在微服务架构中,服务必须具有良好的结构,准则必须紧凑。 将应用程序分解为各种较小的服务的优点是,它增强了可修改性,并使识别,设计和实现应用程序变得更加容易。 通过允许一个小的独立团队分别创建,配置和评估其不同的服务,这也提高了可变性。 通过不断的模块化,这也使个人服务的美感得以体现。 基于微服务的架构允许持续集成和部署。

2.什么是微服务及其架构?

在软件开发中,微服务是一种架构趋势,曾经包含一些小型服务。 此外,每个微服务都限于一个单独的公司应用程序。 所有这些微服务共同构成一个更大或更复杂的应用程序,以满足整个行业的需求。 微服务中最明显的设计元素包括灵活或适应性强,可伸缩性,松散耦合性,可组合性,公司性,组合性,分布式,分散式。

3.微服务架构的优势是什么?

  • 在它们各自的功能和服务的支持下,微服务架构可以在任何应用程序中自动形成和调度。
  • 即使该应用程序的服务之一停止运行,该程序仍然可以运行。
  • 可以使用各种语言和高级功能来为同一程序构造不同的服务。
  • 除了立即平整所有模块之外,还可以根据需要调整单个模块。

4.微服务的一些重要特征是什么?

  • 可以在系统应用程序中分离服务,以便可以整体构建,调整和修改整个应用程序。
  • 微服务模块是分开查看的,因此可以轻松切换和升级。
  • 微服务非常容易,因为它们证明了单个公司的能力。
  • 微服务赋予软件开发团队独立于彼此独立运行的主权,从而可以加速发展。
  • 它导致使用有意识的机械化来持续启动计算机软件,以创建,测量和批准计算机软件。
  • 微服务将软件应用程序视为负责任的品牌,而不是将应用程序视为项目。
  • 在不依赖互操作性的情况下,微服务利用了正确的设备。
  • 微服务可以快速开发和拒绝功能。

5.微服务应用程序有哪些不同功能?

这是微服务采访期间提出的基本问题。 以下是微服务支持的各种功能:

  • 持续开发:持续开发的两个主要流推动了定期启动和应用程序部署,包括持续集成和开发。
  • 基于组件:可以使用适当的等效元素轻松升级,修改或替换每个微服务。
  • 松散耦合:这可以使设备快速有效地构建,并有助于更快地生产品牌。
  • 可伸缩性:按订户数量扩展应用程序更为简单。

6.什么是微服务中的网关?

客户不会直接通过网关访问微服务。 网关调用微服务,并将答案返回给客户。 网关将客户的微服务分开。 它还提供身份验证,日志记录,负载平衡等。

7.您如何监视微服务?

Spring Boot Controller是单个微服务的不错的仪器监视器统计信息。 但是,当您有多个微服务时,很难独立跟踪它们。 为此,我们可以使用诸如Prometheos,Kibana或Graphana之类的开源工具。 Prometheous是基于拉动的监视工具。 它包含,显示并可以按一定间隔激活通知。 Kibana或Grafana是用于数据可视化和监视的仪表板工具。 由于微服务中存在许多依赖关系,因此可以应用AppDynamics,Dynatrace和New Relics,这拉动了微服务之间的依赖关系。

8.您将如何定义微服务的概念?

微服务以体系结构的形式构建应用程序,作为适合公司职业的少量独立服务的集合。 通常,您只需要一点点就可以开始,并且可以一起创建更大的应用程序。 然后,将这些单元按顺序组织,此后将构成蜂巢中较难的部分。 因此,每个单元都已连接但具有自治性,可以根据先决条件进行调整。 这意味着对一个单元的伤害不会影响另一个单元的生产率。 这样可以快速重建被破坏的单元,并且软件可以执行相同的操作。

9.在设计微服务时,应遵循的最佳实践是什么?

这些是每个程序员在微服务设计中必须遵循的行业标准:

  • 每个微服务通常会将信息存储区分开。
  • 在设计微服务时,必须以相同的智能级别组织代码,这一点很重要。
  • 对于每个微服务,还应该设计一个单独的开发。
  • 我们应该确保每个开发都应在容器中使用。
  • 在设计微服务时,始终有必要将服务器视为无状态服务器。

10.解释微服务架构的主要组成部分

以下是微服务架构的主要组成部分,描述如下:

  • 客户端:各种订阅者从各种设备发送查询。
  • 身份提供者:它可以配置用户信息并为用户提供服务令牌。
  • 静态内容:可以长时间存储整个系统功能。
  • API网关:此网关可与多个查询一起使用。
  • 管理:它将平衡端点上的服务,并且还将发现错误之处。
  • CDN:内容交付网络是代理服务器及其各自的数据中心的分布式网络。
  • 服务发现 :这实际上将找到各种微服务之间的通信路径。
  • 远程服务 :它将允许远程访问网络或其他IT设备信息。

11.什么是Spring Cloud?

Spring Cloud是一个用于与微服务中的外部系统集成的系统。 这是一个短暂的范例,可以快速设计应用程序。 它在微服务架构设计中与无限量的信息处理有关,扮演着至关重要的角色。 Spring Cloud在标准用例方面提供了一定程度的实际经验,并且在此之下提供了一系列综合功能:

  • 版本化和分布式配置
  • 发现服务注册
  • 服务电话
  • 路由
  • 断路器和负载平衡
  • 集群状态和领导选举
  • 全局锁和分布式消息传递

进入微服务实现

12.什么是Spring Boot?

引入的附加功能使Spring变得更加复杂。 如果开始新项目,则必须添加新的构建路径或Maven依赖项。 简而言之,您必须从头开始。 Spring Boot是防止所有代码设置的答案。 烹调菜肴时,这些成分可能被认为是Spring。 当您煮菜时,可以接受Spring作为配料。 整个菜都是Spring Boot。

13.解释微服务的三种测试

在微服务架构中,测试分为三大类:

  • 我们可以在较低级别的测试中执行特定的测试,例如质量和单元测试。 这样的测试是完全自动化的。
  • 我们可以在中级进行探索性测试,例如压力测试和可访问性测试。
  • 我们可以在最高水平上执行验收测试,而这些数字通常较少。 它使投资者能够了解各种软件特征。

14.在使用微服务架构时,您面临什么挑战?

开发许多较小的微服务很容易,但是它们有时面临的障碍如下:

  • 自动化组件 :难以优化,因为有各种小型模块可供使用。 我们将必须采用每个模块的构建,部署和监视阶段。
  • 易感性 :很难部署,保留,监督和解决将大量模块保持在一起的问题。 所有模块都必须高度可感知。
  • 配置管理 :通常很难在不同环境中维护模块的配置。
  • 调试 :很难找到每个服务都出错。 集中的日志记录和工作流程对于调试问题至关重要。

15.阐明当今应用程序开发中微服务的基本需求

在软件开发领域,微服务也被认为是一种新模式。 它之所以重要,是因为它可以提高效率和速度。 它还能够有效地维护软件和服务。 有人还称其为可提供更高业务绩效的方法和文化解决方案。 实际上,它在当今的软件开发中起着极其重要的作用,因为它能够有效地部署在整体应用程序的生产中。

16.基于微服务的体系结构首选哪个数据库?

数据库的选择会影响要存储在数据库中的微服务信息的形式。 因此,临时数据,事务数据,过渡数据和操作数据是存储的主要四种数据类型。 选择数据库类型时,请考虑数据存储量和持续时间。 还假设微服务的质量和吞吐量要求。

17.为什么在微服务中需要报表和仪表板?

大多数报告和仪表板都用于监视和维护微服务。 可以使用多种选项来支持这一动机。 可以使用报告和仪表板来:

  • 找出哪些资源可供微服务使用。
  • 找出每当更改模块时受影响的服务。
  • 随时在需要信息时提供即时访问点。
  • 提供有关已部署组件或模块的版本的信息。
  • 使组件具有一定的自我意识和合规性。

18. PACT如何运作?

PACT是开源的工具(免费提供)。 它可以检查客户和服务提供商之间的关系。 它不包含在租约中,但是,极大地提高了应用程序的可靠性。 客户服务开发人员首先编写一个描述服务提供商交互方式的测试。 测试涉及供应商的状态,申请机构和预计的响应。 PACT会生成一份复印件,并以此为基础进行测试。 将输出存储在JSON文件中。

19.什么是耦合和内聚?

耦合可以看作是模块依赖之间的强度计算。 微服务的优良软件设计通常包括高内聚和低耦合。 当您被问到微服务问题时,重要的是要记住,低耦合和高内聚性的结构是设计微服务时必不可少的组成部分。 当服务松散耦合时,对其他服务了解得很少。 因此,服务被保留。 可以在服务中以更高的凝聚力维护所有相关的推理。 在其他情况下,服务将尝试并影响整体质量以进行交互。

高级微服务问题

20.您将如何执行微服务的安全性测试?

在回答有关微服务无法完全测试的微服务问题之前,请向访问者解释。 您必须自己测试零件。 共有三种流行的方法:

代码扫描 –确保每行代码都是错误–免费且可复制。

灵活性 –为了适应系统要求,安全措施应灵活。

适应性 –为了解决垃圾邮件发送者或安全漏洞带来的新问题,安全程序也应进行适应性升级。

21.微服务测试的主要障碍是什么?

  • 在开始为集成测试键入测试用例之前,测试人员应该对所有传入和传出的流程都有全面的了解。
  • 当自治团队实际使用独特功能时,合作可能是一项非常困难的任务。 进行全面回归测试的时间之门可能很难找到。
  • 随着微服务数量的增加,系统的复杂性也随之增加。
  • 从单片架构过渡时,测试人员应确保模块之间的信息交换之间没有干扰。

22.人们为什么在使用微服务时犹豫?

  • 需要大量投资 –微服务需要大量合作。 您的团队应该独立运行,有时可能会更新得太好。
  • 设置繁重的体系结构 –整个系统通常是分散的,体系结构风格很强。
  • 过多规划操作开销 –如果您打算使用微服务架构,则必须为开销操作做好准备。
  • 自主选择人员 –需要合格的专家才能为异构微服务提供全面支持。

23.什么是语义监控?

整个应用程序受到监视,并且计算机化测试进行了组合。 语义监控的主要优势是发现使您的业务更有利可图的质量。 检测到问题后,它可以更快地进行绝缘和故障分类,从而减少了主要维修时间。 检测到问题后,它可以加快绝缘速度并提供紧急医疗错误,从而减少了主要维护时间。 它试图确定受可用性或质量不足影响的传输。

24.我们如何区分部署与微服务发布?

两个不同的MicroServices事件是Deployment和Release。 蓝/绿部署是实现此目的的一种方法。 在这种情况下,同时部署了微服务的两个变体。 但是,实际上只有一个版本提出了真正的要求。 在仔细检查了另一个版本之后,我们切换了版本。 为了使该功能在新发布的版本中正常运行,我们可能会运行冒烟测试套件。 新版本可以根据烟雾测试的结果实时发布。

25.身份验证和授权有什么区别?

身份验证:在公开机密信息之前,身份验证系统定义用户的身份。 保留用户优先的系统或接口的敏感信息非常重要。 然后,用户声明一个人(他或她)或组织的身份。 用户名,密码,指纹等可能是凭据或声明。 应用程序层处理身份验证和不可否认性这类问题。 认证效率低下的方法可能会极大地影响服务的可用性。

授权:使用授权方法来确定要授予已验证用户身份的确切授权。 之前要确保用户的身份,然后再通过检查存储在表和数据库中的条目来授予授权,从而建立用户访问列表。 之前要确保新用户的身份时,才授予授权,然后通过检查存储在表和数据库中的条目来建立权限列表。

26.什么是边界上下文?

域驱动设计领域中的有限上下文是一个中心模式。 DDD的战术设计部分侧重于处理大型模型和团队。 DDD通过将大型模型划分为不同的边界上下文并使其交互明确化来解决大型模型。 DDD处理基于领域模型的产品设计。 模型用作通用语言,可以在软件工程师和现场专业人员之间进行交互。 它还充当计算机软件本身以及将其划分为对象和功能的方式的抽象基础。 为了使系统高效,必须在内部进行统一统一以避免冲突。

27.什么是消费者驱动合同(CDC)?

在以消费者为主导的合同中,每个消费者都在单独的合同中赶上了供应商的期望。 所有这些合同都与提供者共享,以深入了解每个客户必须履行的义务。 为了验证这些义务,提供程序可以创建一个测试套件。 为了验证此类义务,提供程序可以开发一个测试套件。 这使他们能够保持敏捷并做出不影响消费者的改变,并确定遭受必要改变的消费者,以便进行进一步的计划和辩论。 Pacto帮助确保履行这些承诺,并消除了实施义务,从而可以对客户和供应商进行自主测试。 对于他们的测试,供应商还可以与消费者脱钩。 Pacto可以使用合同进行提供商测试,以使消费者形象化。

28.我们如何进行跨功能测试?

对非功能需求的验证是一项跨功能测试。 这些先决条件是不能正常执行的系统功能。 例如。 跨功能测试涉及跨功能需求。 同时获得系统认可的用户数量,站点可用性等。商业用户通常最初并不确定跨功能需求。 但是,他们期望在软件完成并用于开发时使用它们。 在项目本身的初始阶段,向公司询问这些跨职能的期望总是一个好问题。

29.为什么我们在微服务架构中使用关联ID?

相关性ID是连接到引用特定事务或事件链的请求和消息的单个值。 相关ID也称为运输ID。 良好宣传的企业集成模式取决于相关ID的使用。 相关性ID作为非标准HTTP标头形成Java Messaging Service(JMS)的一部分。 但是同样,将关联ID附加到请求上也是不明确的。 您无需使用任何一个。 但是,如果您对利用消息延迟和异步处理的分布式系统进行建模,您将做得足够多,可以在消息中使用相关标识符。

30.在安全上下文中什么是困惑的代理问题?

假设客户发送了输入和输出文件的服务器名称。 服务器构建输入文件并将其存储在输出中。 同样,假设客户的特权少于服务器。 现在还假设有一个“受限制的”文件,其中服务器没有来自客户端的授权。 此时,服务器将编译文件,然后将服务器写入“受限”文件中,如果用户发送了荒谬的输入和“受限”作为输出文件,则该文件将覆盖先前的内容。 客户端在这里没有“受限制的”授权,但是服务器却有。 因此,服务器是已经用于操纵操作的管理员。 这些问题被称为混淆副问题。

31.什么是PACT?

该协议是合同的测试工具。 合同测试为服务(例如API提供者和客户)提供了相互通信的可能性。 确定服务可以交互的唯一方法是通过使用昂贵且脆弱的集成测试,而不进行合同测试。

32.康韦定律是什么?

康韦定律表明,每个系统的设计都会受到组织通讯系统的很大影响。 该法律与软件开发广泛相关,但适用于系统和组织。

33.什么是客户证书?

客户验证证书用于SSL握手以验证客户。 它授权通过客户身份验证证书交换访问服务器的用户。 这样可以确保客户就是他声称的身份。 这样可以确保客户就是他声称的身份。 当Internet用户对服务器进行身份验证时,这将删除数据库的用户用户配置文件中未经验证的条目。

33.如何覆盖Spring Boot项目的默认属性?

我们可以通过在application.properties文件中定义属性来做到这一点。 例如,您应该确定Spring MVC应用程序的后缀和前缀。 可以在application.properties文件中输入以下属性。

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

执行器?

这是使您能够获取开发应用程序当前状态的最基本功能之一。 可以使用多个指标监视当前状态。 它还提供了RESTful Web服务的参数,这些参数可以简单地用于检查各种统计信息。

35.如何在Spring Boot应用程序中实现Spring Security?

为了实现,最少的设置是必需的。 只需将jump-boot-starter-securitystarter添加到pom.xml文件即可。 您还必须生成一个Spring配置类来绕过必要的过程,同时扩展WebSecurityConfigurerAdapter以便在应用程序中提供保护。

36. Spring Boot支持的嵌入式容器

每当您创建Java应用程序时,都可以通过两种方法进行部署:

  • 使用外部应用程序容器。
  • 在您的jar文件中嵌入容器。

跳船,tomcat和Undertow服务器都包含在Spring Boot中。

  • Jetty – Eclipse Jetty可以集成到各种项目中的框架,应用程序服务器,方法和集群中。
  • Tomcat -JavaServer Pages的免费和开放源代码非常好-JavaServer与嵌入式软件的正常运行。
  • Undertow –一种耐用且流行的Web服务器,它使用微小的单个处理程序来开发Web服务器。

37.您对微服务进行端到端测试意味着什么?

端到端测试将检查所有这些功能是否均按计划进行。 所有工作流程程序均已通过验证。 此外,它还保证系统可能正在均匀地工作,从而实现了业务目标。

38.什么是OAuth?

OAuth通过开放授权协议通过HTTP使用第三方服务(如Facebook,GitHub等)轻松访问客户程序,否则将其视为OAuth。 无需凭据,您就可以在各个站点之间共享数据。 OAuth使Facebook之类的第三方可以使用最终用户的帐户详细信息,同时保持其安全(绝不使用或不显示用户的登录信息)。 它在向服务器授予访问请求数据的令牌的同时,还代表订户充当中间人。

39.为什么我们需要用于微服务的容器?

对于处理基于微服务的应用程序,容器是最简单的方法。 用户可以单独部署和开发。 在容器的映像中,您还可以使用Docker隐藏微服务。 微服务可以使用这些功能,而无需任何其他依赖或工作。

40.访问RESTful微服务的方式是什么?

微服务访谈中的一个常见问题是如何访问RESTful微服务。 可以通过以下两种方法进行操作:

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

41.过渡到微服务时常犯的错误

错误经常发生在制造过程以及开发方面。 但是,任何经验丰富的发问者都会在微服务队列中遇到面试问题。 一些常见的问题是:

  • 开发人员经常无法详细说明手头的困难。
  • 重写现有程序。
  • 没有明确划分职责,时间表和限制。
  • 几乎从一开始就没有实现和确定自动化范围。

结论

这些是有关微服务的最重要的问题。 回答这些问题的目的是使您的面试更加轻松。 然而,总是有更多的探索。

如果您喜欢此功能,请订阅我们的时事通讯,以享受每周更新和免费白皮书! 另外,请查看我们的课程以获得更高级的培训!

欢迎您提出您的意见,我们会将其纳入本文!

翻译自: https://www.javacodegeeks.com/2019/04/microservices-interview-questions-and-answers.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值