框架基础面试题

目录:

1.springmvc执行流程:

2.Spring简单介绍:

3.orm框架:

4.常用orm框架:hibernate和mybiatis:

5.hibernate对象的状态:

6.hibernate缓存:

7.session和sessionfactory:

8.spring核心模块:

9.hibernate核心api:

10.mybatis缓存:

11.Spring循环依赖:

12.Spring bean的生命周期:

13.Spring作用域:

14.Spring装配bean:

15.Spring常用注解:

16.Springmvc常用注解:

17.autowire和resource区别:

18.Spring核心类:

19.javaconfig:

20.Springboot优点:

21.自定义端口运行springboot:

22.swagger

23.什么是mybatis:


1.springmvc执行流程:

1.发送的请求被前端控制器接收。

2.前端控制器将将请求交给handlermapping,handlermapping解析url,找到对应的handler。

3.前端控制器再将找到的handler通过handlerdispatcher适配器,调用对应的handler。

4.执行完handler方法后,返回一个modelandview对象,通过适配器,返回给前端控制器。

5.前端控制器再将modelandview交给视图解析器,解析成对应的视图,渲染返回给用户。

2.Spring简单介绍:

Spring是一个轻量级的容器框架。核心分为ioc和aop。

ioc:控制反转,主要是将创建对象和使用对象的权力由代码本身,也就是new,转交给Spring容器。核心原理是xml配置+反射。

aop:面向切面编程思想。使用动态代理实现。主要是负责在处理业务流程的过程中,加入相关逻辑,如日志、事务、权限判断等。

3.orm框架:

翻译过来就是对象关系映射,主要解决的是面向对象和关系型数据库之间互不匹配的现象所诞生的技术。

4.常用orm框架:hibernate和mybiatis:

相同点:底层都封装了jdbc,都是orm框架。

不同点:hibernate可以自动生成sql,但复杂的sql则很难实现。

                mybatis将代码和sql分离。

5.hibernate对象的状态:

1.临时状态:刚new出来时,无id,不存在session中。

2.持久状态:有id,并加入session缓存中。

3.游离状态:有id,但没有加入session缓存中

6.hibernate缓存:

缓存:不从数据库中读取数据,从内存中读取数据。

一级缓存:默认是开启状态,主要是session级别的缓存,在session开启到结束的这一过程,同一条sql查询只会从数据查询一次,之后都是从缓存中读取。

二级缓存:默认是关闭的,开启后,主要是sessionfactory级别的缓存。也就是可以被所有session对象共享。

7.session和sessionfactory:

session是线程不安全的,所以基本每一个线程都对应了一个session。创建session不会消耗太多的资源。

sessionfactory是线程安全的,sessionfactory的数据可以被所有session共享。在程序初始化时就已经创建成功。

8.spring核心模块:

aop模块、test模块、data数据访问模块,core continer核心容器模块、web模块、messaging模块。

9.hibernate核心api:

1.session:参考第7条。

2.sessionfactory:参考第七条。

3.tracnsaction:事务,事务的4个特性,事务的提交和回滚。

4.configuration:加载核心配置文件,将配置文件放到对象中。

10.mybatis缓存:

一级缓存:sqlsession级别的缓存,默认是开启的。在sqlsession范围内,同一条sql查询只会从数据库查询一次,之后都从sqlsession里面获取数据。

二级缓存:是namespace级别的缓存,可以被多个sqlsession所共享。但二级缓存在多表关联查询时,非常容易出现脏数据。

11.Spring循环依赖:

循环依赖就是多个bean之间相互引用,形成闭环。Spring主要有构造器循环依赖和setter方式的循环依赖。Spring无法解决构造器的循环依赖。

Spring依靠三级缓存来解决循环依赖。

12.Spring bean的生命周期:

1.读取xml配置文件,创建实例化bean对象。

2.对bean进行依赖注入。

3.此后bean一直存在。

4.应用销毁,bean销毁。

13.Spring作用域:

1.singleton:容器中只有一个单例对象。

2.prototype:每次调用实例都会创建一个新的实例。

3.request:每一次请求都会创建一个新的实例。

4.session:不同的session都会创建新的实例。

14.Spring装配bean:

1.xml装配:

    优点:xml基本包括了所有装配的信息。

    缺点:配置繁杂。

2.java代码装配:

    需要配置一个javaconfig,里面再配置需要装配的bean。

3.自动装配:

    主要是使用注解进行装配,简单易用。分为两步:第一步组件扫描,第二部自动装配。

    常用注解:@Component表明该类是组件类,可以被自动装配。

                       @autowire实现bean的自动装配。

15.Spring常用注解:

    1.声明bean对象:@component,@controller,@service,@repository:Dao层

    2.注入bean:@autowire,@resource

    3.配置类:@configuration

    4.aop: @aspect:声明切面

    5.属性赋值: @value

16.Springmvc常用注解:

    1.@requesmapping:处理请求地址映射

    2.@requestparam:获取请求的参数

    3.@responsebody:返回josn数据格式

17.autowire和resource区别:

相同点:autowire和resource都可以注入bean对象。

不同点:

    autowire:按类的类型进行注入。

    resource:按名称注入

18.Spring核心类:

beanfactory:产生新的bean实例。

applicationcontext:提供了框架的实现。

19.javaconfig:

传统的Spring都是基于xml来进行配置的,之后可以通过javaconfig来代替xml进行配置。

常用注解:

@configration:表面该类是配置类。

@componentscan:component类的扫描。

@bean:定义bean

@propertysource:读取properties文件

20.Springboot优点:

1.简化了配置

2.内置tomcat服务器,所以可以通过java -jar命令来运行程序。

3.使用pom文件来简化复杂的依赖关系。

4.快速启动项目。

21.自定义端口运行springboot:

再yml文件中,使用server.port来自定义运行端口。

22.swagger

由于前后端分离,所以后端无法与前端进行即时的对接。

通过swagger可以自动生成后端的api。

23.什么是mybatis:

mybatis是一个半orm框架,底层封装了jdbc,使开发者只需要关注sql本身,将程序和代码分开。

优点:将代码和sql分离,相当灵活。底层封装jdbc,减少了冗余的代码。

缺点:因为单独写sql,更换数据库需要重写sql,移植性差。

24.#{}和${}的区别:

#{}是预编译,可以防止注入攻击。

${}是字符串替换。

25.

你可能感兴趣的:(框架基础面试题)