面经(四)笔试题查漏补缺篇

前言

本章主要讲述我去过的各个公司面试,被问到的问题和笔试题上自己不太熟悉的题.将有关某一知识点的所有问题都比较系统的总结到一起,方便更全面的理解

一、请说说你对spring框架的理解

1.解释spring的ioc? 几种注入依赖的方式?spring的优点?

  • ioc(inversion of Control)控制反转:你就认为他是一个生产和管理bean的容器就行了,原来需要在调用类中new的东西,现在都是有这个IOC容器进行产生,同时,要是产生的是单例的bean,他还可以给管理bean的生命周期。

  • spring的IOC有三种注入方式 :Setter,构造器,接口注入

1)setter方法注入:在配置文件中使用property节点

在这里插入图片描述
2)构造器注入:在配置文件中使用constructor-arg标签

在这里插入图片描述
3)接口注入


  • Spring的优点(7优点):

1)非侵入式设计:Spring是一种非侵入式(non-invasive)框架,它可以使应用程序代码对框架的依赖最小化。

2、方便解耦、简化开发:Spring就是一个大工厂,可以将所有对象的创建和依赖关系的维护工作都交给Spring容器的管理,大大的降低了组件之间的耦合性。

3、支持AOP:Spring提供了对AOP的支持,它允许将一些通用任务,如安全、事物、日志等进行集中式处理,从而提高了程序的复用性。

4、支持声明式事务处理:只需要通过配置就可以完成对事物的管理,而无须手动编程。

5、方便程序的测试:Spring提供了对Junit4的支持,可以通过注解方便的测试Spring程序。

6、方便集成各种优秀框架:Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如Struts、Hibernate、MyBatis、Quartz等)的直接支持。

7、降低Jave EE API的使用难度:Spring对Java EE开发中非常难用的一些API(如JDBC、JavaMail等),都提供了封装,使这些API应用难度大大降低。


2.解释Spring中IOC, DI, AOP

1)ioc就是控制反转,依赖注入是对IOC更简单的诠释,通俗的讲就是如果在什么地方需要一个对象,你自己不用去通过new 生成你需要的对象,而是通过spring的bean工厂为你产生这样一个对象。

补: IOC的实现步骤

  • 定义用来描述bean的配置的Java

  • 解析bean的配置,将bean的配置信息转换为BeanDefinition对象保存到内存中,spring中采用HashMap进行对象存储,其中会用到一些xml的解析技术,如dom4j等。

  • 遍历存放BeanDefinition的HashMap对象,逐条取出BeanDefinition对象,获取bean的配置信息,利用Java的反射机制实例化对象,将实例化后的对象保存到另外一个Map中即可。

2)aop就是面向切面编程。主要表现在两个方面:

  • 提供声明式事务管理
  • Spring支持用户自定义切面

面向切面编程(AOP)是对面向对象编程(OOP)的补充。面向对象编程将程序分解成为各个层次的对象,面向切面编程将程序运行过程分解成各个切面。面向切面编程基于动态代理实现,降低了类直接的耦合程度。Spring的事务管理就是基于AOP实现的。

比如说你每做一次对数据库操作,都要生成一句日志。如果,你对数据库的操作有很多类,那你每一类中都要写关于日志的方法。但是如果你用aop,那么你可以写一个方法,在这个方法中有关于数据库操作的方法,每一次调用这个方法的时候,就加上生成日志的操作。

3) Spring 的AOP和IOC都是为了解决系统代码耦合度过高的问题。使代码重用度高、易于维护
不过AOP和IOC并不是spring中特有的,只是spring把他们应用的更灵活方便 。


3.请谈一谈Spring中自动装配的方式有哪些?

5方式:(@Autowired)

  • no:不进行自动装配,手动设置Bean的依赖关系
  • byType:根据Bean的类型进行自动装配
  • byName:根据Bean的名字进行自动装配
  • constructor
  • autodetect

4.Spring中的作用域有哪些?

5作用域

  • singleton:单例模式,(默认这种)在整个springIoc中,使用singleton定义的Bean只有一个实例对象
  • procoType:原型模式,每次通过getBean会创建一个Bean对象
  • request:每次Httprequest请求都会创建一个Bean对象
  • session:同一个Session共用同一个Bean对象,不同session不同Bean
  • globalSession:全局Session,同一个globalSession共用一个Bean对象

5.请说明一下Spring中的BeanFactory和ApplicationContext的区别?

  • springIOC容器设计基于BeanFactory和ApplicationContext

区别:

1)BeanFactory比较老,不支持spring插件的使用,例如:aop和web容器,
ApplicationContext是BeanFactory的子类,他能完成BeanFactory的事情并扩展了一些功能
例如:事物传递,Bean的自动装配…

2)使用BeanFactory实例化对象时,只有当getBean时才会实例化对象,好处是:节约内存 坏处是:效率很低。
使用ApplicationContext,当配置Bean为Singleton模式,不论当前是否要使用,都会进行实例化
好处是:预先加载 坏处是:浪费资源


二、请简要说明一下JSP和Servlet有哪些相同点和不同点?另外他们之间的联系又是什么呢?

  • 相同点:

它们本质上都是java类

  • 不同点:

1、JSP经编译后变成Servlet
2、jsp更擅长表现于页面显示,Servlet更擅长于逻辑控制
3、Servlet的应用逻辑是在java文件中,并且完全从表现层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。

  • 联系:
    JSP是Servlet技术的扩展,本质上是Servlet的简易方式。

猜你喜欢

转载自blog.csdn.net/Makasa/article/details/104427542