35个微服务面试最难以回答的问题

Nginx最近的一项调查显示,36%的企业目前正在使用微服务,另有26%的企业正在研究如何实施这些服务。阅读以更新您对一些重要的微服务面试问题的了解,这些问题很可能是您不知道如何回答的。

最初发布在FullStack.Cafe上 – 再也不会失败你的技术面试

Q1:持续集成意味着什么?

主题:DevOps
难度:⭐

持续集成(CI)是一种开发实践,需要开发人员每天多次将代码集成到共享存储库中。然后通过自动构建验证每个签入,允许团队尽早发现问题。

?来源:edureka.co

Q2:容器化是什么意思?

主题:DevOps
难度:⭐⭐

Containerisation是一种虚拟化策略,作为传统的基于管理程序的虚拟化的替代方案而出现。

在容器化中,操作系统由不同的容器共享,而不是为每个虚拟机克隆。例如,Docker提供了一个容器虚拟化平台,可以作为基于管理程序的安排的良好替代方案。

?来源:linoxide.com

问题3:为什么要选择微服务架构?

主题:微服务
难度:⭐⭐

微服务架构提供了许多优点。这里有几个:

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

?来源:lambdatest.com

Q4:定义微服务架构

主题:微服务
难度:⭐⭐

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

?来源:lambdatest.com

Q5:为什么要选择微服务架构?

主题:微服务
难度:⭐⭐

微服务架构提供了许多优点。这里有几个:

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

?来源:lambdatest.com

Q6:定义微服务架构

主题:微服务
难度:⭐⭐

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

?来源:lambdatest.com

问题7:解释蓝绿色部署技术

主题:DevOps
难度:⭐⭐⭐

蓝绿部署是一种通过运行两个相同的生产环境(称为蓝色和绿色)来减少停机时间和风险的技术。在任何时候,只有一个环境是实时的,实时环境为所有生产流量提供服务。在这个例子中,Blue目前正在使用,而Green则处于闲置状态。

在准备新版本的软件时,部署和测试的最后阶段将在非实时环境中进行:在本例中,为Green。一旦您使用Green部署并完全测试了该软件,就可以切换路由器,以便所有传入的请求现在都转为绿色而不是蓝色。绿色现在已经存在,而蓝色则处于空闲状态。

此技术可以消除因应用程序部署而导致的停机时间 此外,蓝绿色部署可降低风险:如果您的新版本在Green上出现意外情况,您可以立即回切到最后一个版本,切换回蓝色。

?来源:cloudfoundry.org

问题8:您对无服务器模型了解多少?

主题:DevOps
难度:⭐⭐⭐

无服务器指的是开发人员隐藏服务器存在的模型。这意味着您不再需要处理容量,部署,扩展和容错以及操作系统。它将大大减少维护工作,并允许开发人员快速专注于开发代码。

例如:

  • 亚马逊AWS Lambda
  • Azure功能

?来源:linoxide.com

问题9:什么是智能终端和哑管?

主题:微服务
难度:⭐⭐⭐

  • 智能端点只是意味着实际的业务规则和任何其他验证发生在那些端点之后,这些端点的消费者都不会看到这些端点将其视为实际Magic发生的地方。
  • 哑管道是指任何通信手段,其中不进行其他操作,例如验证,它只是在特定通道上传输数据,如果需要,它也可以是可替换的。选择的基础设施通常是愚蠢的(如同仅作为消息路由器那样愚蠢)。它只是意味着路由是管道应该做的唯一功能。

?来源:stackoverflow.com

问题10:您是否认为GraphQL适合设计微服务架构?

主题:微服务
难度:⭐⭐⭐

GraphQL和微服务非常适合,因为GraphQL隐藏了一个事实,即您拥有来自客户端的微服务架构。从后端的角度来看,您希望将所有内容拆分为微服务,但从前端的角度来看,您希望所有数据都来自单个API。使用GraphQL是我所知道的最好的方法,可以让你做到这两点。它允许您将后端拆分为微服务,同时仍为所有应用程序提供单个API,并允许跨不同服务的数据进行连接。

