前言
最近针对互联网公司面试问到的知识点,总结出了Java程序员面试涉及到的绝大部分面试题及答案分享给大家,希望能帮助到你面试前的复习且找到一个好的工作,也节省你在网上搜索资料的时间来学习。
内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、SpringBoot、SpringCloud、RabbitMQ、Kafka、Linux等技术栈。
完整版Java面试题地址:JAVA后端面试题整合
1、您对微服务有何了解?
微服务,又称微服务 架 构,是一种架构风格,它将应用程序构建为以业务领域为模型的小型自治服务集合 。
通俗地说,你必须看到蜜蜂如何通过对齐六角形蜡细胞来构建它们的蜂窝状物。
他们最初从使用各种材料的小部分开始,并继续从中构建一个大型蜂箱。
这些细胞形成图案,产生坚固的结构,将蜂窝的特定部分固定在一起。
这里,每个细胞独立于另一个细胞,但它也与其他细胞相关。
这意味着对一个细胞的损害不会损害其他细胞,因此,蜜蜂可以在不影响完整蜂箱的情况下重建这些细胞。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-63qtq2jl-1618994260720)(https://upload-images.jianshu.io/upload_images/26078969-d085f6c0e0f71c88.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
图 1:微服务的蜂窝表示 – 微服务访谈问题请参考上图。
这里,每个六边形形状代表单独的服务组件。与蜜蜂的工作类似,每个敏捷团队都使用可用的框架和所选的技术堆栈构建单独的服务组件。
就像在蜂箱中一样,每个服务组件形成一个强大的微服务架构,以提供更好的可扩展性。
此外,敏捷团队可以单独处理每个服务组件的问题,而对整个应用程序没有影响或影响最小。
2、微服务架构有哪些优势?
图 2:微服务的 优点 – 微服务访谈问题
· 独立开发 – 所有微服务都可以根据各自的功能轻松开发
· 独立部署 – 基于其服务,可以在任何应用程序中单独部署它们
· 故障隔离 – 即使应用程序的一项服务不起作用,系统仍可继续运行
· 混合技术堆栈 – 可以使用不同的语言和技术来构建同一应用程序的不同服务
· 粒度缩放 – 单个组件可根据需要进行缩放,无需将所有组件缩放在一起
3、微服务有哪些特点?
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-84BusFjP-1618994260722)(https://upload-images.jianshu.io/upload_images/26078969-771f390edcda67e3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
图 3:微服务的 特点 – 微服务访谈问题
· 解耦 – 系统内的服务很大程度上是分离的。因此,整个应用程序可以轻松构建,更改和扩展
· 组件化 – 微服务被视为可以轻松更换和升级的独立组件
· 业务能力 – 微服务非常简单,专注于单一功能
· 自治 – 开发人员和团队可以彼此独立工作,从而提高速度
· 持续交付 – 通过软件创建,测试和批准的系统自动化,允许频繁发布软件
· 责任 – 微服务不关注应用程序作为项目。相反,他们将应用程序视为他们负责的产品
· 分散治理 – 重点是使用正确的工具来做正确的工作。这意味着没有标准化模式或任何技术模式。开发人员可以自由选择最有用的工具来解决他们的问题
· 敏捷 – 微服务支持敏捷开发。任何新功能都可以快速开发并再次丢弃
4、设计微服务的最佳实践是什么?
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iUTyWqTy-1618994260723)(https://upload-images.jianshu.io/upload_images/26078969-47dad9025fd6da5d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
以下是设计微服务的最佳实践:
图 4:设计微服务的最佳实践 – 微服务访谈问题
5、微服务架构如何运作?
微服务架构具有以下组件:
图 5:微服务 架构 – 微服务面试问题
· 客户端 – 来自不同设备的不同用户发送请求。
· 身份提供商 – 验证用户或客户身份并颁发安全令牌。
· API 网关 – 处理客户端请求。
· 静态内容 – 容纳系统的所有内容。
· 管理 –