【秋招必备】SpringCloud⾯试题(2021最新版)
前⾔
Spring Cloud 是⼀系列框架的有序集合。它利⽤ Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中⼼、消息总线、负载均衡、断路器、数据监控等,都可以⽤ Spring Boot 的开发风格做到⼀键启动和部署。Spring Cloud 并没有重复制造轮⼦,它只是将⽬前各家公司开发的⽐较成熟、经得起实际考验的服务框架组合起来,通过 Spring Boot 风格进⾏再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了⼀套简单易懂、易部署和易维护的分布式系统开发⼯具包。
⼩编分享的这份Java后端开发⾯试总结包含了JavaOOP、Java集合容器、Java异常、并发编程、Java反射、Java序列化、JVM、Redis、Spring MVC、MyBatis、MySQL数据库、消息中间件MQ、Dubbo、Linux、ZooKeeper、分布式&数据结构与算法等26个专题技术点,都是⼩编在各个⼤⼚总结出来的⾯试真题,已经有很多粉丝靠这份PDF拿下众多⼤⼚的offer,今天在这⾥总结分享给到⼤家!【已完结】
完整版Java⾯试题地址:。
序号专题内容链接
1中间件【秋招必备】Java中间件⾯试题(2021最新版)
2微服务【秋招必备】Java微服务⾯试题(2021最新版)
3并发编程【秋招必备】Java并发编程⾯试题(2021最新版)
4Java基础【秋招必备】Java基础知识⾯试题(2021最新版)
5Spring Boot【秋招必备】Spring Boot⾯试题(2021最新版)
6Redis【秋招必备】Redis⾯试题(2021最新版)
7Spring MVC【秋招必备】Spring MVC⾯试题(2021最新版)
8Spring Cloud【秋招必备】Spring Cloud⾯试题(2021最新版)
js效果怎么实现
9MySQL优化【秋招必备】MySQL优化⾯试题(2021最新版)
10JVM【秋招必备】JVM性能调优⾯试题(2021最新版)
11Linux【秋招必备】Linux⾯试题(2021最新版)
12Mybatis【秋招必备】Mybatis⾯试题(2021最新版)
13⽹络编程【秋招必备】TCP,UDP,Socket,Http⽹络编程⾯试题(2021最新版)
14设计模式【秋招必备】设计模式⾯试题(2021最新版)
序号专题内容链接
15⼤数据【秋招必备】⼤数据⾯试题100道(2021最新版)
16Tomcat【秋招必备】Tomcat⾯试题(2021最新版)
17多线程【秋招必备】多线程⾯试题(2021最新版)
18Nginx【秋招必备】Nginx_BIO_NIO_AIO⾯试题(2021最新版)
19memcache【秋招必备】memcache⾯试题(2021最新版)
20java异常【秋招必备】java异常⾯试题(2021最新版)
21Java虚拟机【秋招必备】Java虚拟机⾯试题(2021最新版)
22Java集合【秋招必备】Java集合⾯试题(2021最新版)
23Git常⽤命令【秋招必备】Git常⽤命令(2021最新版)
24Elasticsearch【秋招必备】Elasticsearch⾯试题(2021最新版)
25Dubbo【秋招必备】Dubbo⾯试题(2021最新版)
⼀、什么是微服务架构
1. 什么是微服务架构
微服务架构就是将单体的应⽤程序分成多个应⽤程序,这多个应⽤程序就成为微服务,每个微服务运⾏在⾃⼰的进程中,并使⽤轻量级的机制通信。这些服务围绕业务能⼒来划分,并通过⾃动化部署机制来独⽴部署。这些服务可以使⽤不同的编程语⾔,不同数据库,以保证最低限度的集中式管理。
2. 为什么需要学习Spring Cloud
⾸先springcloud基于spingboot的优雅简洁,可还记得我们被⽆数xml⽀配的恐惧?可还记得 springmvc,mybatis错综复杂的配置,有了spingboot,这些东西都不需要了,spingboot好处不再赘诉,springcloud就基于SpringBoot把市场上优秀的服务框架组合起来,通过Spring Boot风格进⾏再封装屏蔽掉了复杂的配置和实现原理什么叫做开箱即⽤?即使是当年的黄⾦搭档dubbo+zookeeper下载配置起来也是颇费⼼神的!⽽springcloud完成这些只需要⼀个jar的依赖就可以了!
springcloud⼤多数⼦模块都是直击痛点,像zuul解决的跨域,fegin解决的负载均衡,hystrix的熔断机制等等等等
3. Spring Cloud 是什么
Spring Cloud是⼀系列框架的有序集合。它利⽤Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中⼼、智能路由、消息总线、负载均衡、断路器、数据监控等,都可以⽤Spring Boot的开发风格做到⼀键启动和部署。
Spring Cloud并没有重复制造轮⼦,它只是将各家公司开发的⽐较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进⾏再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了⼀套简单易懂、易部署和易维护的分布式系统开发⼯具包。
4. SpringCloud的优缺点
优点:
1.耦合度⽐较低。不会影响其他模块的开发。
2.减轻团队的成本,可以并⾏开发,不⽤关注其他⼈怎么开发,先关注⾃⼰的开发。
3.配置⽐较简单,基本⽤注解就能实现,不⽤使⽤过多的配置⽂件。
4.微服务跨平台的,可以⽤任何⼀种语⾔开发。
5.每个微服务可以有⾃⼰的独⽴的数据库也有⽤公共的数据库。
6.直接写后端的代码,不⽤关注前端怎么开发,直接写⾃⼰的后端代码即可,然后暴露接⼝,通过组件进⾏服务通信。
缺点:
1.部署⽐较⿇烦,给运维⼯程师带来⼀定的⿇烦。
2.针对数据的管理⽐⿇烦,因为微服务可以每个微服务使⽤⼀个数据库。
3.系统集成测试⽐较⿇烦
4.性能的监控⽐较⿇烦。【最好开发⼀个⼤屏监控系统】
总的来说优点⼤过于缺点,⽬前看来Spring Cloud是⼀套⾮常完善的分布式框架,⽬前很多企业开始⽤微服务、Spring Cloud的优势是显⽽易见的。因此对于想研究微服务架构的同学来说,学习Spring Cloud是⼀个不错的选择。
5. SpringBoot和SpringCloud的区别?
SpringBoot专注于快速⽅便的开发单个个体微服务。
SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的⼀个个单体微服务整合并管理起来,
为各个微服务之间提供,配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等集成服务
SpringBoot可以离开SpringCloud独⽴使⽤开发项⽬,但是SpringCloud离不开SpringBoot ,属于依赖的关系
SpringBoot专注于快速、⽅便的开发单个微服务个体,SpringCloud关注全局的服务治理框架。
6. Spring Cloud和SpringBoot版本对应关系
7. SpringCloud由什么组成
这就有很多了,我讲⼏个开发中最重要的
Spring Cloud Eureka:服务注册与发现
Spring Cloud Zuul:服务⽹关
Spring Cloud Ribbon:客户端负载均衡
Spring Cloud Feign:声明性的Web服务客户端
Spring Cloud Hystrix:断路器
Spring Cloud Confifig:分布式统⼀配置管理
等20⼏个框架,开源⼀直在更新
8. 使⽤ Spring Boot 开发分布式微服务时,我们⾯临什么问题
(1)与分布式系统相关的复杂性-这种开销包括⽹络问题,延迟开销,带宽问题,安全问题。
(2)服务发现-服务发现⼯具管理集中的流程和服务如何查和互相交谈。它涉及⼀个服务⽬录,在该⽬录中注册服务,然后能够查并连接到该⽬录中的服务。
如何搭建自己的小程序(3)冗余-分布式系统中的冗余问题。
(4)负载平衡 --负载平衡改善跨多个计算资源的⼯作负荷,诸如计算机,计算机集,⽹络链路,中央处理单元,或磁盘驱动器的分布。
(5)性能-问题由于各种运营开销导致的性能问题。
9. Spring Cloud 和dubbo区别?
(1)服务调⽤⽅式:dubbo是RPC springcloud Rest Api
(2)注册中⼼:dubbo 是zookeeper springcloud是eureka,也可以是zookeeper
vbs小程序代码(3)服务⽹关,dubbo本⾝没有实现,只能通过其他第三⽅技术整合,springcloud有Zuul路由⽹关,作为路由服务器,进⾏消费者的请求分发,springcloud⽀持断路器,与git完美集成配置⽂件⽀持版本控制,事物总线实现配置⽂件的更新与服务⾃动装配等等⼀系列的微服务架构要素。
⼆、Eureka
10. 服务注册和发现是什么意思?Spring Cloud 如何实现?
11. 什么是Eureka
Eureka作为SpringCloud的服务注册功能服务器,他是服务注册中⼼,系统中的其他服务使⽤Eureka的客户端将其连接到Eureka Service中,并且保持⼼跳,这样⼯作⼈员可以通过EurekaService来监控各个微服务是否运⾏正常。
12. Eureka怎么实现⾼可⽤
集吧,注册多台Eureka,然后把SpringCloud服务互相注册,客户端从Eureka获取信息时,按照Eureka的顺序来访问。
13. 什么是Eureka的⾃我保护模式,
默认情况下,如果Eureka Service在⼀定时间内没有接收到某个微服务的⼼跳,Eureka Service会进⼊⾃我保护模式,在该模式下Eureka Service会保护服务注册表中的信息,不在删除注册表中的数据,当⽹络故障恢复后,Eureka Servic 节点会⾃动退出⾃我保护模式
14. DiscoveryClient的作⽤
可以从注册中⼼中根据服务别名获取注册的服务器信息。
15. Eureka和ZooKeeper都可以提供服务注册与发现的功能,请说说两个的区别
1. ZooKeeper中的节点服务挂了就要选举在选举期间注册服务瘫痪,虽然服务最终会恢复,但是选举期间不可⽤的,选举就是改微服务做了集,必须有⼀台主其他的都是从
2. Eureka各个节点是平等关系,服务器挂了没关系,只要有⼀台Eureka就可以保证服务可⽤,数据都是最新的。如果查询到的数据并不是最新的,就是因为Eureka的⾃我保
护模式导致的
3. Eureka本质上是⼀个⼯程,⽽ZooKeeper只是⼀个进程
4. Eureka可以很好的应对因⽹络故障导致部分节点失去联系的情况,⽽不会像ZooKeeper ⼀样使得整个注册系统瘫痪
5. ZooKeeper保证的是CP,Eureka保证的是AP
CAP: C:⼀致性>Consistency; 取舍:(强⼀致性、单调⼀致性、会话⼀致性、最终⼀致性、弱⼀致性) A:可⽤性>Availability; P:分区容错性>Partition tolerance;
三、Zuul
16. 什么是⽹关?
⽹关相当于⼀个⽹络服务架构的⼊⼝,所有⽹络请求必须通过⽹关转发到具体的服务。
17. ⽹关的作⽤是什么
统⼀管理微服务请求,权限控制、负载均衡、路由转发、监控、安全控制⿊名单和⽩名单等
18. 什么是Spring Cloud Zuul(服务⽹关)mysql面试题大全
19. ⽹关与过滤器有什么区别
⽹关是对所有服务的请求进⾏分析过滤,过滤器是对单个服务⽽⾔。
20. 常⽤⽹关框架有那些?
Nginx、Zuul、Gateway
21. Zuul与Nginx有什么区别?
Zuul是java语⾔实现的,主要为java服务提供⽹关服务,尤其在微服务架构中可以更加灵活的对⽹关进⾏操作。Nginx是使⽤C语⾔实现,性能⾼于Zuul,但是实现⾃定义操作需要熟悉lua语⾔,对程序员要求较⾼,可以使⽤Nginx做Zuul集。
22. 既然Nginx可以实现⽹关?为什么还需要使⽤Zuul框架
Zuul是SpringCloud集成的⽹关,使⽤Java语⾔编写,可以对SpringCloud架构提供更灵活的服务。
23. 如何设计⼀套API接⼝
考虑到API接⼝的分类可以将API接⼝分为开发API接⼝和内⽹API接⼝,内⽹API接⼝⽤于局域⽹,为内部服务器提供服务。开放API接⼝⽤于对外部合作单位提供接⼝调⽤,需要遵循Oauth2.0权限认证协议。同时还需要考虑安全性、幂等性等问题。
24. ZuulFilter常⽤有那些⽅法
Run():过滤器的具体业务逻辑
shouldFilter():判断过滤器是否有效
fifilterOrder():过滤器执⾏顺序
fifilterType():过滤器拦截位置
25. 如何实现动态Zuul⽹关路由转发
通过path配置拦截请求,通过ServiceId到配置中⼼获取转发的服务列表,Zuul内部使⽤Ribbon实现本地负载均衡和转发。
26. Zuul⽹关如何搭建集
ios软件资源合集使⽤Nginx的upstream设置Zuul服务集,通过location拦截请求并转发到upstream,默认使⽤轮询机制对Zuul集发送请求。
四、Ribbon
27. 负载平衡的意义什么?
28. Ribbon是什么?
29. Nginx与Ribbon的区别
30. Ribbon底层实现原理
Ribbon使⽤discoveryClient从注册中⼼读取⽬标服务信息,对同⼀接⼝请求进⾏计数,使⽤%取余算法获取⽬标服务集索引,返回获取到的⽬标服务信息。
@LoadBalanced注解的作⽤
开启客户端负载均衡。
五、Hystrix
31. 什么是断路器
32. 什么是 Hystrix?
33. 谈谈服务雪崩效应
34. 在微服务中,如何保护服务?
35. 服务雪崩效应产⽣的原因
因为Tomcat默认情况下只有⼀个线程池来维护客户端发送的所有的请求,这时候某⼀接⼝在某⼀时刻被⼤量访问就会占据tomcat线程池中的所有线程,其他请求处于等待状态,⽆法连接到服务接⼝。
36. 谈谈服务降级、熔断、服务隔离
37. 服务降级底层是如何实现的?
Hystrix实现服务降级的功能是通过重写HystrixCommand中的getFallback()⽅法,当Hystrix的run⽅法或construct执⾏发⽣错误时转⽽执⾏getFallback()⽅法。
六、Feign
38. 什么是Feign?
Feign 是⼀个声明web服务客户端,这使得编写web服务客户端更容易
他将我们需要调⽤的服务⽅法定义成抽象⽅法保存在本地就可以了,不需要⾃⼰构建Http请求了,直接调⽤接⼝就⾏了,不过要注意,调⽤⽅法要和本地抽象⽅法的签名完全⼀致。
39. SpringCloud有⼏种调⽤接⼝⽅式
Feign
RestTemplate
40. Ribbon和Feign调⽤服务的区别
七、Bus
41. 什么是 Spring Cloud Bus?
⼋、Config
42. 什么是Spring Cloud Config?
43. 分布式配置中⼼有那些框架?
Apollo、zookeeper、springcloud confifig。
属于三类容器的有哪些
44. 分布式配置中⼼的作⽤?
动态变更项⽬配置信息⽽不必重新部署项⽬。
45. SpringCloud Config 可以实现实时刷新吗?
springcloud confifig实时刷新采⽤SpringCloud Bus消息总线。
九、Gateway
46. 什么是Spring Cloud Gateway?
⼗、 SpringCloud主要项⽬
47. SpringCloud主要项⽬
Spring Cloud的⼦项⽬,⼤致可分成两类,⼀类是对现有成熟框架"Spring Boot化"的封装和抽象,也
是数量最多的项⽬;第⼆类是开发了⼀部分分布式系统的基础设施的实现,如Spring CloudStream扮演的就是kafka, ActiveMQ这样的⾓⾊。
Spring Cloud Config
Spring Cloud Netflix(重点,这些组件⽤的最多)
Spring Cloud Bus
Spring Cloud Consul
Spring Cloud Security
Spring Cloud Sleuth
Spring Cloud Stream
轻量级事件驱动微服务框架,可以使⽤简单的声明式模型来发送及接收消息,主要实现为Apache Kafka及RabbitMQ。
Spring Cloud Task
Spring Cloud Task的⽬标是为Spring Boot应⽤程序提供创建短运⾏期微服务的功能。在Spring Cloud Task中,我们可以灵活地动态运⾏任何任务,按需分配资源并在任务完成后检索结果。 Tasks是Spring Cloud Data Flow中的⼀个基础项⽬,允许⽤户将⼏乎任何Spring Boot应⽤程序作为⼀个短期任务执⾏。
Spring Cloud Zookeeper
SpringCloud⽀持三种注册⽅式Eureka, Consul(go语⾔编写),zookeeper
Spring Cloud Zookeeper是基于Apache Zookeeper的服务治理组件。
Spring Cloud Gateway
Spring Cloud OpenFeign
Feign是⼀个声明性的Web服务客户端。它使编写Web服务客户端变得更容易。要使⽤Feign,我们可以将调⽤的服务⽅法定义成抽象⽅法保存在本地添加⼀点点注解就可以了,不需要⾃⼰构建Http请求了,直接调⽤接⼝就⾏了,不过要注意,调⽤⽅法要和本地抽象⽅法的签名完全⼀致。
Spring Cloud的版本关系
48. Spring Cloud和SpringBoot版本对应关系
49. Spring Cloud和各⼦项⽬版本对应关系

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