?来源:stackoverflow.com

问题11:微服务架构如何工作?

主题:微服务
难度:⭐⭐⭐

  • 客户端 – 来自不同设备的不同用户发送请求。
  • 身份提供商 – 验证用户或客户身份并颁发安全令牌。
  • API网关 – 处理客户端请求。
  • 静态内容 – 容纳系统的所有内容。
  • 管理 – 在节点上平衡服务并识别故障。
  • 服务发现 – 查找微服务之间通信路径的指南。
  • 内容交付网络 – 代理服务器及其数据中心的分布式网络。
  • 远程服务 – 启用驻留在IT设备网络上的远程访问信息。

?来源:edureka.co

问题12:单片,SOA和微服务架构有什么区别?

主题:微服务
难度:⭐⭐⭐

  • 单片体系结构类似于大容器,其中应用程序的所有软件组件组装在一起并紧密盘点。
  • 面向服务的体系结构是一组彼此通信的服务。通信可以涉及简单的数据传递,也可以涉及两个或多个协调某些活动的服务。
  • 微服务架构是一种架构风格,它将应用程序构建为以业务域为模型的小型自治服务集合。

?来源:edureka.co

问题13:我们如何进行跨功能测试?

主题:微服务
难度:⭐⭐⭐

跨功能测试是对非功能性需求的验证。这些要求是系统的特征,不能像普通特征那样实现。例如。系统支持的并发用户数,站点的可用性等。

?来源:edureka.co

问题14:微服务和单片架构有哪些主要区别?

主题:微服务
难度:⭐⭐⭐

微服务

  • 服务启动很快
  • 微服务是松散耦合的架构。
  • 在单个数据模型中完成的更改不会影响其他微服务。
  • 微服务专注于产品,而非项目

单片架构

  • 服务启动需要时间
  • 单片架构大多紧密耦合。
  • 数据模型中的任何更改都会影响整个数据库
  • Monolithic强调整个项目

?来源:edureka.co

问题15:虚拟化如何在低水平上运行?

主题:Docker
难度:⭐⭐⭐⭐

VM管理器超越CPU环0(或较新CPU中的“根模式”)并拦截来宾操作系统发出的所有特权调用,以创建客户操作系统具有自己的硬件的错觉。有趣的事实:在1998年之前,人们认为在x86架构中无法实现这一点,因为没有办法进行这种拦截。VMWare的人员是第一个有想法重写内存中的可执行字节以实现客户操作系统的特权调用的人。

实际效果是虚拟化允许您在同一硬件上运行两个完全不同的操作系统。每个客户操作系统都经历了引导,加载内核等所有过程。您可以拥有非常严格的安全性,例如,客户操作系统无法完全访问主机操作系统或其他客户并搞砸了。

?来源:stackoverflow.com

Q16:什么是半虚拟化?

主题:Docker
难度:⭐⭐⭐⭐

半虚拟化,也称为Type 1虚拟机管理程序,直接在硬件上运行,或“裸机”,并直接向运行在其上的虚拟机提供虚拟化服务。它可以帮助操作系统,虚拟化硬件和真实硬件协作以实现最佳性能。这些管理程序通常具有相当小的占用空间,并且本身不需要大量资源。

此类别中的示例包括Xen,KVM等。

?来源:stackoverflow.com

Q17:什么是幂等?

主题:微服务
难度:⭐⭐⭐⭐

幂等性是指您重复执行任务但最终结果保持不变或类似的情况。

?来源:lambdatest.com

问题18:微服务架构的优缺点是什么?

主题:微服务
难度:⭐⭐⭐⭐

优点:

  • 自由使用不同的技术
  • 每个微服务都侧重于单一功能
  • 支持单个可部署单元
  • 允许频繁发布软件
  • 确保每项服务的安全性
  • 多个服务是并行开发和部署的

