2020年Java⾯试29个⾼频微服务⾯试题(含答案解析)
随着分布式技术栈逐渐成熟,近⼏年业界采⽤微服务架构设计的系统和领域越来越多,包括⾦融、电商、直播、物流、营销、采购、制造等,有互联⽹领域,也有传统领域。那么微服务到底是什么?我们应该如何进⾏微服务设计和技术选型?
你熟悉的分布式系统技术栈有哪些?
这29个微服务⾯试题基本涵盖了⽅⽅⾯,希望对你有所帮助!
可以加q:1103806531  备注:简书  免费领取~
需要更详细的知识点介绍和更多的⾯试题资料,可以加q:1103806531  备注:简书  免费领取~
⼀、什么是Spring Cloud?
在微服务中,SpringCloud是⼀个提供与外部系统集成的系统。它是⼀个敏捷的框架,可以短平快构建应⽤程序。与有限数量的数据处理相关联,它在微服务体系结构中起着⾮常重要的作⽤。ethercat翻译
以下为 Spring Cloud 的核⼼特性:
版本化/分布式配置
服务注册和发现
服务和服务之间的调⽤
路由
断路器和负载平衡
分布式消息传递
⼆、什么是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在l⽂件中添加starter。您还需要创建⼀个Spring配置类,它将覆盖所需的⽅法,同时扩展 WebSecurityConfigurerAdapter 应⽤程序中的安全性。这是⼀些⽰例代码:
package com.gkatzioura.fig;
import t.annotation.Configuration;
import org.fig.annotation.web.builders.HttpSecurity;
import org.fig.figuration.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()
siblings的意思.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⽂件。它还搜索由特定于环境的属性⽂件中的环境引起的覆盖。
properties是什么文件对于服务器配置,您必须⾸先配置客户端。完成后,服务器启动⼀个客户端,该客户端⽤于查其他服务器。。默认情况下,Eureka服务器使⽤客户端配置来查对等服务器。
⼗、为什么要选择微服务架构?
这是⼀个⾮常常见的微服务⾯试问题,你应该准备好了!微服务架构提供了许多优点。这⾥有⼏个:
微服务可以轻松适应其他框架或技术
单个进程的失败不会影响整个系统
为⼤企业和⼩型团队提供⽀持
可以在相对较短的时间内独⽴部署
⼗⼀、为什么在微服务中需要Reports报告和Dashboards仪表板?
报告和仪表板主要⽤于监视和维护微服务。有多种⼯具可以帮助实现此⽬的。报告 和仪表板可⽤于:
出哪些微服务公开了哪些资源。
出组件发⽣变化时受影响的服务。
提供⼀个简单的点,只要需要⽂档,就可以访问它。
selenium自动化测试实例
部署的组件的版本。
⼗⼆、为什么⼈们会犹豫使⽤微服务?
我见过许多开发者在这个问题上摸索。毕竟,在⾯试微服务架构师⾓⾊时,他们会被问到这个问题,所以承认它的缺点可能有点棘⼿。以下是⼀些很好的答案:
它们需要⼤量协作 - 微服务需要⼤量的合作。不同的微服务模块,可能分散在不同的团队,团队之间需要始终保持良好的同步。
他们需要建⽴繁重的架构 - 系统是分布式的,架构涉及很多。
他们需要过多的计划来处理操作开销 - 如果您计划使⽤微服务架构,则需要为操作开销做好准备。
需要熟练的专业⼈员,他们可以⽀持异构分布的微服务。
⼗三、PACT如何运作?
PACT是⼀个开源⼯具。它有助于测试消费者和服务提供商之间的互动。消费者服务开发⼈员⾸先编写
⼀个测试,该测试定义了与服务提供者的交互模式。测试包括提供者的状态,请求正⽂和预期的响应。基于此,PACT创建了⼀个针对其执⾏测试的存根。输出存储在JSON⽂件中。
⼗四、谈⼀下领域驱动设计
主要关注核⼼领域逻辑。基于领域的模型检测复杂设计。这涉及与公司层⾯领域⽅⾯的专家定期合作,以解决与领域相关的问题并改进应⽤程序的模型。在回答这个微服务⾯试问题时,您还需要提及DDD的核⼼基础知识。他们是:
DDD主要关注领域逻辑和领域本⾝
复杂的设计完全基于领域的模型
为了改进模型的设计并解决任何新出现的问题,DDD不断与公司领域⽅⾯的专家合作
⼗五、什么是耦合和凝聚⼒?
组件之间依赖关系强度的度量被认为是耦合。⼀个好的设计总是被认为具有⾼内聚⼒和低耦合性。
⾯试官经常会问起凝聚⼒。它也是另⼀个测量单位。更像是⼀个模块内部的元素保持结合的程度。
plc编程要学多久才会必须记住,设计微服务的⼀个重要关键是低耦合和⾼内聚的组合。当低耦合时,服务对其他服务的依赖很少。这样可以保持服务的完整性。在⾼内聚性中,将所有相关逻辑保存在服务中成为可能。否则,服务将尝试彼此通信,从⽽影响整体性能。
⼗六、什么是Oauth?
开放授权协议,这允许通过在HTTP服务上启⽤客户端应⽤程序(例如第三⽅提供商Facebook,GitHub等)来访问资源所有者的资源。因此,您
可以在不使⽤其凭据的情况下与另⼀个站点共享存储在⼀个站点上的资源。
OAuth允许像Facebook这样的第三⽅使⽤最终⽤户的帐户信息,同时保证其安全(不使⽤或暴露⽤户的密码)。它更像是代表⽤户的中介,同时为服务器提供访问所需信息的令牌。
⼗七、为什么我们需要微服务容器?
要管理基于微服务的应⽤程序,容器是最简单的选择。它帮助⽤户单独部署和开发。您还可以使⽤Docker将微服务封装到容器的镜像中。没有任何额外的依赖或⼯作,微服务可以使⽤这些元素。
⼗⼋、访问RESTful微服务的⽅法是什么?
另⼀个经常被问到的微服务⾯试问题是如何访问RESTful微服务?你可以通过两种⽅法做到这⼀点:
使⽤负载平衡的REST模板
使⽤多个微服务
⼗九、微服务测试的主要障碍是什么?
说到缺点,这⾥是另⼀个微服务⾯试问题,将围绕测试微服务时⾯临的挑战。
在开始编写集成测试的测试⽤例之前,测试⼈员应该全⾯了解对所有⼊站和出站过程。当独⽴的团队正在开发不同的功能时,协作可能会被证明是⼀项⾮常困难的任务。很难到空闲时间窗⼝来执⾏完整的回归测试。随着微服务数量的增加,系统的复杂性也随之增加。在从单⽚架构过渡期间,测试⼈员必须确保组件之间的内部通信没有中断。
⼆⼗、过渡到微服务时的常见错误
不仅在开发上,⽽且在⽅⾯流程也经常发⽣错误。⼀些常见错误是:
通常开发⼈员⽆法概述当前的挑战
重写已经存在的程序
职责、时间线和界限没有明确定义
未能从⼀开始就实施和确定⾃动化的范围
⼆⼗⼀、微服务设计的基础是什么?
这可能是最常见的微服务⾯试问题之⼀。在回答这个问题时,你需要记住以下内容:
定义范围
结合低耦合和⾼内聚
创建⼀个有唯⼀标识的服务,唯⼀标识将充当识别源,⾮常像数据库表中的唯⼀键
创建正确的API并在集成过程中特别注意
限制对数据的访问并将其限制到所需级别
在请求和响应之间保持顺畅的流程

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。