【Java架构师面试网】收集整理了几乎整个架构师学习途中会遇到的面试题,希望大家都能早日圆自己的架构师梦~ 公众号:Java架构师面试网,关注回复“资料”即可领取精美整理的面试资料一份哦~

1、什么是springboot

1) 用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(properties或yml文件) 2) 创建独立的spring引用程序 main方法运行 3) 嵌入的Tomcat 无需部署war文件 4) 简化maven配置

2、什么是 JavaConfig? Spring JavaConfig 是 Spring 社区的产品,它提供了配置 Spring IoC 容器的纯 Java 方法。因此它有助于避免使用 XML 配置。 使用 JavaConfig 的优点在于: 面向对象的配置。由于配置被定义为 JavaConfig 中的类,因此用户可以充分利用 Java 中的面向对象功能。一个配置类可以继承另一个,重写它的@Bean 方法等。 减少或消除 XML 配置。基于依赖注入原则的外化配置的好处已被证明。但是,许多开发人员不希望在 XML 和 Java 之间来回切换。 JavaConfig 为开发人员提供了一种纯 Java 方法来配置与 XML 配置概念相似的 Spring 容器。从技术角度来讲,只使用 JavaConfig 配置类来配置容器是可行的,但实际上很多人认为将 JavaConfig 与 XML 混合匹配是理想的。 类型安全和重构友好。 JavaConfig 提供了一种类型安全的方法来配置 Spring 容器。由于Java 5.0 对泛型的支持,现在可以按类型而不是按名称检索 bean,不需要任何强制转换或基于字符串的查找。

3、Spring Boot有哪些优点? 答:

1) 快速创建独立运行的spring项目与主流框架集成 2) 使用嵌入式的servlet容器,应用无需打包成war包 3) starters自动依赖与版本控制 4) 大量的自动配置,简化开发,也可修改默认值 5) 准生产环境的运行应用监控 6) 与云计算的天然集成

4、Spring Boot 提供了哪些核心功能?

1) 独立运行 Spring 项目 2) 内嵌 Servlet 容器 Spring Boot 可以选择内嵌 Tomcat、Jetty 或者 Undertow,这样我们无须以 war 包形式部署项目。 3) 提供 Starter 简化 Maven 配置 例如,当你使用了 spring-boot-starter-web ,会自动加入如下依赖:spring-boot-starter-web 的 pom 文件 4) 自动配置 Spring Bean Spring Boot 检测到特定类的存在,就会针对这个应用做一定的配置,进行自动配置 Bean ,这样会极大地减少我们要使用的配置。 5) 准生产的应用监控 Spring Boot 提供基于 HTTP、JMX、SSH 对运行时的项目进行监控。 6) 无代码生成和 XML 配置 Spring Boot 没有引入任何形式的代码生成,它是使用的 Spring 4.0 的条件 @Condition 注解以实现根据条件进行配置。同时使用了 Maven /Gradle 的依赖传递解析机制来实现 Spring 应用里面的自动配置。

5、如何重新加载Spring Boot上的更改,而无需重新启动服务器? 这可以使用DEV工具来实现。通过这种依赖关系,您可以节省任何更改,嵌入式tomcat将重新启动。 Spring Boot有一个开发工具(DevTools)模块,它有助于提高开发人员的生产力。Java开发人员面临的一个主要挑战是将文件更改自动部署到服务器并自动重启服务器。 开发人员可以重新加载Spring Boot上的更改,而无需重新启动服务器。这将消除每次手动部署更改的需要。Spring Boot在发布它的第一个版本时没有这个功能。 这是开发人员最需要的功能。DevTools模块完全满足开发人员的需求。该模块将在生产环境中被禁用。它还提供H2数据库控制台以更好地测试应用程序。

6、创建一个 Spring Boot Project 的最简单的方法是什么? Spring Initializer 是创建 Spring Boot Projects 的一个很好的工具

7、运行 Spring Boot 有哪几种方式?

1) 打包成 Fat Jar ,直接使用 java -jar 运行。目前主流的做法,推荐。 2) 在 IDEA 或 Eclipse 中,直接运行应用的 Spring Boot 启动类的 #main(String[] args) 启动。适用于开发调试场景。 3) 如果是 Web 项目,可以打包成 War 包,使用外部 Tomcat 或 Jetty 等容器。

8、Spring Boot中的监视器是什么? Spring boot actuator是spring启动框架中的重要功能之一。Spring boot监视器可帮助您访问生产环境中正在运行的应用程序的当前状态。 有几个指标必须在生产环境中进行检查和监控。即使一些外部应用程序可能正在使用这些服务来向相关人员触发警报消息。监视器模块公开了一组可直接作为HTTP URL访问的REST端点来检查状态。

9、什么是starter? Starter主要是用来简化maven依赖

