面试题整理----设计模式and spring、springMVC

1.说一下你熟悉的设计模式?

根据自身情况而定---下面列出一些类型的设计模式一共参考

创建型:Abstract Factory(抽象工厂模式),Builder(建造者模式),Factory Method(工厂方法模式),Prototype(原始模型模式),Singleton(单例模式);
结构型:Facade(门面模式),Adapter(适配器模式),Bridge(桥梁模式),Composite(合成模式),Decorator(装饰模式),Flyweight(享元模式),Proxy(代理模式);
行为型:Command(命令模式),Interpreter(解释器模式),Visitor(访问者模式),Iterator(迭代模式),Mediator(调停者模式),Memento(备忘录模式),Observer(观察者模式),State(状态模式),Strategy(策略模式),Template Method(模板方法模式), Chain Of Responsibility(责任链模式)。

2.简单工厂和抽象工厂有什么区别?

  一、创建对象方式不同

  “简单工厂模式”使用fw模式建立对象;“抽象工厂模式”则使用迭代模式创建对象。

  二、定义变量不同

  “简单工厂模式”,使用参数或者配置文件等事先定义好的变量,然后利用分支判断初始化具体产品类并返回。“抽象工厂模式则”不符合“开发-封闭”原则,每次增加产品,都需要修改类方法。

  三、接口数量不同

  “简单工厂模式”只有一个接口。抽象工厂模式理论上具有无限个接口。

3.为什么要使用 spring?

它的IOC、DI、AOP可以使编码变得更加简单快捷。并且在整合其他框架时也很方便

----以下摘自  总有刁民想害Me  的博客---

1.简介 

  ◆目的:解决企业应用开发的复杂性


  ◆功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能


  ◆范围:任何Java应用


  简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。


  2.轻量  从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。


  3.控制反转  Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。


  4.面向切面  Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。


  5.容器  Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。


  6.框架  Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。


  所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。

4.解释一下什么是 aop?

AOP面向切面编程,是面向对象开发的一种补充,它允许开发人员在不改变原来模型的以满足新的需求,例如,开发人员可以在不改变原来业务逻辑模型的基础进行动态的增加日志,安全或异常处理功能。

------补充  什么是面向对象---一切事物皆对象。将现实的事物抽象出来,把现实生活的事物以及关系,抽象成类,通过继承,实现,组合的方式把万事万物都给容纳了。实现了对现实世界的抽象和数学建模。------(参考自这个链接)贴个链接 ----  https://www.jianshu.com/p/7a5b0043b035

5.解释一下什么是 ioc?

IOC(Inverse of Contro)控制反转,有时候也被称为DI依赖注入,它是一种降低对象耦合关系的一种设计思想。

6.spring 有哪些主要模块?

Spring有七大功能模块,分别是Spring Core,AOP,ORM,DAO,MVC,WEB,Context。

1,Spring Core


Core模块是Spring的核心类库,Spring的所有功能都依赖于该类库,Core主要实现IOC功能,Sprign的所有功能都是借助IOC实现的。


2,AOP


AOP模块是Spring的AOP库,提供了AOP(拦截器)机制,并提供常用的拦截器,供用户自定义和配置。


3,ORM


Spring 的ORM模块提供对常用的ORM框架的管理和辅助支持,Spring支持常用的Hibernate,ibtas,jdao等框架的支持,Spring本身并不对ORM进行实现,仅对常见的ORM框架进行封装,并对其进行管理


4,DAO模块


Spring 提供对JDBC的支持,对JDBC进行封装,允许JDBC使用Spring资源,并能统一管理JDBC事物,并不对JDBC进行实现。(执行sql语句)


5,WEB模块


WEB模块提供对常见框架如Struts1,WEBWORK(Struts 2),JSF的支持,Spring能够管理这些框架,将Spring的资源注入给框架,也能在这些框架的前后插入拦截器。


6,Context模块


Context模块提供框架式的Bean访问方式,其他程序可以通过Context访问Spring的Bean资源,相当于资源注入。


7,MVC模块


WEB MVC模块为Spring提供了一套轻量级的MVC实现,在Spring的开发中,我们既可以用Struts也可以用Spring自己的MVC框架,相对于Struts,Spring自己的MVC框架更加简洁和方便。

7.spring 常用的注入方式有哪些?

构造方法注入 ,setter注入,注解注入

8.spring 中的 bean 是线程安全的吗?

