Java经典面试题

						面试题总结

一 : 简要概述一下SpringMVC的执行流程
1.客户端通过url发送请求
2.核心控制器Dispather Servlet接收到请求,通过系统自定义的映射器配置找到对应的Handler,并将url映射的控制器Controller返回给核心控制器
3.通过核心控制器找到系统或默认的适配器
4.由适配器调用实现对应接口的处理器并将结果返回给适配器.结果中包含数据模型和视图对象,再由适配器返回给核心控制器
5.核心控制器将获取到的数据和视图结合的对象传递给视图解析器,获取解析得到的结果,并由视图解析器响应给核心控制器
6.核心控制器将结果返回给客户端
二 : 浅谈你对SpringMVC的理解
MVC是 model - view - controller 的简称,即 模型 - 视图 - 控制器,MVC是一种设计模式,它强制的把应用程序的输入,处理,和输出分开.
MVC中的模型,视图,控制器的任务
视图 : 视图是用户看到并与之交互的界面,视图向用户显示相关的数据,并接受用户的输入.视图不进行任何业务逻辑的处理.
模型 : 模型表示业务数据和业务处理,相当于JavaBean.一个模型能为多个视图提供数据,这提高了应用程序的复用性
控制器 : 控制器接收用户的请求并调用相应的模型去处理请求,然后根据处理结果调用相应的视图来显示处理的结果

MVC的处理过程:
首先控制器接收用户的请求,调用相关的模型来进行业务处理,并返回数据给控制器.控制器调用相应的视图来显示处理的结果,并通过视图呈现给用户
三 : 浅谈你对Servlet的理解 :
1.什么是Servlet :
Servlet是一个继承了HTTPServlet的一个类文件,功能是在服务器根据客户端的不同请求给予相应的响应服务.Servlet的运行环境是Tomcat.
2.Servlet的生命周期 :
触发 : url请求触发
加载 : ClassLoader加载相关需要用到的类
实例化 : init()方法传递配置参数,为服务做准备
初始化 : 调用构造方法,创建Servlet类对象
服务 : doGet(),doPost(),Servlet()方法提供服务
退出服务 : destroy()销毁内存中的无用数据
从服务器启动开始,如果没有请求触发的话,就不会有响应的Servlet对象.创建以后到结束,一直都只有一个Servlet对象,以多线程的形式执行,多个请求发送到同一个Servlet类.

四. Spring 的AOP原理解析 :
AOP是面向切面编程,是面向对象(OOP)编程的补充与完善.AOP技术利用一种称为”横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块.将那些与业务无关,却为业务模块所共同调用得到逻辑或责任封装起来,便于 减少系统的重复代码,降低模块间的耦合.
实现AOP的两种方案 :
1.动态代理技术
利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行
2.静态织入 的方式
引入特定的语法创建切面,从而使编译器可以在编译期间织入有关切面的代码

五.HTTPClient跨域请求 :
HTTPclient是由Apache公司提供,他可以获取页面最终的HTML源文件 .直接可以获取页面返回的JSON数据,可以在代码内部模拟发起http请求,将请求的结果捕捉,将获取到的json数据利用JackSonObjectMapper对象把json数据转为java对象.

六.RestFul是什么 :
一种软件架构风格,设计风格.它提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次.更易于实现缓存机制.

七.RestFul的请求方法 :
1.GET请求 : 用于查询数据,不会影响当前资源的内容.
2.PUT请求 : 用于修改数据,不会增加数据的种类.
3.POST请求 : 用于提交数据,请求会改变数据的种类
4.DELETE请求 : 用于删除数据
5.HEAD请求 : HEAD中不含有呈现数据,仅仅是Http头信息.
6.OPTIONS请求 : 用于获取当前url所支持的方法,若请求成功,则会在http头中包含一个名为”Allow”的头,值是所支持的方法

八.Override和Overload的区别 :
1.Override(重写)
存在于父类和子类之间(实现),方法名,返回值,参数相同.子类方法不能缩小父类方法的访问权限.子类方法可以不抛出异常,但不能抛出比父类方法更多的异常.若方法被定义为final ,则不可被重写
2.Overload(重载)
存在于父类和子类,同类方法中.参数的类型,个数,顺序至少有一个不相同…重载与返回值无关

九.浅谈你对Spring的理解
Spring是一个开源框架,实际上是一种容器,是实现了IOC的容器,是一个Bean的工厂,对Bean进行管理.
IOC(控制反转) : 将类独栋创建和依赖关系写在配置文件中,由配置文件注入,实现了低耦合.
AOP(面向切面) : 将公共的服务对于程序逻辑相对独立的功能抽取出来,利用Spring的配置文件将这些功能插入,提高了可维护性和复用性.

十.数据库的三范式 :
第一范式(1NF) : 字段具有原子性,不可再分.数据库表中的字段都是单一属性,不可再分.
第二范式(2NF) : 建立在第一范式上,要求数据库表中的每个实例必须可以被唯一区分.这个唯一属性被称为主关键字或主键.
第三范式(3NF) : 建立在第二范式上,数据库表中 :
1.每一列都只有一个值
2.每一行都能区分
3.每一个表都不包含其他表已经包含的非主键信息

十一.Java中常见的几种设计模式
1.单例设计模式
无论程序如何运行,采用单例模式设计的类,永远只会有一个实例对象产生
单例的实现 :
1.构造方法私有化(private)
2.在其内部产生该类得到实例化对象,将其疯转为private static类型
3.定义一个静态方法返回该实例
/**

  • 线程安全的单例模式
    */
    public class Java {
    //生成本类的实例化对象
    private static Java java;
    //私有化构造方法
    private Java() {
    }
    //定义一个方法返回此对象的实例
    private static Java getInstance() {
    //判断此实例化对象是否为空
    if (java == null) {
    //上锁
    synchronized (Java.class) {
    //再次判断
    if (java == null) {
    //创建 此空实例对象
    jav
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值