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

这29个微服务面试题基本涵盖了方方面,希望对你有所帮助!

一、什么是Spring Cloud?

在微服务中,SpringCloud是一个提供与外部系统集成的系统。它是一个敏捷的框架,可以短平快构建应用程序。与有限数量的数据处理相关联,它在微服务体系结构中起着非常重要的作用。
以下为 Spring Cloud 的核心特性:

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

二、什么是Spring Boot?

Spring boot是微服务面试问题的主要话题。
随着新功能的加入,Spring变得越来越复杂。无论何时启动新项目,都必须添加新的构建路径或Maven依赖项。简而言之,你需要从头开始做每件事。Spring Boot是一种帮助您避免所有代码配置的解决方案。

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

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

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

四、Actuator在Spring Boot中的作用

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

五、如何在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();
}
}

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

无论何时创建Java应用程序,都可以通过两种方法进行部署:
使用外部的应用程序容器。
将容器嵌入jar文件中。
Spring Boot包含Jetty,Tomcat和Undertow服务器,所有服务器都是嵌入式的。
Jetty - 用于大量项目,Eclipse Jetty可以嵌入到框架,应用程序服务器,工具和集群中。
Tomcat - Apache Tomcat是一个开源JavaServer Pages实现,可以很好地与嵌入式系统配合使用。
Undertow - 一个灵活而突出的Web服务器,它使用小型单一处理程序来开发Web服务器。

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

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

八、什么是Semantic监控?

它结合了对整个应用程序的监控以及自动化测试。语义监控的主要好处是找出对您的业务更有利可图的因素。
从业务角度来看,语义监控以及服务层监控可以监控微服务。一旦检测到问题,它们就可以实现更快的隔离和 错误分类,从而减少修复所需的主要时间。它对服务层和事务层进行分类,以确定受可用性或性能不佳影响的事务。

九如何设置服务发现?

有多种方法可以设置服务发现。我将选择我认为效率最高的那个,Netflix的Eureka。这是一个简单的程序,不会对应用程序造成太大影响。此外,它支持多种类型的Web应用程序。
Eureka配置包括两个步骤 - 客户端配置和服务器配置。

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

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

十、为什么要选择微服务架构?

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

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

十一、为什么在微服务中需要Reports报告和Dashboards仪表板?

报告和仪表板主要用于监视和维护微服务。有多种工具可以帮助实现此目的。报告 和仪表板可用于:
找出哪些微服务公开了哪些资源。
找出组件发生变化时受影响的服务。
提供一个简单的点,只要需要文档,就可以访问它。
部署的组件的版本。

十二、为什么人们会犹豫使用微服务?

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

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

他们需要建立繁重的架构 - 系统是分布式的,架构涉及很多。
他们需要过多的计划来处理操作开销 - 如果您计划使用微服务架构,则需要为操作开销做好准备。
需要熟练的专业人员,他们可以支持异构分布的微服务。

十三、PACT如何运作?

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

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

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

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

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

组件之间依赖关系强度的度量被认为是耦合。一个好的设计总是被认为具有高内聚力和低耦合性。
面试官经常会问起凝聚力。它也是另一个测量单位。更像是一个模块内部的元素保持结合的程度。
必须记住,设计微服务的一个重要关键是低耦合和高内聚的组合。当低耦合时,服务对其他服务的依赖很少。这样可以保持服务的完整性。在高内聚性中,将所有相关逻辑保存在服务中成为可能。否则,服务将尝试彼此通信,从而影响整体性能。

十六、什么是Oauth?

开放授权协议,这允许通过在HTTP服务上启用客户端应用程序(例如第三方提供商Facebook,GitHub等)来访问资源所有者的资源。因此,您可以在不使用其凭据的情况下与另一个站点共享存储在一个站点上的资源。

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

十七、为什么我们需要微服务容器?

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

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

另一个经常被问到的微服务面试问题是如何访问RESTful微服务?你可以通过两种方法做到这一点:

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

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

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

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

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

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

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

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

这可能是最常见的微服务面试问题之一。在回答这个问题时,你需要记住以下内容:

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

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

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

@WebMvcTest(value = ToTestController.class, secure = false):

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

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

二十四、什么是不同类型的双因素身份认证?

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

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

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

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

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

康威定律指出,“设计系统的组织,其产生的设计等同于组织之内、组织之间的沟通结构。”
面试官可能会问反微服务面试问题,比如康威定律与微服务的关系。一些松散耦合的api形成了微服务的体系结构。这种结构非常适合小团队实现自治组件的方式。这种体系结构使组织在重组其工作流程时更加灵活。

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

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

logging.level.spring.framework=Debug

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

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

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

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

幂等性指的是这样一种场景:您重复执行一项任务,但最终结果保持不变或类似。
幂等性主要用作数据源或远程服务,当它接收一组以上指令时,它只处理一组指令。

读者福利、完整面试题【含答案】Java核心笔记,Java架构面试专题整合千道(pdf文档)

免费获取Java学习笔记,面试,文档以及视频

原文地址:https://www.cnblogs.com/bianchengrufeng/p/11150341.html

时间: 2024-11-05 21:38:04

2019年必须掌握的29个微服务面试问题(含答案解析)的相关文章

微服务面试集合

