收下这份!Java应用场景面试题集(各知识点不同使用场景选型),就等于收下offer!

应用场景面试题集(各知识点不同使用场景选型)

1. Spring 配置 Bean 实例化有哪些方式?

  1. 使用类构造器实例化(默认无参数)
    <bean id="bean1" class="cn.itcast.spring.b_instance.Bean1"></bean>
  2. 使用静态工厂方法实例化(简单工厂模式)
    //下面这段配置的含义:调用 Bean2Factory 的 getBean2 方法得到 bean2
    <bean id="bean2" class="cn.itcast.spring.b_instance.Bean2Factory"
    factorymethod="getBean2"></bean>
  3. 使用实例工厂方法实例化(工厂方法模式)
    //先创建工厂实例 bean3Facory,再通过工厂实例创建目标 bean 实例
    <bean id="bean3Factory" class="cn.itcast.spring.b_instance.Bean3Factory"/><bean
    id="bean3" factorybean="bean3Factory" factorymethod="getBean3"></bean>

2. Bean 注入属性有哪几种方式

  1. 属性注入方式,通过 setXXX() 方法注入 Bean 的属性值或者依赖对象
  2. 构造函数注入方式,使用的前提:Bean 必须提供带参的构造函数
  3. 工厂方法注入方式

3. 在 Spring 中如何实现时间处理?

在 applicationContext.xml 中配置事件源、监听器,先得到事件源,调用事件 源的方法,通知监听器。

4. Spring 中如何更高效的使用 JDBC ?

传统的 JDBC 实现有两个不足之处:

  • 连接需要自己管理操
  • JDBC 操作代码封装与编写重复实现
    Spring 实现了 JdbcTemplate,在 JDBC API 的基础做了科学的封装。
    JdbcTemplate 的优点有:
  1. 配置基于模板化处理
  2. JdbcTemplate 是线程安全类
  3. 实例化操作比较简单,仅需要传递 DataSource
  4. 自动完成资源的创建和释放工作
  5. 对 JDBC 的核心流程进行了封装,简化了对 JDBC 的操作
  6. 创建一次 JdbcTemplate,到处可用,避免重复开发

5. 请介绍一下设计模式在 Spring 框架中的使用?

  1. 工厂模式:BeanFactory 就是简单工厂模式的体现,用来创建对象的实 例。
  2. 单例模式:Bean 默认为单例模式。
  3. 代理模式:Spring 的 AOP 功能用到了 JDK 的动态代理和 CGLIB 字 节码生成技术。
  4. 模板方法:用来解决代码重复的问题。比如:RestTemplate, JmsTemplate, JpaTemplate。
  5. 观察者模式:定义对象键一种一对多的依赖关系,当一个对象的状态发生
    改变时,所有依赖于它的对象都会得到通知被制动更新,如 Spring 中
    listener 的实现:ApplicationListener。

6. 讲讲 Spring 框架的优点有哪些?

  1. 非侵入式设计:代码与框架的依赖性比较低。
  2. 代码解耦:提供控制反转能力,对象的创建和依赖关系的维护工作都交给
    Spring 容器的管理,大大的降低了对象之间的耦合性。
  3. 可复用性提高:支 AOP ,允许将一些通用能力(打印日志、事务处理、 安全操作等)
    进行集中式处理。
  4. MVC 框架:Spring 的 Web 框架是个精心设计的框架,是 Web 框架 的一个很好的替代品。
  5. 事务支持方便:Spring 提供一个持续的事务管理接口,配置化完成对事 物的管理,减少手动编程。
  6. 异常处理:Spring 提供方便的 API 把具体技术相关的异常(比如由 JDBC、Hibernate or JDO 抛出的)
    转化为一致的 unchecked 异常。
  7. 方便程序测试:提供了对 Junit4 的支持,可以通过注解方便的测试 Spring 程序。

7. 哪种依赖注入方式你建议使用,构造器注入,还是 Setter 方法注 入?

你两种依赖方式都可以使用,构造器注入和 setter 方法注入。最好的解决方案 是用构造器参数实现强制依赖,setter 方法实现可选依赖。

8. 你怎样定义类的作用域?

当定义一个 <bean> 在 Spring 里,我们还能给这个 Bean 声明一个作用域。
它可以通过 Bean 定义中的 scope 属性来定义。如,当 Spring 要在需要的
时候每次生产一个新的Bean实例 , Bean的scope属性被指定为prototype。
另一方面,一个 Bean 每次使用的时候必须返回同一个实例,这
个 Bean 的 scope 属性必须设为 singleton。

9. 解释 Spring 支持的几种 Bean 的作用域

Spring 框架支持以下五种 Bean 的作用域:

  1. singleton:Bean 在每个 Spring IoC 容器中只有一个实例。
  2. prototype:一个 Bean 的定义可以有多个实例。
  3. request:每次 http 请求都会创建一个 Bean,该作用域仅在基于 Web 的 Spring ApplicationContext
    情形下有效。
  4. session:在一个 HTTP Session 中,一个 Bean 定义对应一个实例。 该作用域仅在基于 Web 的 Spring ApplicationContext 情形下有效。
  5. global-session:在一个全局的 HTTP Session 中,一个 Bean 定义对 应一个实例。该作用域仅在基于 Web 的 Spring ApplicationContext 情形下有效。
    缺省的 Spring Bean 的作用域是 Singleton。

