秋招面试题题

  1. 谈谈你对spring的理解, 以及它的出现跟我们以前的开发模式有什么不一样, 谈谈它的优点.
  • spring是一个开源的免费的框架(容器)!
  • spring是一个轻量级的、非侵入式的框架!
  • 控制反转(IOC)、面向切面编程(AOP)!
  • 支持事务的处理,对框架整合的支持!

总结一句话:spring就是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架!

  1. 谈谈springmvc的运行流程.
    秋招面试题题_第1张图片

  2. DispatcherServlet表示前置控制器,是整个SpringMVC的控制中心,用户发出请求,DispatcherServlet接收请求并拦截请求

    我们假设请求的url为 : http://localhost:8080/SpringMVC/hello

    如上url拆分成三部分:

    http://localhost:8080 服务器域名

    SpringMVC部署在服务器上的web站点

    hello表示控制器

    通过分析,如上url表示为:请求位于服务器localhost:8080上的SpringMVC站点的hello控制器

  3. HandlerMapping为处理器映射器。DispatcherServlet调用HandlerMapping,HandlerMapping根据请求Url找Handler

  4. HandlerExecution表示具体的Handler,其主要作用是根据URL查找控制器,如上url被查找控制器为:hello

  5. HandlerExecution将解析后的信息传递给DispatcherServlet,如解析控制器映射等

  6. HandlerAdapter表示处理器适配器,其按照特定的规则去执行Handler

  7. Handler让具体的Controller执行

  8. Controller将具体的执行信息返回给HandlerAdapter,如ModelAndView

  9. HandlerAdapter将视图逻辑名或模型传递给DispatcherServlet

  10. DispatcherServlet调用视图解析器(ViewResolver)来解析HandlerAdapter传递的逻辑视图名

  11. 视图解析器将解析的逻辑视图名传给DispatcherServlet

  12. DispatcherServlet根据视图解析器解析的视图结果,调用具体的视图

  13. 最终视图呈现给用户

  14. 谈谈mybatis的运行流程.

  15. 秋招面试题题_第2张图片

  16. 什么是继承? 继承的优势,特点是什么? 以及它跟我们那个设计模式有点像?
    继承的基本概念:继承指一个对象直接使用另一对象的属性和方法
    继承的特点:继承的优缺点 因为大部分是继承而来的
    很容易修改和扩展已有的实现
    、装饰模式和继承有啥不同
    1、装饰模式:
    (1)、用来扩展特定对象的功能。
    (2)、不需要子类。
    (3)、动态,运行时分配职责。灵活。
    (4)、一个给定的对象,同时可能有不同的装饰对象。
    2、继承
    (1)、用来扩展一类对象的功能
    (2)、不需要子类
    (3)、静态
    (4)、编译的时候分配职责,缺乏灵活。
    (5)、导致很多子类产生,混杂。

  17. 谈谈代理模式? 以及在那些方面有运用? 还有它跟装饰器模式的区别?
    代理模式

为什么要学习代理模式?因为就是SpringAOP的底层【SpringAOP 和 SpringMVC】

代理模式的分类:

  • 静态代理
  • 动态代理

静态代理

角色分析:

  • 抽象角色:一般会使用接口或者抽象类来解决
  • 真实角色:被代理的角色
  • 代理角色:代理真实角色,代理真实角色后,我们一般会做一些附属操作
  • 客户:访问代理对象的人

动态代理

  • 动态代理和静态代理角色一样
  • 动态代理的代理类是动态生成的,不是我们直接写好的
  • 动态代理分成两个类:基于接口的动态,基于类的动态代理
    • 基于接口–jdk动态代理【我们在这里使用】
    • 基于类:cglib
    • java字节码实现:javasist

需要了解两个类

  • Proxy:代理
  • InvocationHandler:调用处理程序
  1. catch中有return, finally语句块, 则两个都会执行吗? 如果会的话执行顺序是什么样的?

  2. 谈谈spring aop, 以及你自己在那些方面有运用?

  3. AOP在spring中的作用

提供声明式事务,允许用户自定义切面

  • 横切关注点:跨越应用程序多个模块的方法或功能。即是,与我们业务逻辑无关的,但是我们需要关注的部分,就是横切关注点,如:日志,安全,缓存,事务等等。。。
  • 切面(Aspect):横切关注点,被模块化的特殊对象。即,它是一个类
  • 通知(Advice):切面必须要完成的工作。即,它是类中的一个方法
  • 目标(Target):被通知对象
  • 代理(Proxy):向目标对象应用通知之后创建的对象
  • 切入点(PointCut):切面通知 执行的“地点”的定义
  • 连接点(JoinPoint):与切入点匹配的执行点

秋招面试题题_第3张图片

SpringAOP中,通过Advice定义横切逻辑,Spring中支持5中类型的Advice

秋招面试题题_第4张图片

即Aop在不改变原有代码的情况下,去增加新的功能

  1. mysql中日志有哪些? 以及如何使用?
  2. 我们所有的sqld现在都是不可见的,我们希望知道它是怎么执行的,所以我们必须要看日志!

配置日志 (系统自带的,控制台输出)

mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

配置完毕日志之后,后面的学习就需要注意这个自动生成的SQL,你们就会喜欢上MyBatis-Plus !

使用性能分析插件可以提高效率,新版本MP已经移除该拆件了,可以使用druid

  1. mysql中delete, truncate, drop的区别?
    秋招面试题题_第5张图片

  2. 谈谈spring的日志?
    log4j

  3. mybatis中标签的缺点?
    使用 foreach 的方式来进行批量插入的话,可以考虑减少一条 insert 语句中 values 的个数,最好能达到上面曲线的最底部的值,使速度最快。一般按经验来说,一次性插20~50行数量是比较合适的,时间消耗也能接受。
    重点来了。上面讲的是,如果非要用的方式来插入,可以提升性能的方式。而实际上,MyBatis文档中写批量插入的时候,是推荐使用另外一种方法。
    即基本思想是将 MyBatis session 的 executor type 设为 Batch ,然后多次执行插入语句。就类似于JDBC的下面语句一样。

  4. 做过批量添加吗? 详细讲一讲

  5. 你做过微服务的项目吗? 谈谈你对微服务的理解

  6. 你做过前后端分离的项目吗?

  7. 详细聊一聊stream流.

你可能感兴趣的:(1024程序员节)