缺点:

  • 增加故障排除挑战
  • 由于远程呼叫而增加延迟
  • 增加了配置和其他操作的工作量
  • 难以保持交易安全
  • 艰难地跨越各种边界跟踪数据
  • 难以在服务之间进行编码

?来源:edureka.co

问题19:架构师在微服务架构中的角色是什么?

主题:微服务
难度:⭐⭐⭐⭐

微服务架构中的架构师扮演以下角色:

  • 决定整个软件系统的布局。
  • 帮助确定组件的分区。因此,他们确保组件相互粘合,但不紧密耦合。
  • 与开发人员共同编写代码,了解日常生活中面临的挑战。
  • 为开发微服务的团队提供某些工具和技术的建议。
  • 提供技术治理,以便技术开发团队遵循微服务原则。

?来源:edureka.co

问题20:提到API网关的一些优点和缺点

主题:微服务
难度:⭐⭐⭐⭐

有一些:

  • 使用API​​网关的一个主要好处是它封装了应用程序的内部结构。客户端只需与网关通信,而不必调用特定服务。
  • 它是另一个必须开发,部署和管理的高可用组件。API Gateway也存在开发瓶颈的风险。
  • 开发人员必须更新API网关才能公开每个微服务的端点。

?来源:nginx.com

问题21:什么是物化视图模式以及何时使用它?

主题:微服务
难度:⭐⭐⭐⭐

物化视图模式是聚合来自多个微服务的数据的解决方案,当我们需要实现从多个微服务检索数据的查询时使用。在这种方法中,我们事先(在实际查询发生之前准备非规范化数据)生成一个只读表,其中包含多个微服务所拥有的数据。该表格的格式适合客户端应用程序的需求或API网关。

关键点在于物化视图及其包含的数据是完全一次性的,因为它可以完全从源数据存储重建。

这种方法不仅解决了如何跨微服务进行查询和连接的问题,而且与复杂连接相比,它还显着提高了性能,因为您已经拥有了查询表中应用程序所需的数据。

?来源:microsoft.com

Q22:什么是幂等?

主题:微服务
难度:⭐⭐⭐⭐

幂等性是指您重复执行任务但最终结果保持不变或类似的情况。

?来源:lambdatest.com

问题23:合约测试你了解什么?

主题:微服务
难度:⭐⭐⭐⭐

根据Martin Flower的说法,合约测试是在外部服务边界进行的测试,用于验证其是否符合消费服务所预期的合约。

此外,合约测试不会深入测试服务的行为。相反,它测试服务调用的输入和输出包含所需的属性和响应延迟,吞吐量在允许的限制内。

?来源:edureka.co

问题24:架构师在微服务架构中的角色是什么?

主题:微服务
难度:⭐⭐⭐⭐

微服务架构中的架构师扮演以下角色:

  • 决定整个软件系统的布局。
  • 帮助确定组件的分区。因此,他们确保组件相互粘合,但不紧密耦合。
  • 与开发人员共同编写代码,了解日常生活中面临的挑战。
  • 为开发微服务的团队提供某些工具和技术的建议。
  • 提供技术治理,以便技术开发团队遵循微服务原则。

?来源:edureka.co

问题25:提到API网关的一些优点和缺点

主题:微服务
难度:⭐⭐⭐⭐

有一些:

  • 使用API​​网关的一个主要好处是它封装了应用程序的内部结构。客户端只需与网关通信,而不必调用特定服务。
  • 它是另一个必须开发,部署和管理的高可用组件。API Gateway也存在开发瓶颈的风险。
  • 开发人员必须更新API网关才能公开每个微服务的端点。

?来源:nginx.com

问题26:内聚和耦合有什么区别?

主题:微服务
难度:⭐⭐⭐⭐⭐