Spring中的Bean默认是单例模式的,框架并没有对bean进行多线程的封装处理
实际上大部分时间Bean是无状态的(比如Dao) 所以说在某种程度上来说Bean其实是安全的
但是如果Bean是有状态的 那就需要开发人员自己来进行线程安全的保证,最简单的办法就是改变bean的作用域 把 "singleton"改为’‘protopyte’ 这样每次请求Bean就相当于是 new Bean() 这样就可以保证线程的安全了

10.spring 支持几种 bean 的作用域?

singleton:SpringIOC容器只会创建该Bean的唯一实例;

prototype:每次请求都创建一个实例;

request:每次HTTP请求都会产生一个新的bean。需要注意的是,该作用域仅在基于Web的Spring ApplicationContext情形下有效,以下的session和global Session也是如此;

Session:每次会话创建一个实例;

global session:全局HttpSession中,容器会返回该bean的同一个实例

11.spring 自动装配 bean 有哪些方式?

1、自动化装配

Spring从两个角度来实现自动化装配:

组件扫描(ComponentScan):自动发现应用上下文中所创建的bean

自动装配(Autowired):自动满足bean之间的依赖

2、显示bean装配

12.spring 事务实现方式有哪些?

第一种方式:每个Bean都有一个代理

 第二种方式:所有Bean共享一个代理基类

第三种方式:使用拦截器

第四种方式:使用tx标签配置的拦截器

第五种方式:全注解

----更详细的请自行百度或学习-----

13.说一下 spring 的事务隔离?

三类7种  一类存在事务,二类不存在事务,三类嵌套事务  具体常量值可自行百度

14.说一下 spring mvc 运行流程?

1、 用户向服务器发送请求,请求被 Spring 前端控制 Servelt DispatcherServlet 捕获(捕获)

2、 DispatcherServlet对请求  URL进行解析,得到请求资源标识符(URI)。然后根据该  URI,调用 HandlerMapping获得该Handler配置的所有相关的对象(包括  Handler对象以及   Handler对象对应的拦截器),最后以 HandlerExecutionChain对象的形式返回;(查找   handler)

3、 DispatcherServlet  根据获得的 Handler,选择一个合适的  HandlerAdapter。  提取Request 中的模型数据,填充 Handler 入参,开始执行 Handler(Controller), Handler执行完成后,向 DispatcherServlet 返回一个 ModelAndView 对象(执行  handler)

4、DispatcherServlet  根据返回的 ModelAndView,选择一个适合的 ViewResolver(必须是已经注册到 Spring 容器中的 ViewResolver) (选择  ViewResolver)

5、通过 ViewResolver 结合 Model 和 View,来渲染视图,DispatcherServlet 将渲染结果返回给客户端。(渲染返回)

15.spring mvc 有哪些组件?

DispatcherServlet    控制器入口 负责分发请求
  HandlerMapping       负责根据请求 找到对应的控制器
  Controller           真正处理请求的控制器
  ModelAndView         封装数据信息和视图信息的
  ViewResolver         视图处理器 通过处理找到对应的页面

[email protected] 的作用是什么?

@RequestMapping 是一个注解,用来标识 http 请求地址与 Controller 类的方法之间的映射。

可作用于类和方法上,方法匹配的完整是路径是 Controller 类上 @RequestMapping 注解的 value 值加上方法上的 @RequestMapping 注解的 value 值。

[email protected] 的作用是什么?

@Autowired 是一个注解,它可以对类成员变量、方法及构造函数进行标注,让 spring 完成 bean 自动装配的工作。
@Autowired 默认是按照类去匹配,配合 @Qualifier 指定按照名称去装配 bean。

原文地址:https://www.cnblogs.com/xianghebuyi/p/11553242.html

时间: 2024-10-29 04:31:19

面试题整理----设计模式and spring、springMVC的相关文章

spring springMVC mybatis 集成

最近闲来无事,整理了一下spring springMVC mybatis 集成,关于这个话题在园子里已经有很多人写过了,我主要是想提供一个完整的demo,涵盖crud,事物控制等. 整个demo分三个层次: 一.简单模式:整个框架的参数传递不使用实体对象,统一用Map来存储变量,对mybatis部分不使用mapper接口,使用SqlSessionDaoSupport 提供的SqlSession 来操作mapper XML文件中的命令.这种方式的好处是框架层次结构很简单,适合快速开发,缺点是没有实

