Java面试之Springboot,SpringCloud

前言

上篇讲了Spring相关的一些面试题,Spring的一些基本特性基本已经涵盖了,而Springboot,Springcloud作为其衍生框架,底层特性也相似,所以题目主要是针对一些这些框架的特有功能

Spring Boot面试题

1. 什么是 Spring Boot?

Spring的一个子项目,提供一站式配置spring组件,降低开发难度,便于上手

2. Spring Boot 有哪些优点?

容易入门,开箱即用,集成了大型开发需要的一些辅助功能,不需繁琐的xml配置,避免maven冲突

3. Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?

@Springbootapplication注解,用于启动类,包含了3个注解
1、@Springbootconfiguration,组合了configuration的注解,用来配置文件
2、EnableAutoConfiguration,打开自动配置,或者关闭自动配置
3、CmoponentScan,扫描Spring组件

4. 什么是 JavaConfig?

一种注解,可以用java的方式替代xml的配置
它的好处有:提供了用java代码编写xml,避免在开发中在java与xml切换的麻烦
便于重构,类型安全:可以用类型而非名字查找bean
有面向对象的配置优点,可以继承配置并重写其中的bean

5. Spring Boot 自动配置原理是什么?

@EnableAutoCoufiguration调用metainfo下的spring.factories文件,读取对应的java配置类,进行相应的配置

6. 什么是 YAML,它有什么优势?

YAML是一种可读性更好的数据结构化语言,它是分层配置数据的,可以配置文件
优势在于它更加简洁,配置有序,支持使用数组

7. Spring Boot 是否可以使用 XML 配置

可以通过注解@importResource引入

8. spring boot 核心配置文件是什么?

bootstrap.properties 和
application.properties 有何区别
bootstrap.properties和application.properties,bootstrap这个不常见,但在结合springcloud,做远程配置时会用到
前者由父applicationcontext配置,nacos,springcloud一些远程配置
后者由applicationcontext配置,用于springboot自动化配置

9. 什么是 Spring Profiles

用来区分不同的环境,并且做相应的配置以适应运行环境

10. 如何在自定义端口上运行 Spring Boot 应用程序

spring标签下的server.port为自定义端口号

11. 如何实现 Spring Boot 应用程序的安全性?

添加spring-boot-security-parent依赖,并在配置类中继承websecurityConfigureAdapter类

12. 比较一下 Spring Security 和 Shiro 各自的优缺点 ?

ss是一个重量级安全框架,配置较为繁琐,但功能强大
shiro是一个轻量级框架,配置简单,功能简单

13. Spring Boot 中如何解决跨域问题 ?

CORS,以前是在xml文件里配置,现在是实现webmvcconfiguer接口中的addcorsmapping方法

14. 如何监视所有 Spring Boot 微服务?

手动查看十分繁琐,使用基于springbootActuator的开源项目,提供了webui界面管理

15. 如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?Spring Boot

项目如何热部署
热部署,引入devtools依赖,然后在编译器里配置,每次更改或者保存触发热部署

16. 使用了哪些 starter maven 依赖项,starter是什么

spring-boot-starter-下的activemq以及security
starter是一种spring的机制,只需要在pom中引入starter相关依赖,@enableautoconfiguration注解开启,spring会自动化配置,也可以自己自定义starter

17. spring-boot-starter-parent 有什么用 ?

指定jdk版本、编码版本(一般utf8),指定依赖版本号、自动资源过滤,配置打包操作,插件配置,针对不同环境下的配置文件资源过滤

18. Spring Boot 打成的 jar 和普通的 jar 有什么区别 ?

springboot打的jar包与一般jar包结构不同,无法被引入,可以通过配置,打包为区别于可执行的依赖专用版本

19. 如何使用 Spring Boot 实现异常处理

通过实现controller类,来处理容器抛出的异常

20. 如何使用 Spring Boot 实现分页和排序

使用spring data jpa实现可分页存储库方法

21. Spring Boot 中如何实现定时任务 ?

@schduled注解和quartz两种方法

22. springboot四大组件

Sprngbootstarter: 帮助封装了一些依赖,自动注入了需要的bean到spring容器中(官方的尾缀xxx,非官方前缀xxx)
autoconfigure: 配置bean到spring容器中,它其实在starter中
cli:命令行使用springboot的客户端工具
acuator:springboot的监控插件,提供一些接口可以获取项目的运行指标

23. springboot 常见注解

答:SpringBootApplication @Autowired @component @ Controller @ Service @CrossOrigin @FeignClient

Spring Cloud面试题

1. Springcloud概述 单体结构的应用随着系统复杂度的增高,会暴露出各种各样的问题,微服务架构逐渐取

代了单体架构,Spring Cloud是目前最常用的微服务开发框架,已经在企
业级开发中大量的应用,Spring Cloud的子项目,大致可分成两类,一类是对现有成熟框架"Spring Boot化"的封装和抽象,第二类是开发了一部分分布式系统的基础设施的实现,如Spring Cloud Stream扮演
的就是kafka, ActiveMQ这样的角色

2. ,springcloud优缺点