10、Spring Boot 常用的 Starter 有哪些? spring-boot-starter-web :提供 Spring MVC + 内嵌的 Tomcat 。 spring-boot-starter-data-jpa :提供 Spring JPA + Hibernate 。 spring-boot-starter-data-redis :提供 Redis 。 mybatis-spring-boot-starter :提供 MyBatis 。

11、什么是YAML? YAML是一种人类可读的数据序列化语言。它通常用于配置文件。 与属性文件相比,如果我们想要在配置文件中添加复杂的属性,YAML文件就更加结构化,而且更少混淆。可以看出YAML具有分层配置数据。

12、如何集成Spring Boot和ActiveMQ? 对于集成Spring Boot和ActiveMQ,我们使用spring-boot-starter-activemq依赖关系。 它只需要很少的配置,并且不需要样板代码。

13、springboot常用的starter有哪些? spring-boot-starter-web 嵌入tomcat和web开发需要servlet与jsp支持 spring-boot-starter-data-jpa 数据库支持 spring-boot-starter-data-redis redis数据库支持 spring-boot-starter-data-solr solr支持 mybatis-spring-boot-starter 第三方的mybatis集成starter

14、springboot自动配置的原理 在spring程序main方法中 添加@SpringBootApplication或者@EnableAutoConfiguration 会自动去maven中读取每个starter中的spring.factories文件 该文件里配置了所有需要被创建spring容器中的bean

15、springboot读取配置文件的方式 springboot默认读取配置文件为application.properties或者是application.yml

16、Spring Boot 需要独立的容器运行吗? 可以不需要,内置了 Tomcat/ Jetty 等容器。

17、运行 Spring Boot 有哪几种方式? 1)打包用命令或者者放到容器中运行 2)用 Maven/ Gradle 插件运行 3)直接执行 main 方法运行

18、Spring Boot 的核心配置文件有哪几个?它们的区别是什么? Spring Boot 的核心配置文件是 application 和 bootstrap 配置文件。 application 配置文件这个容易了解,主要用于 Spring Boot 项目的自动化配置。 bootstrap 配置文件有以下几个应用场景。 使用 Spring Cloud Config 配置中心时,这时需要在 bootstrap 配置文件中增加连接到配置中心的配置属性来加载外部配置中心的配置信息; 少量固定的不能被覆盖的属性; 少量加密/解密的场景;

19、Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的? 启动类上面的注解是@SpringBootApplication,它也是 Spring Boot 的核心注解,主要组合包含了以下 3 个注解: @SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。 @EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。 @ComponentScan:Spring组件扫描

20、为什么我们需要 spring-boot-maven-plugin? spring-boot-maven-plugin 提供了一些像 jar 一样打包或者运行应用程序的命令。 spring-boot:run 运行你的 SpringBooty 应用程序。 spring-boot:repackage 重新打包你的 jar 包或者是 war 包使其可执行 spring-boot:start 和 spring-boot:stop 管理 Spring Boot 应用程序的生命周期(也可以说是为了集成测试)。 spring-boot:build-info 生成执行器可以使用的构造信息。

21、如何使用Spring Boot实现分页和排序? 使用Spring Boot实现分页非常简单。使用Spring Data-JPA可以实现将可分页的 org.springframework.data.domain.Pageable 传递给存储库方法。

22、什么是Swagger?你用Spring Boot实现了它吗? Swagger广泛用于可视化API,使用Swagger UI为前端开发人员提供在线沙箱。Swagger是用于生成RESTful Web服务的可视化表示的工具,规范和完整框架实现。它使文档能够以与服务器相同的速度更新。当通过Swagger正确定义时,消费者可以使用最少量的实现逻辑来理解远程服务并与其进行交互。因此,Swagger消除了调用服务时的猜测。

23、什么是Spring Profiles? Spring Profiles允许用户根据配置文件(dev,test,prod等)来注册bean。因此,当应用程序在开发中运行时,只有某些bean可以加载,而在PRODUCTION中,某些其他bean可以加载。假设我们的要求是Swagger文档仅适用于QA环境,并且禁用所有其他文档。这可以使用配置文件来完成。Spring Boot使得使用配置文件非常简单。

24、什么是Spring Batch? Spring Boot Batch提供可重用的函数,这些函数在处理大量记录时非常重要,包括日志/跟踪,事务管理,作业处理统计信息,作业重新启动,跳过和资源管理。它还提供了更先进的技术服务和功能,通过优化和分区技术,可以实现极高批量和高性能批处理作业。简单以及复杂的大批量批处理作业可以高度可扩展的方式利用框架处理重要大量的信息。