内聚是指类(或模块)可以做什么。低凝聚力意味着班级做了各种各样的行动 – 它是广泛的,没有关注它应该做什么。高凝聚力意味着价格专注于应该做的事情,即只关注课堂意图的方法。

至于耦合,它指的是两个类/模块相互依赖或相互依赖的方式。对于低耦合类,更改一个类中的主要内容不应该影响另一个类。高耦合会使您难以更改和维护代码; 由于价格紧密相连,因此进行更改可能需要对整个系统进行改造。

良好的软件设计具有高内聚力和低耦合性。

?来源:edureka.co

问题27:什么是消费者驱动的合约(CDC)?

主题:微服务
难度:⭐⭐⭐⭐⭐

这基本上是用于开发微服务的模式,以便它们可以被外部系统使用。当我们处理微服务时,有一个特定的提供者构建它,并且有一个或多个使用微服务的消费者。

通常,提供程序在XML文档中指定接口。但在消费者驱动的合约中,每个服务消费者都传达了提供商期望的接口。

?来源:edureka.co

问题28:微服务最受欢迎的交易策略是什么

主题:微服务
难度:⭐⭐⭐⭐⭐

微服务引入了最终的一致性问题,因为它们非常值得坚持去中心化的数据管理。使用monolith,您可以在单个事务中一起更新大量事物。微服务需要多个资源来更新,并且分布式事务不受欢迎(有充分理由)。所以现在,开发人员需要了解一致性问题,并在做任何代码后悔的事情之前弄清楚如何检测事情何时不同步。

想想交易如何发生以及对您的服务有何意义,您可以实现一个不执行原始操作的回滚机制,或者一个保留原始操作的两阶段提交系统,直到被告知真实。

金融服务总是这样做 – 如果我想把钱从我的银行转到你的银行,就没有像你在数据库中那样的单一交易。您不知道银行正在运行哪些系统,因此必须像对待您的微服务一样有效地对待每个系统。在这种情况下,我的银行会将我的帐户从我的帐户转移到一个持有帐户,然后告诉您的银行他们有一些钱,如果发送失败,我的银行将用他们尝试发送的钱退还我的帐户。

?来源:softwareengineering.stackexchange.com

问题29:为什么人们会在2PC上使用传奇,反之亦然?

主题:微服务
难度:⭐⭐⭐⭐⭐

以下是我知道用于实现分布式事务的两种方法:

  • 两阶段提交(2PC)
  • 传奇

2PC是应用程序通过平台的支持透明地利用全局ACID事务的协议。作为平台的嵌入,据我所知,它对业务逻辑和应用程序代码是透明的。

另一方面,Sagas是一系列本地事务,其中每个本地事务变异并持久化实体以及指示全局事务的阶段并提交更改的一些标志。换句话说,事务的状态是域模型的一部分。回滚是进行一系列“倒置”交易的问题。在两种情况下,服务发出的事件都会触发这些本地事务。

  • 通常,2PC用于即时交易。
  • 通常,Sagas用于长期交易。

我个人认为Saga能够做2PC可以做的事情,但是他们有实现重做机制的开销。相反不准确。我认为Sagas是通用的,而2PC涉及平台/供应商锁定并且缺乏平台独立性。

?来源:stackoverflow.com

Q30:提供“智能管道”和“哑终点”的示例

主题:微服务
难度:⭐⭐⭐⭐⭐

系统中的组件使用“管道”(HTTP / S,队列等)来相互通信。通常,这些管道流经ESB(企业服务总线),后者对组件之间传递的消息执行许多操作。

它可能会:

  • 安全检查
  • 路由
  • 业务流程/验证
  • 转型

一旦完成这些任务,消息将被转发到“端点”组件。这是“智能管道”的一个例子,因为许多逻辑和处理驻留在ESB(“管道”系统的一部分)内。然后,当ESB完成所有工作时,端点可能会“哑”。

