2019年顶级微服务面试解析 - Go语言中文社区

2019年顶级微服务面试解析


 36%的企业目前正在使用微服务,另有26%的企业正在研究如何实施这些服务。

1.什么是Spring Cloud?

 在微服务中,Spring Cloud是一个提供与外部系统集成的系统。它是一个轻框架,可以快速构建应用程序。与有限数量的数据处理相关联,它在微服务架构中起着非常重要的作用。

对于典型用例,Spring Cloud提供了开箱即用的体验以及下面提到的一系列广泛功能:

版本化和分布式配置。

发现服务注册。

服务对服务请求。。

路由。

断路器和负载平衡。

集群和选举。

全局锁和分布式消息传递。

2.什么是spring boot?

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

随着新功能的增加,Spring不断变得越来越复杂。无论何时启动新项目,都必须添加新的构建路径或Maven依赖项。简而言之,您需要从头开始做所有事情。Spring Boot是一种可以帮助您避免所有代码配置的解决方案。 

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

这可以通过在application.properties文件中指定属性来完成。

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

对于后缀 - spring.mvc.view.suffix: .jsp

对于前缀 - spring.mvc.view.prefix: /WEB-INF/

4.执行器在Spring Boot中的作用

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

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

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

packagecom.gkatzioura.security.securityendpoints.config;

importorg.springframework.context.annotation.Configuration;

importorg.springframework.security.config.annotation.web.builders.HttpSecurity;

importorg.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration

publicclassSecurityConfigextendsWebSecurityConfigurerAdapter{

@Override

protectedvoidconfigure(HttpSecurityhttp)throwsException{

http.authorizeRequests()

.antMatchers("/welcome").permitAll()

.anyRequest().authenticated()

.and()

.formLogin()

.permitAll()

.and()

.logout()

.permitAll();

}

}

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

无论何时创建Java应用程序,都可以通过两种方法进行部署:

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

将容器嵌入jar文件中。

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

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

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

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

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

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

8.什么是语义监控?

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

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

9.如何设置服务发现?

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

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

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

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

10.为什么要选择微服务架构?

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

微服务可以轻松适应其他框架或技术。

单个进程的失败不会影响整个系统。

为大企业和小型团队提供支持。

可以在相对较短的时间内独立部署。

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

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

找出哪些微服务暴露了哪些资源。

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

提供一个简单的点,只要需要文档,就可以访问它。

部署的组件的版本。

从组件中获得成熟感和合规性。

12.为什么人们会犹豫使用微服务?

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

它们需要大量投资  - 微服务需要大量的合作。由于您的团队独立工作,他们应该能够始终保持良好的同步。

他们需要建立繁重的架构  - 系统是分布式的,架构涉及很多。

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

他们有自主的工作人员选择  - 需要熟练的专业人员,他们可以支持异构分布的微服务。

13. PACT如何运作?

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

14.定义域驱动设计

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

DDD主要关注域逻辑和域本身。

复杂的设计完全基于域的模型。

为了改进模型的设计并解决任何新出现的问题,DDD不断与领域专家合作。

欢迎工作一到五年的Java工程师朋友们加入Java程序员开发: 854393687

群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

版权声明:本文来源简书,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://www.jianshu.com/p/bcdc3f00871e
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-01-12 10:42:17
  • 阅读 ( 1039 )
  • 分类:面试题

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