程序员计算机语言Spring-Boot

Java面试题 - 02

2018-11-15  本文已影响39人  贪挽懒月

前言:

接着《Java面试题 - 01》,继续聊聊剩下的内容。

一、JavaWeb高级:

1. 什么叫监听器(listener)?
答:监听器主要是用来监听特定对象的创建或销毁、属性的变化的,是一个实现特定接口的普通java类。具体实现哪个接口,要看你监听什么内容,比如要监听Request对象的创建或销毁,就实现ServletRequestListener 接口。它是随web应用的启动而启动,只初始化一次,随web应用的停止而销毁。

2. 什么叫过滤器(filter)?
答:就是对servlet请求起到过滤的作用,它在监听器之后,作用在servlet之前。比如编码过滤器,就是经过了该过滤器的请求都会设置成过滤器中指定的编码。过滤器是随web应用启动而启动,只初始化一次,只有当web应用停止或重新部署的时候才销毁。

3. 什么叫拦截器(interceptor)?
答:拦截器类似于fileter ,也是拦截用户的请求。不同的是,它不需要在web.xml中配置,不随WEB应用的启动而启动,是基于JAVA的反射机制和动态代理实现的。只有调用相应的方法时才会调用,在面向切面编程中应用的。

4. servlet请求的执行过程是怎样的?
答:过程是这样的:context-param(初始化配置) --> listener --> filter --> servlet --> interceptor --> 页面。

5. 谈谈你对Ajax的认识。
答:Asynchronous JavaScript and XML的缩写,是一种创建交互式网页应用的的网页开发技术。通过异步提交的方式,可以实现局部刷新,在不更新整个页面的前提下维护数据,提升用户体验度。

二、数据库:

1. select语句的执行顺序怎样的?
答:SQL语言不同于其他编程语言的最明显特征是处理代码的执行顺序。在大多数据库语言中,代码按顺序执行,但是SQL语言执行顺序如下:
from --> where --> group by分组 --> 聚合函数 --> having筛选分组 --> 计算所有的表达式 --> select的字段 --> order by排序。

2. 你知道聚合函数吗?
答:聚合函数是对一组值进行计算并返回单一的值的函数,它经常与select 语句中的 group by 子句一同使用。 比如求平均值的聚合函数是avg()。

3. 你知道连接查询吗?
答:连接查询分为内连接和外连接,内连接显示表之间有连接匹配的所有行。外连接又分为左外连接、右外连接和全连接。左外连接就是以左表作为基准进行查询,左表数据会全部显示出来,右表如果和左表匹配的数据则显示相应字段的数据,如果不匹配则显示为null。 右连接是以右表作为基准进行查询,右表数据会全部显示出来,左表如果和右表匹配的数据则显示相应字段的数据,如果不匹配则显示为null。 全连接是先以左表进行左外连接,再以右表进行右外连接。

4. 事务有几大特性?分别是什么?
答:事务有四大特性,ACID。

5. mysql中的四种隔离级别是什么?
答:四种隔离级别如下:

6. 对于MySQL性能优化,你知道多少?
答:我知道的有以下几点:

三、框架篇:

(一)、Spring

1. 谈谈你对spring的理解。
答:Spring是一个轻量的开源框架,为简化企业级应用开发而生,它的核心如下:

2. 你知道spring框架中使用了哪些设计模式吗?
答:spring中使用到的部分设计模式如下:

3. 介绍一下spring bean的生命周期。
答:bean的生命周期为 创建 --> 初始化 --> 调用 --> 销毁。

4. 说一说spring有哪些核心模块?
答:主要有以下七大核心模块:

七大核心模块

5. 请描述一下spring的事务。
答:Spring既支持编程式事务管理(也称编码式事务),也支持声明式的事务管理。编程式事务就是把事务写在业务逻辑代码中,声明式事务是将事务管理代码从业务方法中分离出来,以声明的方式来实现事务管理。大多数情况下比编程式事务管理更好用。声明式事务可以在配置文件中用<tx >标签来实现,也可以在需要使用事务的方法上加@Transaction注解。

6. 如何理解spring的 IOC容器?
答:IOC就是控制反转,这是一种思想而不是一种技术。通常创建对象是由程序员来new的,而"控制反转"是指new实例的工作不由程序员来做,而是交给Spring容器来做。在Spring中BeanFactory是IOC容器的实际代表者。

7. ApplicationContext是干嘛的?有哪些实现类?
答:ApplicationContext是“应用容器”,继承自BeanFactory。Spring把Bean放在这个容器中,在需要的时候,用getBean方法取出。它的实现有以下三个:

8. BeanFactory与AppliacationContext有什么区别?
答:BeanFactory 是基础类型的IOC容器,提供完整的IOC服务支持。ApplicationContext 是在 BeanFactory 的基础上构建,是相对比较高级的容器,除了 BeanFactory 的所有支持外,ApplicationContext还提供了事件发布、国际化支持等功能。

9. 依赖注入有哪些实现方式?
答:spring提供了以下四种依赖注入的方式:

10. 什么是spring beans?
答:spring beans 就是被spring容器初始化、配置和管理的对象。

11. 一个spring beans 的定义需要包含什么?
答:一个 Spring Bean 的定义包含容器必知的所有配置元数据,包括如何创建一个 bean,它的生命周期详情及它的依赖。

12. spring支持几种类的作用域?
答:spring在配置bean的时候,可以通过scope属性来定义作用域,scope属性有以下5个值:

13. 怎么开启spring的注解装配?
答:spring默认是没有开启注解的,要使用注解,我们必须在 Spring 配置文件中配置 <context:annotation-config/>元素。

14. 简单的说一下AOP编程中的相关概念。
答:主要有如下概念:

15. spring的AOP编程中使用的jdk动态代理和cglib动态代理有什么区别?
jdk动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用 InvokeHandler 来处理。而cglib动态代理是利用asm开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。

<aop:aspectj-autoproxy proxy-target-class="true"/>

(二)、SpringMVC

1. 什么是springMVC?
答:Spring MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架。使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型。框架的目的就是帮助我们简化开发。

2. 简单描述一下SpringMVC的工作原理。
答:工作原理如下:

3. springMVC有什么优点?
答:它是基于组件技术的,全部的应用对象,无论控制器和视图,还是业务对象之类的都是 java组件;可以任意使用各种视图技术,而不仅仅局限于JSP;支持各种请求资源的映射策略;它应是易于扩展的。

4. springMVC和struts2有什么区别?
答:区别如下:

未完待续……

上一篇下一篇

猜你喜欢

热点阅读