SSM常见面试题
SSM常見面試題
- 1.spring bean 容器的生命周期是什么樣的?
- 2.BeanFactory 和 ApplicationContext 的區(qū)別?
- 3.spring 的特性?談?wù)勀銓?spring 的理解?spring 用來干嘛?
- 4.jdk 的動態(tài)代理和 cglib 動態(tài)代理有什么區(qū)別?
- 5.aop 的實現(xiàn)原理?
- 6.springmvc 的原理?springmvc 的工作流程?
- 7.springmvc 的常用注解有哪些?
- 8.mybatis 使用了哪些設(shè)計模式?你了解過哪些設(shè)計模式?
1.spring bean 容器的生命周期是什么樣的?
???? 注:以上工作完成以后就可以應(yīng)用這個Bean了,那這個Bean是一個Singleton的,所以一般情況下我們調(diào)用同一個id的Bean會是在內(nèi)容地址相同的實例。
2.BeanFactory 和 ApplicationContext 的區(qū)別?
3.spring 的特性?談?wù)勀銓?spring 的理解?spring 用來干嘛?
??????Spring框架是 Java 應(yīng)用最廣的框架,它的成功來源于理念,而不是技術(shù)本身,它的理念包括 IOC (Inversion of Control,控制反轉(zhuǎn)) 和 AOP(Aspect Oriented Programming,面向切面編程)。
優(yōu)點:
Spring 能幫我們做什么?
??????①.Spring 能幫我們根據(jù)配置文件創(chuàng)建及組裝對象之間的依賴關(guān)系。
??????②.Spring 面向切面編程能幫助我們無耦合的實現(xiàn)日志記錄,性能統(tǒng)計,安全控制。
??????③.Spring 能非常簡單的幫我們管理數(shù)據(jù)庫事務(wù)。
??????④.Spring 還提供了與第三方數(shù)據(jù)訪問框架(如Hibernate、JPA)無縫集成,而且自己也提供了一套JDBC訪問模板來方便數(shù)據(jù)庫訪問。
??????⑤.Spring 還提供與第三方Web(如Struts1/2、JSF)框架無縫集成,而且自己也提供了一套Spring MVC框架,來方便web層搭建。
??????⑥.Spring 能方便的與Java EE(如Java Mail、任務(wù)調(diào)度)整合,與更多技術(shù)整合(比如緩存框架)。
??
4.jdk 的動態(tài)代理和 cglib 動態(tài)代理有什么區(qū)別?
5.aop 的實現(xiàn)原理?
6.springmvc 的原理?springmvc 的工作流程?
SpringMVC的原理圖:
SpringMVC工作流程?
??
7.springmvc 的常用注解有哪些?
控制反轉(zhuǎn)
@Component,標(biāo)注為一個普通的bean@Service@Repository依賴注入
@Autowired@Qulifier@Resource@Value全局配置
@Configuration,代替配置文件,相當(dāng)于beans@ComponentScan,配置掃描包@Scope,配置bean的生命周期8.mybatis 使用了哪些設(shè)計模式?你了解過哪些設(shè)計模式?
1、建造者模式(Builder Pattern)
??????使用多個簡單的對象一步一步構(gòu)建成一個復(fù)雜的對象。它提供了一種創(chuàng)建對象的最佳方式。例如SqlSessionFactoryBuilder、XMLConfigBuilder、XMLMapperBuilder等
XMLConfigBuilder :XML配置構(gòu)建器,建造者模式,繼承BaseBuilder
2、 簡單工廠模式(Simple Factory Pattern)
??????又稱為靜態(tài)工廠方法(Static Factory Method)模式,它屬于類創(chuàng)建型模式,專門定義一個類來負責(zé)創(chuàng)建其他類的實例,被創(chuàng)建的實例通常都具有共同的父類。如:
???SqlSessionFactory:創(chuàng)建SqlSession對象。
???ObjectFactory:對象工廠:所有對象都要由工廠來產(chǎn)生 。
???MapperProxyFactory:創(chuàng)建映射器代理 MapperProxy對象。
3、 單例模式(Singleton Pattern)
??????三個要點:
如:ErrorContext和LogFactory
??????ErrorContext:用在每個線程范圍內(nèi)的單例,用于記錄該線程的執(zhí)行環(huán)境錯誤信息,
??????LogFactory:是提供給整個Mybatis使用的日志工廠,用于獲得針對項目配置好的日志對象。
4、代理模式(Proxy Pattern)
??????Mybatis核心使用的模式,給某一個對象提供一個代理,并由代理對象控制對原對象的引用。它是一種對象結(jié)構(gòu)型模式。
????????如MapperProxy為綁定我們開發(fā)的Mapper和Mapper.xml創(chuàng)建代理類、Plugin為每個插件創(chuàng)建一個代理類等。
5、組合模式
??????組合多個對象形成樹形結(jié)構(gòu)以表示“整體-部分”的結(jié)構(gòu)層次。
??????組合模式最關(guān)鍵的地方:葉子對象和組合對象實現(xiàn)相同的接口。
例如SqlNode和各個子類ChooseSqlNode等;
6、適配器模式(Adapter Pattern)
??????作為兩個不兼容的接口之間的橋梁。這種類型的設(shè)計模式屬于結(jié)構(gòu)型模式,它結(jié)合了兩個獨立接口的功能。
??????例如Log的Mybatis接口和它對jdbc、log4j等各種日志框架的適配實現(xiàn)
7、模板方法模式(Template Pattern)
??????是基于繼承的代碼復(fù)用的基本技術(shù)。模板方法模式中,一個抽象類公開定義了執(zhí)行它的方法的方式/模板。它的子類可以按需要重寫方法實現(xiàn),但調(diào)用將以抽象類中定義的方式進行。這種類型的設(shè)計模式屬于行為型模式。定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個算法的結(jié)構(gòu)即可重定義該算法的某些特定步驟。
??????例如BaseExecutor和SimpleExecutor,還有BaseTypeHandler和所有的子類如IntegerTypeHandler;
8、裝飾器模式(Decorator Pattern)
??????裝飾器模式:允許向一個現(xiàn)有的對象添加新的功能,同時又不改變其結(jié)構(gòu)。這種類型的設(shè)計模式屬于結(jié)構(gòu)型模式,它是作為現(xiàn)有的類的一個包裝。這種模式創(chuàng)建了一個裝飾類,用來包裝原有的類,并在保持類方法簽名完整性的前提下,提供了額外的功能。
??????例如Cache包中的cache.decorators子包中等各個裝飾者的實現(xiàn);
9、迭代器模式(Iterator)
??????又叫游標(biāo)(Cursor)模式。GOF定義為:提供一種方法訪問一個容器(container)對象中各個元素,而又不需暴露該對象的內(nèi)部細節(jié)。
??????例如迭代器模式PropertyTokenizer;
總結(jié)
- 上一篇: 弹出并点击弹框关闭 自定义toast_关
- 下一篇: 797B. Odd sum