SpringBoot+SpringCloud常见基础面试题——持续更新中

引言:本人目前是大四的科班软件工程专业学生,正在面临实习找工作,自己总结了一些常见的SpringBoot+SpringCloud里基础的面试题,同时分享给大家。

第一部分——初始SpringBoot

1. 请列举几个SpringBoot的核心模块,并说说它们的作用。
答:spring-boot,spring-boot-starters,spring-boot-autoconfigure,spring-boot-test,spring-boot-test-autoconfigure。
spring-boot: spring-boot是SpringBoot的主模块,也是支持其他模块的核心模块。
(1)提供了一个启动Spring应用的主类,目的是创建和刷新Spring容器的上下文。
(2)提供了内嵌式的Web应用容器,如:Tomcat,Jetty等。
(3)支持外部化配置。
(4)提供了上下文初始化器。
spring-boot-starters: spring-boot-starters是SpringBoot的启动器,将Spring及其相关技术应用打包,免去了开发者寻找依赖的过程,开发者只需要启动spring-boot-starter-web启动器,该模块就会自动配置Web应用。
spring-boot-autoconfigure: spring-boot-autoconfigure可以根据类路径下的内容自动配置,提供的@EnableAutoConfiguration注解可以启动SpringBoot的自动配置功能。自动配置功能可以推断开发者可能需要的SpringBean。
spring-boot-test: spring-boot-test是SpringBoot测试模块,为应用测试提供了许多核心功能。
spring-boot-test-autoconfigure: spring-boot-test-autoconfigure为spring-boot-test提供了自动装配。

2. SpringBoot有哪些优点?
答:
(1)独立运行
SpringBoot内嵌了各种Servlet容器,不需要构建war包部署,SpringBoot直接构建一个可执行的jar包就能独立运行,所有依赖都在一个jar包中。
(2)简化Maven配置
SpringBoot提供的依赖极大的减少了Maven的依赖配置。
(3)自动装配
SpringBoot可以根据当前类路径下的类和jar包里面的类进行自动装配SpringBean,无需进行其他配置。
(4)无代码生成和XML配置
SpringBoot配置过程中无代码生成,不需要XML配置文件就能完成所有配置工作。
(5)应用监控
SpringBoot提供的一系列端点可以监控服务,能对Spring应用进行健康检测。

3. 举例约定大于配置理念。
答:约定大于配置是一种软件设计范式,目的是减少开发者做决定的次数。比如:在entity包下有一个User类,数据库中就对应这“user”表。只有在远离这一约定时,如:数据表名为“t_user”时,才需要写相关配置。简而言之,当所用工具的约定与自己的期待相符时,可以省去配置,否则就需要自己配置来达到预期效果。

4. @ResponseBody的作用是什么?
答:@ResponseBody加在方法前,表示将该方法的返回结果写入HTTP response body中,并返回给前端,如果不加,则解析为跳转路径。

5. 热部署是什么,它有什么优点?
答:使项目根据改动自动编译,即修改代码后无需重启项目就可以生效的特性,就叫热部署。
优点:减少项目重启的时间,显著提高开发效率。

6. 如果让你创建一个SpringBoot项目,你会如何划分项目结构?
答:
(1)controller包:用于存放控制器类,处理来自客户端的请求并返回响应。
(2)service包:用于存放业务逻辑的实现类,处理具体的业务逻辑。
(3)dao包:用于存放数据访问对象的接口或实现类,用于与数据库进行交互。
(4)model包:用于存放实体类或数据模型类,用于封装数据。
(5)dto包:用于存放数据传输对象类,用于在不同层之间传输数据。
(6)utils包:用于存放通用的工具类,如日期处理、字符串处理等。
(7)config包:用于存放配置类,如数据库配置、缓存配置等。
(8)exception包:用于存放自定义异常类。
(9)constant包:用于存放常量类,如错误码、常用常量等。

7. 通过SpringBoot的Actuator监控可以查看哪些信息?
答:

端点路径作用
/env查看全部环境属性
/health查看应用程序的健康指标
/info查看应用程序信息
/mappings查看全部的URL路径,以及它们和控制器的映射关系
/metrics查看应用程序的度量信息,如内存用量、HTTP请求计数
/beans查看Spring容器中所有的Bean信息及其依赖关系
/threaddump查看线程信息
/loggers查看日志信息
/shutdown关闭应用程序