“智能端点和哑管”提倡相反的情况。通信通道应该被剥夺业务处理和逻辑,并且应该只在组件之间分发消息。然后是组件本身对这些消息进行处理/逻辑/验证等。

?来源:stackoverflow.com

问题31:说出SOA和微服务之间的主要区别?

主题:微服务
难度:⭐⭐⭐⭐⭐

  • SOA使用企业服务总线进行通信,而微服务使用更简单的消息传递系统。
  • 每个微服务独立存储数据,而SOA组件共享相同的存储。
  • 对于微服务,通常使用云,而SOA应用服务器则更常见。
  • SOA仍然是一块巨石,为了进行更改,您需要更改整个架构。
  • SOA仅使用重量级技术和协议(如SOAP等),而微服务则是更精简,更灵活,更灵活的方法(REST / GraphQL)。

?来源:quora.com

问题32:什么是消费者驱动的合约(CDC)?

主题:微服务
难度:⭐⭐⭐⭐⭐

这基本上是用于开发微服务的模式,以便它们可以被外部系统使用。当我们处理微服务时,有一个特定的提供者构建它,并且有一个或多个使用微服务的消费者。

通常,提供程序在XML文档中指定接口。但在消费者驱动的合约中,每个服务消费者都传达了提供商期望的接口。

?来源:edureka.co

问题33:微服务中的反应性扩展是什么?

主题:微服务
难度:⭐⭐⭐⭐⭐

Reactive Extensions也称为Rx。这是一种设计方法,我们通过调用多个服务来收集结果,然后编译组合响应。这些调用可以是同步或异步,阻塞或非阻塞。Rx是分布式系统中非常流行的工具,与传统流程相反。

?来源:edureka.co

问题34:为什么人们会使用sagas而不是2PC,反之亦然?

主题:微服务
难度:⭐⭐⭐⭐⭐

以下是我知道用于实现分布式事务的两种方法:

  • 两阶段提交(2PC)
  • 传奇

2PC是应用程序通过平台的支持透明地利用全局ACID事务的协议。作为平台的嵌入,据我所知,它对业务逻辑和应用程序代码是透明的。

另一方面,Sagas是一系列本地事务,其中每个本地事务变异并持久化实体以及指示全局事务的阶段并提交更改的一些标志。换句话说,事务的状态是域模型的一部分。回滚是进行一系列“倒置”交易的问题。在两种情况下,服务发出的事件都会触发这些本地事务。

  • 通常,2PC用于即时交易。
  • 通常,Sagas用于长期交易。

我个人认为Saga能够做2PC可以做的事情,但是他们有实现重做机制的开销。相反不准确。我认为Sagas是通用的,而2PC涉及平台/供应商锁定并且缺乏平台独立性。

?来源:stackoverflow.com

问题35:您如何实现微服务架构的SSO?

主题:微服务
难度:⭐⭐⭐⭐⭐

使用令牌添加身份服务并通过它授权服务访问。任何受保护资源的服务都将与Identity服务通信,以确保其拥有的凭据(令牌)有效。如果不是,它将重定向用户进行身份验证。一旦令牌被验证,它就可以保存在会话中,因此用户会话中的后续呼叫不必进行额外的呼叫。如果需要在该会话中刷新令牌,您还可以创建预定作业。

解决此问题的一种好方法是使用OAuth 2协议。在这种情况下,您可以使用OAuth 2.0端点进行身份验证,并且该令牌将添加到HTTP标头以调用您的域。所有服务都应从该域路由,以便您可以从HTTP标头获取令牌。

?来源:stackoverflow.com

谢谢?阅读,祝你的面试好运
如果你喜欢,请与你的开发者分享这篇文章吧
在www.fullstack.cafe上查看更多FullStack面试问题与解答

 

资讯来源:由0x资讯编译自DEV,原文:https://dev.to/aershov24/35-microservices-interview-questions-you-most-likely-can-t-answer-2eoc ,版权归作者所有,未经许可,不得转载
你可能还喜欢