2022年Java秋招面试必看的 | 微服务面试题
前言
你有了解过Java微服务吗?知道什么是微服务架构吗?
微服务架构是一种架构风格和架构思想, 在传统软件应用架构的基础上,将系统业务按照功能拆分为更细的服务。
完整版面试题PDF下载地址:企业java面试真题汇总
拆分的每一个服务都是一个独立的应用,这些应用对外提供公共的API,可以独立承担对外服务的职责。通过此种思想方式所开发的软件服务实体就是“微服务”,而围绕着微服务思想构建的一系列结构,都可以称之为“微服务架构”。
1、您对微服务有何了解?
微服务,又称微服务 _架构_,是一种架构风格,它将应用程序构建为以业务领域为模型的小型自治服务集合 。
通俗地说,你必须看到蜜蜂如何通过对齐六角形蜡细胞来构建它们的蜂窝状物。他们最初从使用各种材料的小部分开始,并继续从中构建一个大型蜂箱。这些细胞形成图案,产生坚固的结构,将蜂窝的特定部分固定在一起。这里,每个细胞独立于另一个细胞,但它也与其他细胞相关。这意味着对一个细胞的损害不会损害其他细胞,因此,蜜蜂可以在不影响完整蜂箱的情况下重建这些细胞。
请参考上图。这里,每个六边形形状代表单独的服务组件。与蜜蜂的工作类似,每个敏捷团队都使用可用的框架和所选的技术堆栈构建单独的服务组件。就像在蜂箱中一样,每个服务组件形成一个强大的微服务架构,以提供更好的可扩展性。此外,敏捷团队可以单独处理每个服务组件的问题,而对整个应用程序没有影响或影响最小。
2、微服务架构有哪些优势?
- 独立开发 – 所有微服务都可以根据各自的功能轻松开发
- 独立部署 – 基于其服务,可以在任何应用程序中单独部署它们
- 故障隔离 – 即使应用程序的一项服务不起作用,系统仍可继续运行
- 混合技术堆栈 – 可以使用不同的语言和技术来构建同一应用程序的不同服务
- 粒度缩放 – 单个组件可根据需要进行缩放,无需将所有组件缩放在一起
3、微服务有哪些特点?
- 解耦 – 系统内的服务很大程度上是分离的。因此,整个应用程序可以轻松构建,更改和扩展
- 组件化 – 微服务被视为可以轻松更换和升级的独立组件
- 业务能力 – 微服务非常简单,专注于单一功能
- 自治 – 开发人员和团队可以彼此独立工作,从而提高速度
- 持续交付 – 通过软件创建,测试和批准的系统自动化,允许频繁发布软件
- 责任 – 微服务不关注应用程序作为项目。相反,他们将应用程序视为他们负责的产品
- 分散治理 – 重点是使用正确的工具来做正确的工作。这意味着没有标准化模式或任何技术模式。开发人员可以自由选择最有用的工具来解决他们的问题
- 敏捷 – 微服务支持敏捷开发。任何新功能都可以快速开发并再次丢弃
4、设计微服务的最佳实践是什么?
以下是设计微服务的最佳实践:
5、微服务架构如何运作?
- 客户端 – 来自不同设备的不同用户发送请求。
- 身份提供商 – 验证用户或客户身份并颁发安全令牌。
- API 网关 – 处理客户端请求。
- 静态内容 – 容纳系统的所有内容。
- 管理 – 在节点上平衡服务并识别故障。
- 服务发现 – 查找微服务之间通信路径的指南。
- 内容交付网络 – 代理服务器及其数据中心的分布式网络。
- 远程服务 – 启用驻留在 IT 设备网络上的远程访问信息。
6、微服务架构的优缺点是什么?
7、单片,SOA和微服务架构有什么区别?
- 单片架构类似于大容器,其中应用程序的所有软件组件组装在一起并紧密封装。
- 一个面向服务的架构是一种相互通信服务的集合。通信可以涉及简单的数据传递,也可以涉及两个或多个协调某些活动的服务。
- 微服务架构是一种架构风格,它将应用程序构建为以业务域为模型的小型自治服务集合。
8、在使用微服务架构时,您面临哪些挑战?
开发一些较小的微服务听起来很容易,但开发它们时经常遇到的挑战如下。
- 自动化组件:难以自动化,因为有许多较小的组件。因此,对于每个组件,我们必须遵循 Build,Deploy 和 Monitor 的各个阶段。
- 易感性:将大量组件维护在一起变得难以部署,维护,监控和识别问题。它需要在所有组件周围具有很好的感知能力。
- 配置管理:有时在各种环境中维护组件的配置变得困难。
- 调试:很难找到错误的每一项服务。维护集中式日志记录和仪表板以调试问题至关重要。
9、SOA和微服务架构之间的主要区别是什么?
10、微服务有什么特点?
11、什么是领域驱动设计?
12、为什么需要域驱动设计(DDD)?
13、什么是无所不在的语言?
14、什么是凝聚力?
15、什么是耦合?
16、什么是REST / RESTful以及它的用途是什么?
17、你对Spring Boot有什么了解?
18、什么是Spring引导的执行器?
19、什么是Spring Cloud?
20、Spring Cloud解决了哪些问题?
21、在Spring MVC应用程序中使用WebMvcTest注释有什么用处?
22。你能否给出关于休息和微服务的要点?
23、什么是不同类型的微服务测试?
24、您对Distributed Transaction有何了解?
25、什么是Idempotence以及它在哪里使用?
26、什么是有界上下文?
27、什么是双因素身份验证?
28、双因素身份验证的凭据类型有哪些?
29、什么是客户证书?
30、PACT在微服务架构中的用途是什么?
31、什么是OAuth?
32、康威定律是什么?
33、合同测试你懂什么?
34、什么是端到端微服务测试?
35、Container在微服务中的用途是什么?
36、什么是微服务架构中的DRY?
37、什么是消费者驱动的合同(CDC)?
38、Web,RESTful API在微服务中的作用是什么?
39、您对微服务架构中的语义监控有何了解?
40、我们如何进行跨功能测试?
41、我们如何在测试中消除非决定论?
42、Mock或Stub有什么区别?
43、您对Mike Cohn的测试金字塔了解多少?
44、Docker的目的是什么?
45、什么是金丝雀释放?
46、什么是持续集成(CI)?
47、什么是持续监测?
48、架构师在微服务架构中的角色是什么?
49、我们可以用微服务创建状态机吗?
50、什么是微服务中的反应性扩展?
上面的这些面试题都整理成了PDF文档,希望能帮助到你面试前的复习且找到一个好的工作,也节省你在网上搜索资料的时间来学习!
#秋招##面试#