当前位置: 首页 > news >正文

面试题目总结(三)

1. Spring、Springboot、springMVC、Spring Cloud 的区别:

  1. Spring:Spring 是一个开源的、轻量级的Java框架,提供了丰富的功能和组件,用于构建企业级应用程序。Spring框架包含了很多模块,包括核心容器、数据访问、事物管理、AOP、Web开发等,可以根据需要选择使用不同的模块。
  2. Springboot:Springboot 是基于 Spring 框架的快速开发框架,旨在简化 Spring 应用程序的配置和部署过程。它提供了自动配置,快速启动,约定优于配置等特性,使得开发者可以更加专注于业务逻辑的实现而不需要过多关注繁琐的配置。Springboot还集成了常用的功能,如嵌入式服务器、安全性、健康检查等,方便快速构建独立的可执行JAR包。
  3. SpringMVC:SpringMVC是Spring 框架中的一个模块,用于开发基于MVC(Model-View-Controller)架构程序。它提供了一套处理HTTP请求和响应的机制,支持通过注解或配置文件进行请求映射、请求参数处理、视图解析等操作。SpringMVC是一个灵活且功能的Web框架,可以与其他Spring模块(如Springboot)进行集成使用。
  4. SpringCloud 是一个基于Springboot的开发工具集,用于构建分布式系统和微服务架构。它提供了一系列的组件和模块,用于解决分布式系统中的常见问题,例如访问注册与发现、负载均衡、熔断器、配置管理等。

2. 使用线程池创建线程时参数有哪些

  1. corePoolSize:核心线程池大小,表示线程池在保持的线程数码,即使它们处于空闲状态。当提交一个新的任务到线程时,如果当前线程池中的线程数量少于corePoolSize,则会常见一个新的线程来处理该任务,即使此时其他空闲的基本线程能够处理该任务也会创建新的线程,直到到达corePoolSize为止。
  2. maximumPoolSize:最大线程池大小,表示线程池中最多呢创建的线程数目。当提交一个新任务到线程池时,如果当前线程池中的线程数目已经达到corePoolSize,并且缓冲队列已满,则会根据maximumPoolSize的值来判断是否创建新的线程。如果当前线程池中的线程数目小于maximumPoolSize,则会创建新的线程。如果当前线程池中的线程数目等于或大于maximunPoolSize,则不会创建新的线程。
  3. keepAliveTime:线程池维护线程所允许的空闲时间,默认情况下,KeepAliveTime设置为0表示线程空闲后立即终止。当线程池中线程数量超过corePoolSize时,如果这些多余的线程空闲时间超过KeepAliveTime时长,则这些多余的线程将会被终止。
  4. unit:keepAliveTime的单位,可以是TimeUnit.MILLISECONDS(毫秒)、TimeUnit.SECONDS(秒)等等。
  5. workQueue:任务队列,用于储存已经提交但尚未执行的任务。常用的队列类型有:ArrayBlockingQueue、LinkedBlockingQueue、SynchronousQueue、PriorityBlockingQueue等。
  6. threadFactory:线程创建工厂,用于设置创建线程时的一些属性,例如线程名称、是否为守护线程等。
  7. handler:拒绝策略,表示当前线程池中的线程数目达到maximumPoolSize并且缓冲队列已满时,如何拒绝新任务的执行。常见的拒绝策略有以下几种:AbortPolicy、CallerRunPolicy、DiscardOldestPolicy、DiscardPolicy

3. 常见事物的隔离级别

事物的隔离级别是数据库管理系统中用来控制事物并发访问是数据可见性的一种机制

  1. 读未提交(Read Uncommitted):允许一个事读取另一个事务未提交的数据。这种隔离级别可能导致脏读,即一个事务读取了另一个事务未提交的数据,而后者最终被回滚,导致前者读取到的数据是无效的。
  2. 读已提交(Read Committed):保证一个事务只能读取到另一个事务已经提交的数据。这种隔离级别可以避免脏读,但可能导致不可重复读,即在同一个事务中,由于其他事物的提交,某个数据的值发生了变化。
  3. 可重复读(Repeatable Read):保证在同一个事务中多次读取同样的数据是,结果始终一致。这种隔离级别可以避免不可重复读,但可能会导致幻读,即在事务中,由于其他事务的插入或删除,出现了新增或减少的数据行。
  4. 序列化(Serializable):最高的隔离级别,通过强制事务船型执行来避免脏读、不可重复读和幻读、虽然可以解决并发访问导致的数据不一致问题,但会导致性能严重下降。