myBatis+Spring+SpringMVC框架面试题整理

myBatis+Spring+SpringMVC框架面试题整理(一) 2018年09月06日 13:36:01 新新许愿树 阅读数 14034更多 分类专栏: SSM 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_41541619/article/details/82459873 目录 ■ SpringMVC 的工作原理 ■ 谈谈你对SpringMVC的理解 ■ SpringMVC

SSM(Spring + Springmvc + Mybatis)框架面试题

JAVA SSM框架基础面试题https://blog.csdn.net/qq_39031310/article/details/83050192 SSM(Spring + Springmvc + Mybatis)框架面试题 一.Spring面试题 1.Spring 在ssm中起什么作用? Spring:轻量级框架 作用:Bean工厂,用来管理Bean的生命周期和框架集成. 两大核心:1.IOC/DI(控制反转/依赖注入) :把dao依赖注入到service层,service层反转给action

Spring SpringMVC SpringBoot SpringCloud 注解整理大全

Spring SpringMVC SpringBoot SpringCloud 注解整理 这段时间学习了一些框架,里面用到了很多注解,记不住所以把遇到的注解都整理了下来,如果有不对的地方欢迎指正,我会修改的φ(??∀??)? Spring 常用配置: @import :导入配置类 @Scope : 新建Bean的实例 @Scope("prototype") 声明Scope 为 Prototype @Value : 属性注入 @Value ("我爱你") -->

【每日3分钟技术干货 | 面试题+答案 | Spring&SpringMVC篇(一)】

1. 什么是spring? Spring 是个java企业级应用的开源开发框架.Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用.Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯. 2. 使用Spring框架的好处是什么? 轻量:Spring 是轻量的,基本的版本大约2MB. 控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们. 面向切面的编程(AOP):Sp

Spring MVC基础知识整理?Spring+SpringMVC+Hibernate整合操作数据库

概述 Hibernate是一款优秀的ORM框架,能够连接并操作数据库,包括保存和修改数据.Spring MVC是Java的web框架,能够将Hibernate集成进去,完成数据的CRUD.Hibernate使用方便,配置响应的XML文件即可.由于spring3.x,基于asm的某些特征,而这些asm还没有用jdk8编译,所以采用Spring 3+JDK8就会报错,提示错误信息( java.lang.IllegalArgumentException),具体解决方案有:1.Spring 3+JDK7

.Net 面试题整理(一)

.Net 面试题整理(一) 好久的资料了,拿出来分享给大家,主要是记录一些面试题整理. Main函数是什么?在程序中使用Main函数有什么需要注意的地方? Q:程序的入口函数!函数名字不能改变:一个程序中有且只有一个Main函数. CLR是什么?程序集是什么?当运行一个程序集的时候,CLR做了什么事情? Q:Common Language RunTime 公共语言运行时. 编译后代码的集合.(包括exe和dll). 加载项目里所有的类到内存,并找到其中的主函数,并作为默认的启动函数调用执行. 值

Spring+SpringMVC+MyBatis+LogBack+C3P0+Maven+Git小结(转)

摘要 出于兴趣,想要搭建一个自己的小站点,目前正在积极的准备环境,利用Spring+SpringMVC+MyBatis+LogBack+C3P0+Maven+Git,这里总结下最近遇到的一些问题及解决办法,后续慢慢的继续补~ 目录[-] 一:建立一个Maven结构的Web工程 二:Spring.SpringMVC重复加载bean对象问题. 三:实现自个的数据缓存机制 2种缓存数据简介及其数据结构分析 2中缓存数据加载实现流程介绍 三:通过Spring自定义标签形式实现配置项类型数据的缓存数据结构

SSM:spring+springmvc+mybatis框架中的XML配置文件功能详细解释

SSM:spring+springmvc+mybatis框架中的XML配置文件功能详细解释 2016-04-14 23:40 13030人阅读 评论(2) 收藏 举报 分类: SSM(7) 这几天一直在整合SSM框架,虽然网上有很多已经整合好的,但是对于里面的配置文件并没有进行过多的说明,很多人知其然不知其所以然,经过几天的搜索和整理,今天总算对其中的XML配置文件有了一定的了解,所以拿出来一起分享一下,希望有不足的地方大家批评指正~~~ 首先   这篇文章暂时只对框架中所要用到的配置文件进行解