面试整理

1.是否使用过spring boot

2.Aop和ioc的原理

AOP:面向切面编程,是通过配置可以实现业务逻辑和系统服务分离,业务和系统关系处理 ,面向对象开发的一种补充,它允许开发人员在不改变原来模型的基础上动态的修改模型以满足新的需求,如:动态的增加日志、安全或异常处理等。AOP使业务逻辑各部分间的耦合度降低,提高程序可重用性,提高开发效率。
IOC:控制反转,是一种降低对象之间耦合关系的设计思想,利用反射的原理将系统创建的权利交给容器,根据配置来动态创建和维护之间的关系实现松藕的思想

3.Spring mvc的控制反转和依赖注入

概念:
控制反转(IoC),它为相互依赖的组件提供抽象,将依赖(低层模块)对象的获得交给第三方(系统)来控制,即依赖对象不在被依赖模块的类中直接通过new来获取。
控制反转(IoC)一种重要的方式,就是将依赖对象的创建和绑定转移到被依赖对象类的外部来实现。
依赖注入(DI),它提供一种机制,将需要依赖(低层模块)对象的引用传递给被依赖(高层模块)对象。

控制反转(IOC),也可以叫做依赖注入(DI),这两个词其实是一个概念。
控制反转,那是什么控制被反转了呢?Martin Fowler总结出是“依赖对象的获得”被反转了。
什么是“依赖对象”呢?大多数情况下,java中的都需要通过多个类的合作实现某种业务逻辑,每个对象都需要与他合作的对象的引用,这个与他合作的对象就是它的“依赖对象”。
如果我们要引用其他的对象,首先就得实例化对象,也就是说要new一个对象,那么,这两个类的代码之间必然就存在耦合。尽管使用工厂模式等方法可以缓解这种问题,但无法从根本上解决代码间的耦合问题。而IOC恰恰就是为了解决这种问题而被创造的,它把耦合从代码中移出去,放到统一的XML 文件中,通过一个容器在需要的时候把这个依赖关系形成,即把需要的接口实现注入到需要它的类中,这可能就是“依赖注入”说法的来源了。
所以,简单来说,控制反转就是“当你需要引用一个对象时,将本来应该由你控制的实例化对象的操作交给配置好的xml来进行,然后再给你注入进去,从而降低代码间的耦合度”。

4.有没有了解过设计模式

5.spring boot和spring MVC 相比有哪些优势

两者联系:
spring在刚开始的时候使用工厂模式(DI)和代理模式(AOP)解耦应用组件,进而开发出适用于Web开发的SpringMVC,在实际开发过程当中会使用到很多样板代码,就开发出了懒人版的SpringBoot;
区别:
1、springMVC是Spring的一个模式,是一个Web框架,提供了一个轻度耦合的方式来开发Web应用;
2、SpringBoot是习惯优于配置,降低了项目搭建的难度;
3、springMVC需要使用到TomCat服务器,SpringBoot的话是内嵌了Tomcat服务器的;

6.重载和重写的区别

override(重写)
   1、方法名、参数、返回值相同。
   2、子类方法不能缩小父类方法的访问权限。
   3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。
   4、存在于父类和子类之间。
   5、方法被定义为final不能被重写。
 overload(重载)
  1、参数类型、个数、顺序至少有一个不相同。
  2、不能重载只有返回值不同的方法名。
  3、存在于父类和子类、同类中。

7.array list和LinkedList的区别

1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 ,这里的所谓动态数组并不是那个“ 有多少元素就申请多少空间 ”的意思,通过查看源码,可以发现,这个动态数组是这样实现的,如果没指定数组大小,则申请默认大小为10的数组,当元素个数增加,数组无法存储时,系统会另个申请一个长度为当前长度1.5倍的数组,然后,把之前的数据拷贝到新建的数组。
2. 对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。,ArrayList是数组,所以,直接定位到相应位置取元素,LinkedLIst是链表,所以需要从前往后遍历。
3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。//正确,ArrayList的新增和删除就是数组的新增和删除,LinkedList与链表一致。
4. ArrayList的空间浪费主要体现在在list列表的结尾预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的空间。,因为ArrayList空间的增长率为1.5倍,所以,最后很可能留下一部分空间是没有用到的,因此,会造成浪费的情况。对于LInkedList的话,由于每个节点都需要额外的指针。

8.左链接和右链接的区别

left join (左连接):返回包括左表中的所有记录和右表中连接字段相等的记录。
   right join (右连接):返回包括右表中的所有记录和左表中连接字段相等的记录。
   inner join (等值连接或者叫内连接):只返回两个表中连接字段相等的行。
   full join (全外连接):返回左右表中所有的记录和左右表中连接字段相等的记录

9.Spring mvc 的运行原理

第1步:浏览器发送指定的请求都会交给DispatcherServlet,他会委托其他模块进行真正的业务和数据处理
第2步:DispatcherServlet会查找到HandleMapping,根据浏览器的请求找到对应的Controller,并将请求交给目标Controller
第3步:目标Controller处理完业务后,返回一个ModelAndView给DispatcherServlet
第4步:DispatcherServlet通过ViewResolver视图解析器找到对应的视图对象View
第5步:视图对象View负责渲染,并返回到浏览器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值