25、什么是FreeMarker模板? FreeMarker是一个基于Java的模板引擎,最初专注于使用MVC软件架构进行动态网页生成。使用Freemarker的主要优点是表示层和业务层的完全分离。程序员可以处理应用程序代码,而设计人员可以处理html页面设计。最后使用freemarker可以将这些结合起来,给出最终的输出页面。

26、什么是JavaConfig? Spring JavaConfig是Spring社区的产品,它提供了配置Spring IoC容器的纯Java方法。因此它有助于避免使用XML配置。使用JavaConfig的优点在于: 面向对象的配置。由于配置被定义为JavaConfig中的类,因此用户可以充分利用Java中的面向对象功能。一个配置类可以继承另一个,重写它的@Bean方法等。 减少或消除XML配置。基于依赖注入原则的外化配置的好处已被证明。但是,许多开发人员不希望在XML和Java之间来回切换。 JavaConfig为开发人员提供了一种纯Java方法来配置与XML配置概念相似的Spring容器。 从技术角度来讲,只使用JavaConfig配置类来配置容器是可行的,但实际上很多人认为将JavaConfig与XML混合匹配是理想的。 类型安全和重构友好。JavaConfig提供了一种类型安全的方法来配置Spring容器。由于Java 5.0对泛型的支持,现在可以按类型而不是按名称检索bean,不需要任何强制转换或基于字符串的查找

27、启动类注解: @SpringBootConfiguration:Spring Boot的配置类; 标注在某个类上,表示这是一个Spring Boot的配置类; @Configuration:配置类上来标注这个注解;配置类 ----- 配置文件;配置类也是容器中的一个组件;@Component @EnableAutoConfiguration:开启自动配置功能; 以前我们需要配置的东西,Spring Boot帮我们自动配置;@EnableAutoConfiguration告诉SpringBoot开启自动配置功能;这样自动配置才能生效; Spring Boot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值,将这些值作为自动配置类导入到容器中,自动配置类就失效,帮我们进行自动配置工作

28、配置文件的加载顺序 由jar包外向jar包内进行寻找; 优先加载带profile jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件 jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件 再来加载不带profile jar包外部的application.properties或application.yml(不带spring.profile)配置文件 jar包内部的application.properties或application.yml(不带spring.profile)配置文件

29、自动配置原理 1)、SpringBoot启动的时候加载主配置类,开启了自动配置功能 @EnableAutoConfiguration 2)、@EnableAutoConfiguration 作用: 将类路径下 META-INF/spring.factories 里面配置的所有EnableAutoConfiguration的值加入到了容器中; 每一个这样的 xxxAutoConfiguration类都是容器中的一个组件,都加入到容器中;用他们来做自动配置; 3)、每一个自动配置类进行自动配置功能; 根据当前不同的条件判断,决定这个配置类是否生效; 4)、一但这个配置类生效;这个配置类就会给容器中添加各种组件;这些组件的属性是从对应的properties类中获取 的,这些类里面的每一个属性又是和配置文件绑定的; 5)、所有在配置文件中能配置的属性都是在xxxxProperties类中封装者‘;配置文件能配置什么就可以参照某个功 能对应的这个属性类

30、怎么用好自动配置,精髓: 1)、SpringBoot启动会加载大量的自动配置类 2)、我们看我们需要的功能有没有SpringBoot默认写好的自动配置类; 3)、我们再来看这个自动配置类中到底配置了哪些组件;(只要我们要用的组件有,我们就不需要再来配置了) 4)、给容器中自动配置类添加组件的时候,会从properties类中获取某些属性。我们就可以在配置文件中指定这 些属性的值;

31、日志框架: SpringBoot选用 SLF4j和logback; 如何让系统中所有的日志都统一到slf4j; 1、将系统中其他日志框架先排除出去; 2、用中间包来替换原有的日志框架; 3、我们导入slf4j其他的实现 SpringBoot能自动适配所有的日志,而且底层使用slf4j+logback的方式记录日志

32、Spring Boot、Spring MVC 和 Spring 有什么区别 Spring 是一个“引擎”, Spring MVC是基于Spring的一个 MVC 框架, Spring Boot是基于 Spring的一套快速开发整合包

33、我们如何监视所有 Spring Boot 微服务? Spring Boot 提供监视器端点以监控各个微服务的度量。这些端点对于获取有关应用程序的信息(如它们是否已启动)以及它们的组件(如数据库等)是否正常运行很有帮助。但是,使用监视器的一个主要缺点或困难是,我们必须单独打开应用程序的知识点以了解其状态或健康状况。想象一下涉及 50 个应用程序的微服务,管理员将不得不击中所有 50 个应用程序的执行终端。

嗨,你好呀,未来的架构师,本文由Java架构师面试网www.javajiagoushi.com收集整理并进行编辑发布,谢谢大家的支持~

