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的上下文相關操作。
?