题目

  1. 谈谈你对AOP的理解
  2. 谈谈你对IOC的理解
  3. BeanFactory和ApplicationContext的区别
  4. 解释下Spring支持的几种bean的作用域
  5. spring框架中的单例Bean是安全的吗?
  6. 简述几种排序(假如是一个从小到大的排序)

个人理解

  1. 谈谈你对AOP的理解
    AOP的中文意思是面向切面,可以将程序中的交叉逻辑封装成切面,然后注入到对象中(业务逻辑),也可以对某些对象或方法进行增强。
  2. 谈谈你对IOC的理解
    IOC的中文意思是控制反转,IOC容器里面存有各种对象,当对象A需要使用到对象B是,IOC容器会将对象B注入到A中,实现控制反转。
  3. BeanFactory和ApplicationContext的区别
    ApplicationContext是BeanFactory的子接口,可以提供更为完善的方法。BeanFactory采用的是延迟加载的形式来加载Bean,使用到的时候才会创建,而ApplicationContext是在容器创建的时候就创建所有Bean,有利于启动的时候就可以检查异常,缺点是启动的时候比较慢,占用较多的内存空间。
  4. 解释下Spring支持的几种bean的作用域
    singleton:默认,每个容器中只有一个bean的实例,单例的模式由BeanFactory自身来维护。该
    对象的生命周期是与Spring IOC容器一致的(但在第一次被注入时才会创建)。 prototype:为每一个bean请求提供一个实例。在每次注入时都会创建一个新的对象
    request:bean被定义为在每个HTTP请求中创建一个单例对象,也就是说在单个请求中都会复用 这一个单例对象。
    session:与request范围类似,确保每个session中有一个bean的实例,在session过期后,bean 会随之失效。
    application:bean被定义为在ServletContext的生命周期中复用一个单例对象。
    websocket:bean被定义为在websocket的生命周期中复用一个单例对象。
    global-session:全局作用域,global-session和Portlet应用相关。当你的应用部署在Portlet容器 中工作时,它包含很多portlet。如果你想要声明让所有的portlet共用全局的存储变量的话,那么 这全局变量需要存储在global-session中。全局作用域与Servlet中的session作用域效果相同。
  5. spring框架中的单例Bean是安全的吗?
    单例bean意味着全局共享,在多线程下不是线程安全的。
  6. 简述几种排序(假如是一个从小到大的排序)
    冒泡排序:冒泡排序会让相邻之间的两个元素进行比较,若前者小于后者就不变,反之则交换位置。
    选择排序:选择排序的原理是第一次从第一个元素开始,找出最小(最大)的元素放在起始位置,接着从起始的下一位开始找出剩下元素中最小(最大)的元素,以此类推。
    插入排序:从第二个元素开始,将后面的元素插入到前面已经排好序的有序队列中。
    希尔排序:希尔排序是将数据按照下标增量进行分组,然后对每一组进行插入排序,然后增量会逐渐减少,当减到1的时候就结束了。
    快速排序:从所有元素中选出一个数作为基数,利用这个基础将数据分为两大部分,左边部分数据都比基数小,右边部分都比基数大,接着再在这两部分中选出各自的基数,让左部分比基数小右部分比基数大,以此类推。
    归并排序:归并算法采用的是分治法,先让子序列有序,再将有序的子序列合并。

最后

这次更新完后会停更一段时间了(我也不知道多久),要准备面试了,就没有太多时间继续更新这个了。