8. YAML有哪些优点?
答:
(1)配置简洁
(2)结构层次清晰,配置项可以收起和展开。

9. YAML语法要求?
答:
(1)区分大小写
(2)使用键值对,且值和冒号之间有一个空格
(3)“-”和驼峰命名法都可以用
(4)使用缩进表示层级关系,同层必须左对齐
(5)缩进使用空格,空格数无限制,只要同层左对齐即可,不建议使用制表符(Tab键)
(6)注释用“#”,只能单行注释
(7)数组用“-”开头,所有元素可以写在一行,用方括号标注
(8)字符串可以不用单引号或双引号标注,除非含有特殊字符
(9)在一个文件中,可同时包含多个文件,用“—”分割

10. 你做过的项目中,使用properties还是YAML?你觉得哪个好,为什么?
答:我做过的项目中,properties和YAML都使用过,当配置少且短的时候,properties比YAML好,因为properties语法简单,使用方便,当配置多且长的时候,YAML比properties好,因为它结构清晰,更便于维护。

11. SpringBoot项目中properties和YAML都配置了,优先加载哪一个?
答:当application.properties和application.yaml进行优先级加载时,它们都会加载,并不是application.properties加载了application.yaml就不加载了,而是它们的内容根据优先级的高低进行合并。因此项目中properties和YAML都配置了,优先加载properties。

第二部分——深入SpringBoot

1. 注解@EnableAutoconfiguration的作用是什么?
答:@EnableAutoConfiguration注解的作用是开启Spring Boot的自动配置功能。这是Spring Boot最核心的特性之一,也是约定大于配置设计思想的主要体现。通过使用@EnableAutoConfiguration注解,我们可以让Spring Boot根据类路径下的依赖自动配置Bean,并且根据具体的场景选择合适的配置。

2. 简述SpringBoot项目的自动装配过程。
答:SpringBoot的自动装配是基于约定大于配置的理念,通过使用一些通用的配置来简化Spring应用的搭建和开发过程。在SpringBoot中,通过使用注解@SpringBootApplication来标识一个类作为SpringBoot应用的入口点。这个注解包含了其他一些注解,如@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentScan等。
@SpringBootConfiguration注解表示该类是一个配置类,用于定义应用程序的配置信息。@EnableAutoConfiguration注解启用了Spring Boot的自动装配功能,它会根据应用程序的依赖信息和配置来自动装配所需的Bean。@ComponentScan注解用于指定要扫描的组件的基本包路径,并自动注册为SpringBean。
自动装配的过程依赖于一系列的场景启动器(starter),这些启动器是由SpringBoot社区编写的,用于简化特定场景下的应用程序配置。每个场景启动器都包含了一些默认的配置和依赖项,可以直接引入到项目中。通过引入相应的场景启动器,SpringBoot可以自动根据项目的需求来装配相关的功能。
总结来说,SpringBoot的自动装配过程是基于约定大于配置的思想,通过注解和场景启动器来简化和自动化应用程序的配置和装配。

3. 简述SpringBoot项目的启动过程。
答:
(1)在项目的主类上添加@SpringBootApplication注解,这是SpringBoot应用的标识注解。
(2)在主类的main方法中,使用SpringApplication的run方法来启动应用程序。
(3)当应用程序启动时,SpringApplication会自动扫描并加载所有的配置,包括应用程序的配置文件和依赖的配置。
(4)SpringApplication根据配置文件中的设置,创建并初始化Spring容器,包括创建Bean实例、依赖注入等操作。
(5)Spring容器初始化完成后,会自动触发应用程序的各种生命周期事件,如应用程序启动事件、上下文加载事件等。
(6)启动完成后,SpringBoot会自动扫描并加载所有的注解,包括@Controller、@Service、@Repository等,将它们注册为Spring的Bean。
(7)最后,SpringBoot会启动内嵌的Tomcat服务器,并将应用程序部署到Tomcat中,使其可以通过HTTP协议访问。 总之,SpringBoot的启动过程主要包括加载配置、初始化Spring容器、注册Bean、启动内嵌服务器等步骤。这些过程都是自动进行的,无需开发人员手动配置和操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学徒钝子生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值