年薪30万的Java架构师必会的springboot面试题相关推荐

  1. java处理图像库函数_图象处理详解-Java架构师必看

    作者:未知    请与本人联系 在使用ASP的时候,我们时常要借助第三方控件来实现一些图象功能.而数据库 作者:未知     请与本人联系 在使用ASP的时候,我们时常要借助第三方控件来实现一些图象功 ...

  2. 进阶Java架构师必看书:大型架构+框架+性能优化+中间件+分布式

    进阶Java架构师必看书:大型架构+框架+性能优化+中间件+分布式 优知学院 2018-09-05 07:21:00 1.大型网站技术架构:核心原理与案例分析 本书通过梳理大型网站技术发展历程,剖析大 ...

  3. java chunked 解码_Tranfer-Encoding:chunked编码解析-Java架构师必看

    当不能预先确定报文体的长度时,不可能在头中包含Content-Length域来指明报文体长度,此时就网络 当不能预先确定报文体的长度时,不可能在头中包含Content-Length域来指明报文体长度, ...

  4. Java架构师必知必会,带走不谢

    可以说,Java是现阶段中国互联网公司中,覆盖度最广的研发语言,掌握了Java技术体系,不管在成熟的大公司,快速发展的公司,还是创业阶段的公司,都能有立足之地. 成为Java架构师,需要掌握哪些技能呢 ...

  5. sqlrelay mysql_数据库连接池SQL Relay安装使用-Java架构师必看

    SQLRelay按照其官网http://sqlrelay.sourceforge.net/indePHP SQL Relay按照其官网http://sqlrelay.sourceforge.net/i ...

  6. php自动加载指定类,PHP自动加载类-Java架构师必看

    test.php 当前目录下有j.phpPHP test.php function __autoload($class_name) { require_once $class_name . '.php ...

  7. java定义dll文件位置,生成网站时如何设置固定的dll文件名?-Java架构师必看

    在用VS2005发布网站项目时,默认生成bin目录下的.dll文件名是随机命名的; 如果要固定生成文网络 在用VS2005发布网站项目时,默认生成bin目录下的.dll文件名是随机命名的; 如果要固定 ...

  8. java url 处理,URL处理-Java架构师必看

    完整URL地址:http://username:password@hostname/path?ar网络 协议:http:// 用户名和密码: username:password  以:将两者分隔 主机 ...

  9. 年薪50万的Python架构师 不是梦

    年薪50万的Python架构师 不是梦 秒杀系统涉及主要技术有: Pytho Django 开发: Django web 页面静态化: Python Redis Sentinel(哨兵)集群开发: R ...

最新文章

  1. pip更换国内镜像源
  2. 【原创翻译】如何阅读一个GO程序
  3. 从起源到未来:能自己编程和改进的超人工智能会出现吗?
  4. AttributeError: 'dict' object has no attribute 'iteritems' python3报错
  5. 芒果超媒:子公司与咪咕文化签署合作框架协议
  6. Json学习总结(6)——Fastjson远程代码执行漏洞
  7. QT遍历 Json 根节点
  8. NetXray使用说明之(6)----捕捉oicq message报文 (转)
  9. [webpack] Content not from webpack is served from “xxxx“ 并且 http://localhost:8080/ 数据为空解决方案
  10. Echarts经纬度数组
  11. Windows10键盘快捷键大全
  12. 网站图片怎么优化搜索排名
  13. 虚拟机开启系统蓝屏报错:“终止代码:SYSTEM_SERVICE_ECXEPTION“
  14. 完整iOS APP发布App Store上架流程指南
  15. 6.1 matlab数值微分与数值积分
  16. 送你一份2019年最新最全的技能图谱(附思维导图)!
  17. 大二Web课程设计:服装网页设计题材——HTML+CSS汉服文化带背景音乐素材带视频(12页)
  18. SQL:查找或删除重复行
  19. 华为p50刷机能用吗华为p40pro怎么刷机解锁华为p50激活设备密码华为p50pro远程解锁华为p50手机能刷机吗华为p50pro刷机教程视频华为p50pro忘记密码
  20. 全球与中国动臂和剪式举升机市场深度研究分析报告

热门文章

  1. python父类方法的装饰器_Python使用装饰器自动调用父类__init__
  2. (29)System Verilog进程间同步(旗语semaphore)
  3. (47)FPGA指数运算符(V代码实现)
  4. 【STM32】手把手固件库开发工程建立
  5. php 检测nfs状态,PHP和Shell实现检查SAMBA与NFS Server是否存在_php技巧
  6. libev源码分析(一)libev数据结构整理
  7. Linux下的虚拟Bridge实现
  8. (9)引入哈希桶的概念来实现一个哈希表
  9. 【Shell教程】二----Shell变量,通配符,转义符
  10. 嵌入式Linux系统编程学习之二十无名管道(PIPE)