1.50个微服务面试题 https://cloud.tencent.com/developer/article/1346868 顶级微服务面试问题 根据Gartner的说法,微服务是云开发的新应用平台.微服务是独立部署和管理的,一旦在容器内实现,它们与底层操作系统的交互很少. 因此,如果您计划在微服务中开始您的职业生涯,那么现在正是潜入技术处于新生状态的时候.因此,为了帮助您准备面试,我提出了微服务面试问题和答案博客. 在这个微服务面试问题博客中,我收集了面试官最常问的问题.这些问题是在咨询微服

2019年12道RabbitMQ高频面试题你都会了吗?(含答案解析)

RabbitMQ 面试题 1.什么是 rabbitmq 2.为什么要使用 rabbitmq 3.使用 rabbitmq 的场景 4.如何确保消息正确地发送至 RabbitMQ? 如何确保消息接收方消费了消息? 5.如何避免消息重复投递或重复消费? 6.消息基于什么传输? 7.消息如何分发? 8.消息怎么路由? 9.如何确保消息不丢失? 10.使用 RabbitMQ 有什么好处? 11.RabbitMQ 的集群 12.mq 的缺点 1.什么是 rabbitmq 采用 AMQP 高级消息队列协议的一

打造仿猫眼项目 以Dubbo为核心解锁微服务 高清无密 百度网盘

应用Dubbo框架打造仿猫眼项目 理解微服务核心思想 Dubbo作为主流的微服务框架之一,为开发人员带来非常多的便利.本门课程结合"仿猫眼"项目,分别针对Dubbo中的重要特性.微服务中核心内容以及面试中的常见问题,进行归纳整理,强化讲解,为你提供从零到面试的一条龙服务. 第1章 微服务入门 本章中将概要介绍微服务与传统应用之间的差异与实现优势,以便于帮助同学们更加清晰微服务在项目开发中的定位. 1-1 课程导学 1-2 传统应用带来的问题 1-3 微服务概述 第2章 演示环境构建 本

打造仿猫眼项目 以Dubbo为核心解锁微服务

下载地址:百度网盘下载 第1章 微服务入门本章中将概要介绍微服务与传统应用之间的差异与实现优势,以便于帮助同学们更加清晰微服务在项目开发中的定位. 1-1 课程导学1-2 传统应用带来的问题1-3 微服务概述 第2章 演示环境构建本章中将通过一系列的基本演示,让同学们可以对Dubbo有一个快速直观的认识.当前项目中构建了目前Dubbo的两种主流兼容框架Spring和Springboot,并且都进行了Dubbo集成,以便于适应多种需求下的应对使用. 2-1 基础环境构建介绍2-2 Spring基础

Java程序员金九银十跳槽面试,微服务架构是你必须过的坎

近几年,微服务架构迅速在整个技术社区窜红,被认为是 IT 软件架构的未来方向.一线互联网公司由于具有大量的业务体量和业务场景,比如阿里.百度.网易,很早就开始入坑微服务架构. 但说起微服务,不少人还是有这样的困惑:"作为一个开发,微服务架构是不是和我关系不大?那不都是架构师的事吗?"关于这个问题,我来谈谈自己的看法.微服务是当下最火热的后端架构之一.不管你是一个什么级别的程序员,也不论你在一个什么体量的公司,服务化都是你迟早会遇到的难题.实践微服务的过程本身也是一个升级打怪的过程,这中

微服务架构实战160讲

微服务架构实战160讲 其它学习课程目录: 其它学习课程目录: 从0开始学微服务 面试官绝杀:系统是如何支撑高并发的? 分布式技术原理与算法解析 消息队列高手课 从0开始学架构 微服务 一种架构模式,提倡将单一应用程序划分成一组小的服务,服务之间互相协调.互相配合,为用户提供最终价值.每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(RESTful API).每个服务都围绕着具体的业务进行构建,并且能够被独立地部署到生产环境.类生产环境等.另外,应尽量避免统一的.集中式的服

2019年微服务实践第一课,网易&谐云&蘑菇街&奥思技术大咖深度分享

微服务的概念最早由Martin Fowler与James Lewis于2014年共同提出,核心思想是围绕业务能力组织服务,各个微服务可被独立部署,服务间是松耦合的关系,以及数据和治理的去中心化管理.微服务能够帮助企业应对业务复杂.频繁更新以及团队规模庞大带来的挑战,实现IT对业务创新的驱动. 1月12日,网易云主办的"微服务实践沙龙"将走进深圳,邀请业界微服务的先行者,分享落地实践过程中总结的干货经验. 报名地址:点击报名 时间:2019年1月12日 13:30-17:00 地点:广东

k8s原生微服务管理工具helm-v3的使用初探实践(1)

Helm-v3应用包管理器 3.1 为什么需要Helm?K8S上的应用对象,都是由特定的资源描述组成,包括deployment.service等.都保存各自文件中或者集中写到一个配置文件.然后kubectl apply –f 部署. 为什么使用helm?在k8s中,当我们去部署应用的时候,一般都是使用yaml文件去管理我们的应用的发布,比如像微服务,其中包括deployment,service,configmap,ingress,但是如果我们有上百个微服务的话,每次的修改涉及也都会比较多,感觉就

使用Ratpack和Spring Boot打造高性能的JVM微服务应用

使用Ratpack和Spring Boot打造高性能的JVM微服务应用 这是我为InfoQ翻译的文章,原文地址:Build High Performance JVM Microservices with Ratpack & Spring Boot,InfoQ上的中文地址:使用Ratpack与Spring Boot构建高性能JVM微服务. 在微服务天堂中Ratpack和Spring Boot是天造地设的一对.它们都是以开发者为中心的运行于JVM之上的web框架,侧重于生产率.效率以及轻量级部署.他