4. 数据库的索引类型有哪些

  1. B-树索引(B-tree Index):B-树是一种平衡的多路搜索树,常用于支持范围查询。它适用于大多数数据库系统,如MySQL、Oracle等。
  2. B+树索引(B+tree Index):B+树是在B-树的基础上进行优化的数据结构,它将所有的数据都储存在叶子节点,并使用连接叶子节点,适用于范围查询和数据访问。B+树索引在很多关系型数据库中被广泛使用。
  3. 哈希索引(Hash Index):哈希索引通过将索引列的值计算哈希值,然后根据哈希值进行快速查找。哈希索引适合等值查询,但不适合范围查询。例如,MySQL的内存表和MyISAM引擎支持哈希索引。
  4. 全文索引(Full-Text Index):全文索引通常用于对文本内容进行搜索。它可以创建关键词索引,以便在文本中进行全文索引。全文索引可以加快文本搜索的速度,常见的数据库系统如MySQL、PostgreSQL都提供了全文索引功能。
  5. 位图索引(Bitmap Index):位图索引将每个唯一的索引值与位图进行映射,位图的每一位表示对应索引值的存在或缺失。位图索引适用于低基数的列。比如性别、状态等。

5. SpringBoot 的执行流程

SpringBoot 是一个基于 Spring 框架的快速开发框架,它通过自动配置和约定优于配置的原则,简化了Spring应用程序的开发流程,提供了一种快速构建、易于部署的方式。

  1. 加载配置文件:SpringBoot 会自动加载 application.properties 或 application.yml 等配置文化,并将其中的配置顶绑定到对应的Java对象上,这些对象被称为Spring Bean。
  2. 创建 Spring IoC 容器:SpringBoot 会根据配置文件中的信息创建一个Spring IoC 容器,并将其中的所有Bean都装载到容器中,在这个过程中,SpringBoot 会自动扫描所有的类,并根据注解自动配置Bean。
  3. 运行应用程序:SpringBoot 会自动其实Web服务器,监听客户端请求,并将请求交给合适的Controller 进行处理。在 Controller 中,SpringBoot 会自动绑定请求参数和响应结果,并调用 Service处理业务逻辑。
  4. 处理请求:在处理请求的过程中,SpringBoot 会自动执行拦截器、过滤器等组件,以及处理异常、日志等功能。同时,SpringBoot 还提供了缓存、事务、安全、任务调度等常用功能,方便开发者使用。
  5. 关闭应用程序:当应用程序关闭时,SpringBoot 会自动销毁所有的 Bean,释放资源,并关闭Web服务器。

相关文章:

  • HTML5 Audio/Video 标签、属性、方法、事件汇总
  • 使用Mockjs模拟(假数据)接口(axios)
  • 常见的设计模式-简述
  • Mars3d的gltf零部件控制(运载火箭)示例关于gltf内部的animations说明
  • 零元购:一种新型的消费模式?
  • 如何写出高质量博客的思考
  • 数据库产品层出不穷,金融行业应该怎么选?|飞轮科技联合创始人连林江
  • Gitlab+GitlabRunner搭建CICD自动化流水线将应用部署上Kubernetes
  • 数字化转型对企业有什么好处?
  • Java UDP 多人聊天室简易版
  • MySQL注入入门简述
  • 安防视频监控系统EasyNVR平台集成后无法播放的原因与解决步骤
  • 如何将CAD图纸导入Revit软件?
  • 五、HotSpot细节实现
  • Python数值类型(整形、浮点型和复数)及其用法
  • 【翻译】babel对TC39装饰器草案的实现
  • JavaScript设计模式之工厂模式
  • js操作时间(持续更新)
  • js作用域和this的理解
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • React-redux的原理以及使用
  • React组件设计模式(一)
  • ViewService——一种保证客户端与服务端同步的方法
  • vue-loader 源码解析系列之 selector
  • 从零搭建Koa2 Server
  • 简单基于spring的redis配置(单机和集群模式)
  • 模型微调
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 优化 Vue 项目编译文件大小
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • (rabbitmq的高级特性)消息可靠性
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (译) 函数式 JS #1:简介
  • (转)C#调用WebService 基础
  • (转)EXC_BREAKPOINT僵尸错误
  • .bat文件调用java类的main方法
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .net2005怎么读string形的xml,不是xml文件。
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • @SuppressWarnings(unchecked)代码的作用
  • @transactional 方法执行完再commit_当@Transactional遇到@CacheEvict,你的代码是不是有bug!...
  • [ vulhub漏洞复现篇 ] Grafana任意文件读取漏洞CVE-2021-43798
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具
  • [C# 开发技巧]如何使不符合要求的元素等于离它最近的一个元素
  • [c]扫雷
  • [c++] C++多态(虚函数和虚继承)
  • [CF543A]/[CF544C]Writing Code
  • [Everyday Mathematics]20150130
  • [ffmpeg] av_opt_set 解析
  • [hdu 2896] 病毒侵袭 [ac自动机][病毒特征码匹配]
  • [HDU5685]Problem A
  • [javaSE] 数据结构(二叉查找树-插入节点)
  • [JS]Math.random()随机数的二三事