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注解
- @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通过提供多种键值数据类型来适应不同场景下的存储需求.