继2019年必须掌握的29个微服务面试问题(上),现在整理了29道剩余的微服务面试题,希望对你有所帮助!
A:我见过许多开发者在这个问题上摸索。毕竟,在面试微服务架构师角色时,他们会被问到这个问题,所以承认它的缺点可能有点棘手。以下是一些很好的答案:
它们需要大量协作 - 微服务需要大量的合作。不同的微服务模块,可能分散在不同的团队,团队之间需要始终保持良好的同步。
他们需要建立繁重的架构 - 系统是分布式的,架构涉及很多。
他们需要过多的计划来处理操作开销 - 如果您计划使用微服务架构,则需要为操作开销做好准备。
需要熟练的专业人员,他们可以支持异构分布的微服务。
A: PACT是一个开源工具。它有助于测试消费者和服务提供商之间的互动。消费者服务开发人员首先编写一个测试,该测试定义了与服务提供者的交互模式。测试包括提供者的状态,请求正文和预期的响应。基于此,PACT创建了一个针对其执行测试的存根。输出存储在JSON文件中。
A:主要关注核心领域逻辑。基于领域的模型检测复杂设计。这涉及与公司层面领域方面的专家定期合作,以解决与领域相关的问题并改进应用程序的模型。在回答这个微服务面试问题时,您还需要提及DDD的核心基础知识。他们是:
DDD主要关注领域逻辑和领域本身。
复杂的设计完全基于领域的模型。
为了改进模型的设计并解决任何新出现的问题,DDD不断与公司领域方面的专家合作。
Q:什么是耦合和凝聚力?
A:组件之间依赖关系强度的度量被认为是耦合。一个好的设计总是被认为具有高内聚力和低耦合性。
面试官经常会问起凝聚力。它也是另一个测量单位。更像是一个模块内部的元素保持结合的程度。
必须记住,设计微服务的一个重要关键是低耦合和高内聚的组合。当低耦合时,服务对其他服务的依赖很少。这样可以保持服务的完整性。在高内聚性中,将所有相关逻辑保存在服务中成为可能。否则,服务将尝试彼此通信,从而影响整体性能。
Q:什么是Oauth?
A:开放授权协议,这允许通过在HTTP服务上启用客户端应用程序(例如第三方提供商Facebook,GitHub等)来访问资源所有者的资源。因此,您可以在不使用其凭据的情况下与另一个站点共享存储在一个站点上的资源。
OAuth允许像Facebook这样的第三方使用最终用户的帐户信息,同时保证其安全(不使用或暴露用户的密码)。它更像是代表用户的中介,同时为服务器提供访问所需信息的令牌。
Q:为什么我们需要微服务容器?
A:要管理基于微服务的应用程序,容器是最简单的选择。它帮助用户单独部署和开发。您还可以使用Docker将微服务封装到容器的镜像中。没有任何额外的依赖或工作,微服务可以使用这些元素。
Q:访问RESTful微服务的方法是什么?
A:另一个经常被问到的微服务面试问题是如何访问RESTful微服务?你可以通过两种方法做到这一点:
使用负载平衡的REST模板。
使用多个微服务。
Q:微服务测试的主要障碍是什么?
A:说到缺点,这里是另一个微服务面试问题,将围绕测试微服务时面临的挑战。
在开始编写集成测试的测试用例之前,测试人员应该全面了解对所有入站和出站过程。
当独立的团队正在开发不同的功能时,协作可能会被证明是一项非常困难的任务。很难找到空闲时间窗口来执行完整的回归测试。
随着微服务数量的增加,系统的复杂性也随之增加。
在从单片架构过渡期间,测试人员必须确保组件之间的内部通信没有中断。
Q:过渡到微服务时的常见错误
A:不仅在开发上,而且在方面流程也经常发生错误。一些常见错误是:
通常开发人员无法概述当前的挑战。
重写已经存在的程序。
职责、时间线和界限没有明确定义。
未能从一开始就实施和确定自动化的范围。
A:这可能是最常见的微服务面试问题之一。在回答这个问题时,你需要记住以下内容:
定义范围。
结合低耦合和高内聚。
创建一个有唯一标识的服务,唯一标识将充当识别源,非常像数据库表中的唯一键。
创建正确的API并在集成过程中特别注意。
限制对数据的访问并将其限制到所需级别。
在请求和响应之间保持顺畅的流程。
自动化大多数流程,以减少时间复杂性。
将表的数量保持在最低水平,以减少空间复杂性。
不断监控架构,发现缺陷及时修复。
每个微服务的数据存储应该分开。
对于每个微服务,都应该有一个独立的构建。
将微服务部署到容器中。
服务器应被视为无状态。
Q:什么是有界上下文?
A:有界上下文是域驱动设计的核心模式。DDD战略设计部门的重点是处理大型模型和团队。DDD通过将大型模型划分为不同的有界上下文并明确其相互关系来处理大型模型。
Q:什么是不同类型的双因素身份认证?
A:执行双因素身份验证需要三种类型的凭据:
一件你知道的事情——比如密码、密码或屏幕锁定模式。
您拥有的物理凭证,如OTP、电话或ATM卡,换句话说,您在外部或第三方设备中拥有的任何类型的凭证。
您的物理身份–如语音认证或生物特征安全,如指纹或眼睛扫描仪。
Q:什么是客户证书?
A:客户端系统用于向远程服务器发出经过身份验证的请求的一种数字证书称为客户端证书。客户端证书在许多相互认证设计中起着非常重要的作用,为请求者的身份提供了强有力的保证。
Q:康威定律是什么?
A:康威定律指出,“设计系统的组织,其产生的设计等同于组织之内、组织之间的沟通结构。”
面试官可能会问反微服务面试问题,比如康威定律与微服务的关系。一些松散耦合的api形成了微服务的体系结构。这种结构非常适合小团队实现自治组件的方式。这种体系结构使组织在重组其工作流程时更加灵活。
Q:如何配置Spring Boot应用程序日志记录?
A: Spring Boot附带了对Log4J2,Java Util Logging和Logback的支持。它通常预先配置为控制台输出。可以通过仅在application.properties文件中指定logging.level来配置它们。
logging.level.spring.framework=Debug
Q:您将如何在微服务上执行安全测试?
A:您需要独立测试各个部分。有三种常见的程序:
代码扫描 - 确保任何代码行都没有错误并且可以复制。
灵活性 - 安全解决方案应该是灵活的,以便可以根据系统的要求进行调整。
适应性 - 安全协议应该灵活和更新,以应对黑客或安全漏洞的新威胁。
Q:什么是幂等性?它是如何使用的?
A: 幂等性指的是这样一种场景:您重复执行一项任务,但最终结果保持不变或类似。
幂等性主要用作数据源或远程服务,当它接收一组以上指令时,它只处理一组指令。
———— / END / ————
聚焦程序员面试
长按订阅↓