面试题目总结(三)
2023-12-13 05:57:32
1. Spring、Springboot、springMVC、Spring Cloud 的区别:
- Spring:Spring 是一个开源的、轻量级的Java框架,提供了丰富的功能和组件,用于构建企业级应用程序。Spring框架包含了很多模块,包括核心容器、数据访问、事物管理、AOP、Web开发等,可以根据需要选择使用不同的模块。
- Springboot:Springboot 是基于 Spring 框架的快速开发框架,旨在简化 Spring 应用程序的配置和部署过程。它提供了自动配置,快速启动,约定优于配置等特性,使得开发者可以更加专注于业务逻辑的实现而不需要过多关注繁琐的配置。Springboot还集成了常用的功能,如嵌入式服务器、安全性、健康检查等,方便快速构建独立的可执行JAR包。
- SpringMVC:SpringMVC是Spring 框架中的一个模块,用于开发基于MVC(Model-View-Controller)架构程序。它提供了一套处理HTTP请求和响应的机制,支持通过注解或配置文件进行请求映射、请求参数处理、视图解析等操作。SpringMVC是一个灵活且功能的Web框架,可以与其他Spring模块(如Springboot)进行集成使用。
- SpringCloud 是一个基于Springboot的开发工具集,用于构建分布式系统和微服务架构。它提供了一系列的组件和模块,用于解决分布式系统中的常见问题,例如访问注册与发现、负载均衡、熔断器、配置管理等。
2. 使用线程池创建线程时参数有哪些
- corePoolSize:核心线程池大小,表示线程池在保持的线程数码,即使它们处于空闲状态。当提交一个新的任务到线程时,如果当前线程池中的线程数量少于corePoolSize,则会常见一个新的线程来处理该任务,即使此时其他空闲的基本线程能够处理该任务也会创建新的线程,直到到达corePoolSize为止。
- maximumPoolSize:最大线程池大小,表示线程池中最多呢创建的线程数目。当提交一个新任务到线程池时,如果当前线程池中的线程数目已经达到corePoolSize,并且缓冲队列已满,则会根据maximumPoolSize的值来判断是否创建新的线程。如果当前线程池中的线程数目小于maximumPoolSize,则会创建新的线程。如果当前线程池中的线程数目等于或大于maximunPoolSize,则不会创建新的线程。
- keepAliveTime:线程池维护线程所允许的空闲时间,默认情况下,KeepAliveTime设置为0表示线程空闲后立即终止。当线程池中线程数量超过corePoolSize时,如果这些多余的线程空闲时间超过KeepAliveTime时长,则这些多余的线程将会被终止。
- unit:keepAliveTime的单位,可以是TimeUnit.MILLISECONDS(毫秒)、TimeUnit.SECONDS(秒)等等。
- workQueue:任务队列,用于储存已经提交但尚未执行的任务。常用的队列类型有:ArrayBlockingQueue、LinkedBlockingQueue、SynchronousQueue、PriorityBlockingQueue等。
- threadFactory:线程创建工厂,用于设置创建线程时的一些属性,例如线程名称、是否为守护线程等。
- handler:拒绝策略,表示当前线程池中的线程数目达到maximumPoolSize并且缓冲队列已满时,如何拒绝新任务的执行。常见的拒绝策略有以下几种:AbortPolicy、CallerRunPolicy、DiscardOldestPolicy、DiscardPolicy
3. 常见事物的隔离级别
事物的隔离级别是数据库管理系统中用来控制事物并发访问是数据可见性的一种机制
读未提交(Read Uncommitted)
:允许一个事读取另一个事务未提交的数据。这种隔离级别可能导致脏读
,即一个事务读取了另一个事务未提交的数据,而后者最终被回滚,导致前者读取到的数据是无效的。读已提交(Read Committed)
:保证一个事务只能读取到另一个事务已经提交的数据。这种隔离级别可以避免脏读,但可能导致不可重复读
,即在同一个事务中,由于其他事物的提交,某个数据的值发生了变化。可重复读(Repeatable Read)
:保证在同一个事务中多次读取同样的数据是,结果始终一致。这种隔离级别可以避免不可重复读,但可能会导致幻读
,即在事务中,由于其他事务的插入或删除,出现了新增或减少的数据行。序列化(Serializable)
:最高的隔离级别,通过强制事务船型执行来避免脏读、不可重复读和幻读、虽然可以解决并发访问导致的数据不一致问题,但会导致性能严重下降。
4. 数据库的索引类型有哪些
- B-树索引(B-tree Index):B-树是一种平衡的多路搜索树,常用于支持范围查询。它适用于大多数数据库系统,如MySQL、Oracle等。
- B+树索引(B+tree Index):B+树是在B-树的基础上进行优化的数据结构,它将所有的数据都储存在叶子节点,并使用连接叶子节点,适用于范围查询和数据访问。B+树索引在很多关系型数据库中被广泛使用。
- 哈希索引(Hash Index):哈希索引通过将索引列的值计算哈希值,然后根据哈希值进行快速查找。哈希索引适合等值查询,但不适合范围查询。例如,MySQL的内存表和MyISAM引擎支持哈希索引。
- 全文索引(Full-Text Index):全文索引通常用于对文本内容进行搜索。它可以创建关键词索引,以便在文本中进行全文索引。全文索引可以加快文本搜索的速度,常见的数据库系统如MySQL、PostgreSQL都提供了全文索引功能。
- 位图索引(Bitmap Index):位图索引将每个唯一的索引值与位图进行映射,位图的每一位表示对应索引值的存在或缺失。位图索引适用于低基数的列。比如性别、状态等。
5. SpringBoot 的执行流程
SpringBoot 是一个基于 Spring 框架的快速开发框架,它通过自动配置和约定优于配置的原则,简化了Spring应用程序的开发流程,提供了一种快速构建、易于部署的方式。
- 加载配置文件:SpringBoot 会自动加载 application.properties 或 application.yml 等配置文化,并将其中的配置顶绑定到对应的Java对象上,这些对象被称为Spring Bean。
- 创建 Spring IoC 容器:SpringBoot 会根据配置文件中的信息创建一个Spring IoC 容器,并将其中的所有Bean都装载到容器中,在这个过程中,SpringBoot 会自动扫描所有的类,并根据注解自动配置Bean。
- 运行应用程序:SpringBoot 会自动其实Web服务器,监听客户端请求,并将请求交给合适的Controller 进行处理。在 Controller 中,SpringBoot 会自动绑定请求参数和响应结果,并调用 Service处理业务逻辑。
- 处理请求:在处理请求的过程中,SpringBoot 会自动执行拦截器、过滤器等组件,以及处理异常、日志等功能。同时,SpringBoot 还提供了缓存、事务、安全、任务调度等常用功能,方便开发者使用。
- 关闭应用程序:当应用程序关闭时,SpringBoot 会自动销毁所有的 Bean,释放资源,并关闭Web服务器。
文章来源:https://blog.csdn.net/bao_14440/article/details/134818829
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!