10. 在 Spring 中如何注入一个 Java 集合?

Spring 提供以下几种集合的配置元素:

  1. <list> 类型用于注入一列值,允许有相同的值。
  2. <set> 类型用于注入一组值,不允许有相同的值。
  3. <map> 类型用于注入一组键值对,键和值都可以为任意类型。
  4. <props> 类型用于注入一组键值对,键和值都只能为 String 类型。

11. 你可以在 Spring 中注入一个 null 和一个空字符串吗?

可以

12. 什么是基于 Java 的 Spring 注解配置?

给一些注解的例子 基于 Java 的配置,允许你在少量的 Java 注解的帮助下,进行你的大部分
Spring 配置而非通过 XML 文件。
以 @Configuration 注解为例,它用来标记类可以当做一个 Bean 的定义,被
Spring IOC 容器使用。另一个例子是 @Bean 注解,它表示此方法将要返回一
个对象,作为一个 Bean 注册进 Spring 应用上下文。

13. 你更倾向用那种事务管理类型?

声明式事务管理,因为它对应用代码侵入性很少,更符合一个无侵入的轻量级容 器的思想。
声明式事务管理要优于编程式事务管理,虽然比编程式事务管理(这种方式允许
你通过代码控制事务)少了一点灵活性。

14. Bean 的调用方式有哪些?

有三种方式可以得到 Bean 并进行调用。

  1. 使用 BeanWrapper
    HelloWorld hw=new HelloWorld();
    BeanWrapper bw=new BeanWrapperImpl(hw);
    bw.setPropertyvalue(”msg”,”HelloWorld”);
    system.out.println(bw.getPropertyCalue(”msg”));
  2. 使用 BeanFactory
    InputStream is=new FileInputStream(”config.xml”);
    XmlBeanFactory factory=new XmlBeanFactory(is);
    HelloWorld hw=(HelloWorld) factory.getBean(”HelloWorld”);
    system.out.println(hw.getMsg());
  3. 使用 ApplicationConttext
    ApplicationContext actx=new FleSystemXmlApplicationContext(”config.xml”);
    HelloWorld hw=(HelloWorld) actx.getBean(”HelloWorld”);
    System.out.println(hw.getMsg());
    使用 @ResponseBody 注解。

15. Spring MVC 里面拦截器是怎么写的

有两种写法,一种是实现接口,另外一种是继承适配器类,然后在 Spring MVC
的配置文件中配置拦截器即可:

<!-- 配置 SpringMvc 的拦截器 --> <mvc:interceptors> 
<!-- 配置一个拦截器的 Bean 就可以了 默认是对所有请求都拦截 --> 
<bean id="myInterceptor" class="com.et.action.MyHandlerInterceptor"/> 
<!-- 只针对部分请求拦截 --> 
<mvc:interceptor>
<mvc:mapping path="/modelMap.do" /> 
<bean class="com.et.action.MyHandlerInterceptorAdapter" />
 </mvc:interceptor> </mvc:interceptors> 

16. 当一个方法向 AJAX 返回特殊对象,譬如 Object、List 等,需要 做什么处理?

要加上 @ResponseBody 注解。

17. 如何使用 Spring MVC 完成 JSON 操作

  1. 配置 MappingJacksonHttpMessageConverter
  2. 使用 @RequestBody 注解或 ResponseEntity 作为返回值

18. Spring 如何整合 Hibernate

整合 Hibernate,即由 IoC 容器生成 SessionFactory 对象, 并使用 Spring
的声明式事务。

  1. 利用 LocalSessionFactoryBean 工厂 Bean,声明一个使用 XML 映射
    文件的 SessionFactory 实例
  2. 利用 HibernateTransactionManager 配置 Hibernate 的事务管理器

19. Spring 如何整合 Struts2 ?

整合 Struts2,即由 IoC 容器管理 Struts2 的 Action:

  • 安装 Spring 插件:把 struts2-spring-plugin-2.2.1.jar 复制到当前
    Web 应用的 WEB-INF/lib 目录下
  • 在 Spring 的配置文件中配置 Struts2 的 Action 实例
  • 在 Struts 配置文件中配置 action,但其 class 属性不再指向该 Action
    的实现类,而是指向 Spring 容器中 Action 实例的 ID

20. 开发中主要使用 Spring 的什么技术 ?

  1. IoC 容器管理各层的组件
  2. 使用 AOP 配置声明式事务
  3. 整合其他框架

21. 介绍一下 Spring MVC 常用的一些注解

  1. @RequestMapping:处理请求地址映射的注解,可用于类或方法上。
  2. @PathVariable:绑定 URI 模板变量值是用来获得请求 url 中的动态参
  3. @RequestParam:用于将指定的请求参数赋值给方法中的形参
  4. @RequestBody:读取 Request 请求的 body 部分数据
  5. @ResponseBody:用于将 Controller 的方法返回的对象,通过适当的 HttpMessageConverter
    转换为指定格式后,写入到 Response 对象 的 body 数据区

22. Spring 框架的事务管理有哪些优点

  1. 为不同的事务 API( JDBC、Hibernate、JPA )提供统一的编程模型
  2. 封装了简单统一的 API 对事物进行管理操作
  3. 同时支持声明式事物和编程时事物两种方式
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容