spring+SpringMVC+mybatis面试总结 ╰半夏微凉° 2022-11-15 05:57 89阅读 0赞 1,主键和索引的区别是什么? * 主键的特殊的索引,不能重复,不能为空,一个表只能有一个主键(从数据库完整性的角度出发) * 索引:从提高查询速度的角度出发,相当于字典的目录,一个表可以有多个索引。索引是基于一个列创建的,索引他把这些值存储在b树中。 2,为什么使用B树做索引的数据结构? * 因为它的时间复杂度低是对数级别的,查找插入,删除速度快,关键字有序查找时可以减少IO的次数(树的高度低) * B+树比B树,占用的磁盘空间更小,IO读写代价更低。 * 主键外键必须有索引,链接的字段,where字句的字段,大表中的小字段建立索引 3,ACID指的是什么: * A:是原子性,每个事物都是不可分割的单元,要么所有操作都执行要么都没有执行 * C:是一致性,数据库要一直处于一致的状态,强调数据的可见性,中间状态的数据不可见,最初和最终的状态可见。且保持一致。总的前没有变 * I:隔离性,多个事物并发执行时,一个事物的运行结果不能影响其它事物。 * D:永久性:已经执行的操作就永久生效(系统崩溃也不会丢失数据) 4,表级锁与行级锁的区别? * 表级锁:开销小,加锁快,无死锁。锁粒度大,并发度低 * 行级锁相反。 5,数据库并发时可能出现的问题有哪些? * 脏读:A添加了数据但没有提交事物,B却查到了A添加的数据 * 不可重复读:A修改了数据,导致B事物两次查询的结果不一致 * 幻读:A删除或者添加数据,导致B查询的结果不一致 * 解决方法:读未提交——读提交——可重复读——窜行化 6,删除表关键字有哪些,他们的区别是? * 有truncate,delete,drop * truncate 和delete不删除表结构,Drop删除表结构, * truncate是直接清空表中的记录速度快(和事物无关) 和delete是一条一条的删除 1,为什么要使用spring? * 为了方便解耦,将所有的对象创建和依赖关系的维护交spring容器管理 * spring还支持AOP编程,可以很方便的实现对程序进行程序拦截,运行监控的等功能 * spring还提供声明式事物的支持(通过配置完成对事物的支持,不需要手动编程实现) * 方便测试,spring对Junit4支持,可以通过注解来测试测序 * 方便集成各种优秀的框架。 2,你是如何理解AOP的 * 我们平常写核心代码的时候是纵向编程的,直接跟着流程往下写。但是写到一些模块的时候,比如权限控制,日志记录,事物控制时,会出现大量的重复代码,于是我就把相关的重复代码抽出来写出一个公共的代码块,并且把它交个spring容器管理,实现解耦。(Active,jointPoint,pointCut,Aspect是前面两者的结合),感觉像装饰器模式,通过其它公用的方法对一些方法进行了增强。 * AOP是面向切面编程,是OOP编程的有效补充,可以将一些系统性相关的工作独立实现, 3,如何理解IOC控制反转? * 为了降低程序中雷雨类之间的耦合吗,我们把对象交给spring容器来管理(工厂模式,代理模式) 4,spring有哪些模块? * core:spring的核心类库,spring的所有功能都依赖核心类库,只要实现的是IOC功能 * aop:面向切面编程,提供拦截器机制 * orm:对象关系映射,是一种将内存中的对象保存到关系型数据库中的技术。spring本身并不对orm进行实现,仅对常见的orm框架进行封装,并对它进行管理 * dao:提供对JDBC的支持,对JDBC进行封装,并且可以统一管理JDBC的事物 * mvc:提供了springMVC进行web开发 * web:提供了对springMVC框架的支持,Structs。可以在这些框架前后配置拦截器 * context:提供框架式的bean访问方式(注解注入),和context来获取配置文件对象,对配置文件进行初始化时得到bean中的对象 5,spring常用的注入方式有哪些? * setter属性注入 * 构造方法注入 * 注解方式注入 6,spring中的bean是线程安全的吗? * bean默认是单利模式,spring框架并没有对单例的bean进行多线程封装处理,对于dao类基本上是无状态,所以某种程度上bean是安全的,但是对于view model对象是有状态的,就需要我们去保证 7,spring支持的5种作用域如下: * singleton:spring ioc 容器中只存在一个bean实例,bean以单例模式存在,是系统的默认值 * prototype:每次从容器中调用Bean的时候就创建一个新的实例,getBean()相当于new Bean()操作 * request:每次发送http请求时就会创建一个bean * session:同一个http session共享一个bean实例 * global-session:用于portlet容器 8,spring自动装配bean有哪些方式? * no:表示没有自动装配,使用显示的bean引用进行装配 * byName:根据bean的名称进行注入 * byType:根据类型注入依赖项 * 构造函数:需要配置大量的参数 9,spring的事物实现有哪些方式 * 事物声明:xml配置,注解@Transaction * 编码方式:提供编码的形式管理和维护事物 10,说一下spring的事物隔离? 有5大事物隔离 * 1,默认是isolation\_default:使用数据库的设置,其它四个隔离和数据库的隔离是一致的 * 2,isolation\_read\_uncommitted:未提交读,最低的隔离级别,会出现幻读,不可重复读,脏读 * 3,isolation\_read\_committed:提交读,消除了脏读 * 4,isolation\_repeaTable\_read:可重复读。默认 * 5,isolation\_seriable:序列化 11,说一下spring的运行流程: * springMVC将请求发给DispatcherSercelet调度控制器,调度器查询一个或者多个处理映射,找到处理请求的controller,调度处理器再把请求交给controller,controller进行业务逻辑的处理,会返回一个ModelAndView. * 调度控制器查询一个或者多个视图解析器,找到ModelAndView的指定视图对象,视图对象负责渲染页面返回给客户端 12,springMVC有哪些组件? * 前端控制器:DispatcherSercelet * 映射控制器:HandlerMapping * 处理器:Controller * 模型和视图:ModelAndView * 视图解析器:viewResolver 13@RequestMapping的作用是什么? 用来处理请求映射的注解,可以用在类或者注解上,用于类上表示类中的所有请求的方法以该地址作为父路径 它有6大属性: * value:指定请求的实际地址,可以是url template的模式 * method:指定请求的method类型:get post put delete * consumes:指定处理请求的提交内容类型(content-type)例如:application/json,text/html * produces: 指定返回的类型,只能是返回request请求头中的accept类型中包含的指定类型才能返回 * params:指定request中必须包含某些参数值才能让该方法进行处理 * @Autowired的作用是什么? * 可以对类成员变量,方法及其构造函数进行标注,完成自动装配的任务。需要调用bean中的对象时,直接使用该注解进行注入 14,$\{\}和\#\{\}的区别是什么? * \#\{\}:把传入的数据当成一个字符串,会对自动传入的数据加一个双引号 * $\{\}:不会加双引号,所以它无法防止sql注入,一般用于传入数据库对象,表名,列名 16,mybatis有几种分页方式? * 逻辑分页:使用它自带的RowBounds进行分页,一次性查询大量的数据(不是所有的数据),然后进行分页 * 物理分页:手动写sql分页或使用PageHandler,去查询数据库指定条数的分页形式 17,mybatis是否支持延迟加载?延迟加载的原理是什么? * 支持延迟加载,需要设置lazyLoadingEnablle=true * 延迟加载的原理: 18,说一下mybatis的一级缓存和二级缓存 * 19,mybatis和hibernate的区别有哪些? 20,mybatis有哪些执行器? 21,mybatis的分页插件的实现原理是什么? 22,mybatis如何编写一个自定义插件?
相关 面试总结 1、[MySQL 查询部门工资前三高的员工信息][MySQL] 2、[数据库索引为什么使用B+树而不是hashmap][B_hashmap] 3、[【Java–数据结构 以你之姓@/ 2022年11月15日 11:42/ 0 赞/ 150 阅读
相关 面试总结 前言 这次还好不至于一个问题都回答不上来,总结一下问题。 1 SHELL Q: 找出文件中所有小于5的数字个数 A: 没答出来 grep -o '[ 谁借莪1个温暖的怀抱¢/ 2022年11月11日 05:58/ 0 赞/ 145 阅读
相关 面试总结 1. 线程池的创建各个参数含义 1. corePoolSize 线程池中的核心线程数,当提交一个任务时,线程池创建一个新线程执行任务,直到当前线程数等于 末蓝、/ 2022年11月05日 06:23/ 0 赞/ 172 阅读
相关 面试总结 曾记得第一次被老霍告知要去中石化面试的时候,心里那叫一个紧张。看简历,记简历,写自我介绍材料,看笔记,看其他人的面试总结,在火车上看博客等等。这些让我忙得不可开交。由于我 比眉伴天荒/ 2022年08月09日 09:58/ 0 赞/ 159 阅读
相关 面试总结 面向对象的三个基本元素,五个基本原则 三个基本元素:封装 继承 多态 五个基本原则: 单一职责原则:一个类,最好只做一件事,只有一个引起它的变化 。单一职责原则 素颜马尾好姑娘i/ 2022年08月05日 08:30/ 0 赞/ 156 阅读
相关 面试总结 最近在准备重新找工作,面试了4家,居然没有一家来offer。我觉得有时候还是需要去总结,即使这件事情有可能是对方的问题,还是需要反思自己本身还有什么做的不够好。不管 布满荆棘的人生/ 2022年06月07日 13:49/ 0 赞/ 151 阅读
相关 面试总结 1, 简介 毕业答辩搞定,总算可以闲一段时间,把这段求职经历写出来,也作为之前三个半月的求职的回顾。 首先说说我拿到的offer情况: 1) 微软,3面->终面,搞定(+ 深碍√TFBOYSˉ_/ 2022年05月30日 09:06/ 0 赞/ 160 阅读
相关 面试总结 一、mybatis如何配置多数据源 二、mybatis的实现原理(主要从jdbc的缺点和反射两方面) 三、spring 如何如何知道那些类需要被实例化? 四、如何做分页? 迈不过友情╰/ 2022年05月29日 08:58/ 0 赞/ 228 阅读
相关 面试总结 一. 兼容性测试分为 1.整机的兼容性,主要是当前市场占有率比较高的品牌手机; 2.操作系统的兼容性,分为ios和andriod系统,其中iOS系统现在8.0-10.0;安 一时失言乱红尘/ 2021年12月22日 06:09/ 0 赞/ 208 阅读
相关 面试总结 总结一下最近面试主要的问题: Java 基础 1. HashMap的实现原理,死链问题,非线程安全问题,链表转红黑色以及红黑树转链表 2. ConcurrentHa 男娘i/ 2021年09月18日 05:04/ 0 赞/ 317 阅读
还没有评论,来说两句吧...