List,Set,Map,有什么区别?
List和Set实际上市实现了Collection接口,那么Collection接口的原理你能简单描述一下吗?
List接口可以插入多个NULL值,并且重复值,而且LIST是一个有序的集合。
Set是一个不可重复的集合,里面的元素都只出现,最多只出现1次,并且SET是一个无序容器,TreeSet....
TreeSet实现了一个什么接口?TreeSet实现了一个SortedSet接口。所以能保持它的有序性。
Collections.sort方法,第二个参数是实现了一个Comparator接口里面的CompareTo方法。
Spring的加载机制是什么?如果你什么都回答不出来,那么证明你对spring一无所知,真的。
我们首先需要了解几个基本的类,ServletContextLoader,ServletContextListener.ContextLoader这个几个类,层次关系如下:
class ContextLoaderListener extends ContextLoader implements ServletContextListener
其中ServletContextLoader依赖于它的父类
,而它的父类其实只做了一个初始化的操作,有一点要注意,就是WebApplicationContext类,这个要注意!
这里要注意下,WebApplicationContext其实是一个抽象的东西,其实我们平常用得比较多的就是XmlWebApplicationContext!
有几个方法很重要,分别是servlet的初始化和销毁的方法,为什么说这些方法重要?因为它对应着生命周期中的一些东西,没有创建和销毁,就没有生命周期。
所以如果面试官问到你,servlet,listener,filter的加载顺序的时候,你可以回答:先是listener,是servlet然后才是filter 为什么这样呢,因为是先通过listener去监听webapplicationContext是否被加载,通过WebApplicationEvent类去创建servletContext上下文,而在ServletContext上下文被创建之前,filter作为一个类似AOP的东西,首先作为动态代理被创建,只有实现了AOP,才能实现ServletContext的上下文相关操作。