springboot框架面试相关

springboot框架面试相关

1什么是springboot?

Spring Boot是Spring开源组织下的子项目,是Spring组件一站式解决方案,主要是简化了使用Spring的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手

2什么叫约定大于配置

https://baijiahao.baidu.com/s?id=1637222519335395430&wfr=spider&for=pc

约定优于配置(convention over configuration),也称作按约定编程,是一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。

在SpringBoot中,约定大于配置可以从以下两个方面来理解:

开发人员仅需规定应用中不符合约定的部分在没有规定配置的地方,采用默认配置,以力求最简配置为核心思想总的来说,上面两条都遵循了推荐默认配置的思想。当存在特殊需求的时候,自定义配置即可。这样可以大大的减少配置工作,这就是所谓的“约定”。

那么SpringBoot中有哪些约定呢?

Maven的目录结构。默认有resources文件夹,存放资源配置文件。src-main-resources,src-main-java。默认的编译生成的类都在targe文件夹下面spring boot默认的配置文件必须是,也只能是application.命名的yml文件或者properties文件,且唯一application.yml中默认属性。数据库连接信息必须是以spring: datasource: 为前缀;多环境配置。该属性可以根据运行环境自动读取不同的配置文件;端口号、请求路径等

3springboot可以用什么命令来启动

java -jar xxx.jar

4springboot的核心配置文件是什么,有几种类型的写法,分别是哪两种,并解释下两种写法的语法区别

application.properties  xx.properties和xx.yml  当同时出现两者 springboot优先读取properties
server.servlet.context-path=elk
server.port=8080
server:
  port: 8080
  servlet:
    context-path: /elk

5springboot的核心类是哪个?

xxAplllication

6核心类中有个什么注解,这个注解里有含有哪三个注解,分别解释下这三个注解的含义

@SpringBootApplication
定义:核心配置类 其中包含
-@SpringBootConfiguration
定义:通过@Component知道SpringBoot专用的 注入到spring容器 
-@EnableAutoConfiguration 其中包含
--@AutoConfigurationPackage 其中包含
定义:
---@Import({Registrar.class})
定义:spring底层注解表示导入类 这里导入Registrar类 
Registrar类中帮我们把 被@SpringBootApplication修饰的类所在路径以及其子路径注入到spring容器中

@Import({EnableAutoConfigurationImportSelector.class})
定义从META-INF/spring.factories路径下 以全类名的方式注入到容器中完成了自动配置 
@ComponentScan
定义:添加springboot扫描的路径,把我们需要注入的路径给添加进去


7在springboot中starter是什么

starter 启动器
定义:导入某个场景所需要的所有依赖

8在springboot中为什么可以不用写版本号

spring-boot-starter-parent
定义:依赖的版本控制器

9springboot默认打包成什么包

jar

10 如何添加一个扫描spring组件的注解

@ComponentScan

11你认为springboot的优点是什么

​ 简单,效率高,约定大于配置,可以用java -jar的方式来启动,可以独立部署

面试相关

1使用@value注解的语法

@Value(“#{configProperties[‘key’]}”)

@Value(“${key}”)

2使用@ConfigurationProperties的语法
@ConfigurationProperties(prefix=“person”)

3使用@ ConfigurationProperties读取yml 配置文件中list与map时候,中分别应该怎么写

4虽然上面两个注解都可以用来读取配置文件中内容,但你认为两个分别在什么场景中使用更好,分别说出理由

  • 如果只是某个业务中需要获取配置文件中的某项值或者设置具体值,可以使用@Value;
  • 如果一个JavaBean中大量属性值要和配置文件进行映射,可以使用@ConfigurationProperties;

5创建多环境配置文件的名字是如何定义的

-dev -prd -test

6如何指定调用哪个环境

spring.profiles.active=dev
默写

默写
1.简述mybatis中的mapper接口是如何找到 sql中的id的?

Mapper接口的全限名,就是映射文件中的namespace的值;
接口的方法名,就是映射文件中Mapper的Statement的id值;
接口方法内的参数,就是传递给sql的参数。

Mapper接口是没有实现类的,当调用接口方法时,
接口全限名+方法名拼接字符串作为key值,可唯一定位一个MapperStatement。
在Mybatis中,每一个、、、标签,
都会被解析为一个MapperStatement对象。

https://www.cnblogs.com/626zch/p/10776985.html

2.mysql的默认端口号是什么?
3306

3.@Configuration注解的含义?
声明该类为配置类,因为其中有@Component注解

  1. @MapperScan注解的含义?
    指定要扫描的Mapper类的包的路径,能够让mapper被引用

5.redis中一共有几种类型?
5种

6.集合类型与列表类型的区别?
列表(list) 可重复有序
集合(set) 不可重复无序

7.列表从列头插入用什么命令?从列尾插入用什么命令?
头插 lpush
尾插 rpush

8.你认为redis的几种类型数据分别合适用来做什么业务?

缓存(string)
分布式集群架构中的session分离(string)
任务队列(秒杀、抢购、12306等等)
应用排行榜(SortedSet)
网站访问统计(string)
数据过期处理(expire)
粉丝列表/文章评论(list)
去重(set)
去重排序(zset)

9.你认为redis是什么?
Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,官方提供测试数据,50个并发执行100000个请求,读的速度是110000次/s,写的速度是81000次/s ,且Redis通过提供多种键值数据类型来适应不同场景下的存储需求.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值