优点:
基于spring,有强大的支持
社区活跃度高,
更新迭代快,
功能丰富,
可以用不同的语言编写,跨平台
低耦合,粒度细
便于制定维护方案
支持并行开发
缺点:微服务繁多,治理成本高
分布式系统开发成本高

3. SpringBoot和SpringCloud的区别

spingboot专注于单个个体微服务的开发,springcloud以springboot为基础,专注全局微服务的治理

4. 使用 Spring Boot 开发分布式微服务时,有什么问题

网络问题,例如网络延迟,安全监测
部署复杂
服务目录的查询
分布式中的冗余问题
性能开销大
负载均衡

5. 服务注册和发现是什么意思?Spring Cloud 如何实现?

服务从项目开始配置后,可能会有位置变动,这些查找交给Eureka,在其中注册后负责查找,不需要手动查找

6. Spring Cloud 和dubbo区别?

在服务中心上,SC能用zookeeper和eureka,dubbo只能用zookeeper
服务调用方式,sc是restapi,dubbo是RPC(远程过程调用)
服务网关,sc有zuul,dubbo自身没有,需要外部使用

7. 负载均衡意义

增加吞吐量,减少局部过载,最小化响应时间,优化负载结构,应用时通常是将单台服务器的业务分摊到多个服务器上,以减轻压力
在这里插入图片描述

8. 什么是 Hystrix?它如何实现容错

延迟和容错库,熔断器,防止异常传播,造成雪崩效应
通过在异常产生时,执行回退,并返回一些信息通知实现

9. netflix feign?

是一种负载均衡的框架,封装了resttemplate和ribbon,可以实现更简单的负载均衡和rest api调用

10. Spring Cloud Bus?

提供跨实例刷新配置的功能,变动环境时,只要有一个微服务改了,其余侦听它的微服务会随之变动

11. spring cloud gateway?

SpringCloud的第二代网关框架,取代了zuul,提供权限校验,路由, 限流控制的功能

12. Spring Cloud Config?

对微服务进行配置的文件,可以在内存中,也可以存在git中,分server和client角色,通过@enableconfig server开启

13. Spring常见服务?

Eureka:服务注册与发现
Zuul:服务网关
Ribbon:客户端负载均衡
在这里插入图片描述
Feign:声明性的Web服务客户端
Hystrix:断路器
Confifig:分布式统一管理

14. openfeign接口保证安全性?例如有一个请求大量访问连接池时,openfeign有哪些优化手段

默认的Feign是使用的HttpURLConnection是没有使用连接池的,可以使用httpclient,引入依赖,并在feign下配置httpclient的max-connections即可
超时优化:默认是1s这种短时,太短,可以在yml里配置timeout时间
请求连接优化,apachehttpclient可以进行优化
数据压缩:使用Gzip,可以减少数据体量,加快传输响应时间,也可以应对一些低带宽情况
负载均衡优化,这里默认是ribbon,也可以使用权重,区域敏感这些高级策略来优化

15. 微服务之间保持数据一致性

spring自己的resttemplate,通过事务
引入消息中间件,activemq,通过ack返回保证一致性
分库,多数据源分布式事务

16. 微服务注册组件有哪些

nacos,eureka,zookper等等

17. Autowired和resource注解的区别

autowired只用于spring框架,resource可用于多种java框架
autowired参数只有一个自动注入,默认为true,resource有七个,最重要的是byname和bytype
autowired默认按name注入,resource默认按type注入

18. springboot运行方式

一般有三种,将springboot打包发到容器中;也可直接运行main主方法;也可以mavern插件运行。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring是一个开源的Java开发框架,它主要提供了一个轻量级的容器来管理应用程序中的对象之间的依赖关系和生命周期。 Spring MVC是基于Spring框架的Web开发框架,它可以帮助我们快速、简便地开发和管理Web应用程序。Spring MVC使用控制器、模型和视图的设计模式,通过将Web请求映射到相应的处理器方法,并将处理结果呈现给客户端,实现了灵活的Web应用程序开发。 Spring BootSpring框架的一个扩展,它的目标是简化Spring应用程序的开发、部署和运行。Spring Boot通过自动化配置和约定优于配置的原则,解决了传统Spring应用中繁琐的配置问题,使得开发者能够更加专注于业务逻辑的开发。 Spring Cloud是基于Spring Boot的一套用于快速构建分布式系统的工具集合。它包括多个子项目,如服务发现、服务注册、负载均衡、断路器等,可以帮助我们构建具有高可用性和弹性的分布式系统。Spring Cloud与云原生技术集成,提供了一系列功能强大的解决方案,如服务网关、配置中心、分布式追踪等,使得我们能够更加便捷地开发和管理云原生应用。 综上所述,Spring是一个Java开发框架,Spring MVC是基于Spring的Web开发框架,Spring Boot是简化Spring应用程序开发的扩展,而Spring Cloud是用于构建分布式系统的工具集合。这些框架和工具相互配合,可以帮助开发者更加高效地开发和部署Java应用程序,并处理分布式系统中的各种复杂问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值