每天三道面试题2019-09-14

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/HardToFindName/article/details/100863759

1、说说springmvc的执行流程

  1. 客户端发起请求request
  2. 前端控制器DispatcherServlet接收到request,请求处理器映射器HandlerMapping查找Handler
  3. HandlerMapping根据url查找到对应的Handler,返回一个执行链给DispatcherServlet
  4. DispatcherServlet拿到执行链后请求处理器适配器HandlerAdapter处理执行
  5. HandlerAdapter执行相应的Handler。
  6. Handler(平时也称为Controller)内部运行完毕后返回一个ModelAndView给HandlerAdapter
  7. HandlerAdapter又将ModelAndView返回给DispatcherServlet
  8. DispatcherServlet请求视图解析器VR进行视图解析
  9. VR解析完返回一个View(jsp、freemaker…)给前端控制器
  10. DispatcherServlet对视图进行渲染,将模型数据填充到request域
  11. 返回response给客户端。

2、Mysql存储引擎的区别(InnoDb和MyISAM)

在这里插入图片描述
原文链接

  1. MyISAM不支持外键,InnoDb支持外键
  2. MyISAM不支持事务,InnoDb支持事务
  3. MyISAM对数据的操作使用表锁(读数据加S锁,写数据加X锁),即使是操作一条数据也会对整张表进行锁定,故其不适合高并发的操作;InnoDb对数据的操作使用的是行锁,操作是只锁定某一行,不影响其他行的操作,适合高并发的操作。
  4. MyISAM只缓存索引,不缓存真实数据,对内存的要求较低;InnoDb不仅缓存索引还缓存数据,所以对内存的要求较高,而且内存大小对性能有决定性的影响。
  5. MyISAM的表空间小(由三个文件构成:索引文件,表结构文件,数据文件,可以存放在不同目录);InnoDb表空间大,若使用共享表空间,其存储空间大小不受系统的限制(有的系统限制文件最大为2GB),最大为64TB,若使用独占表空间,大小会受到系统的限制
  6. MyISAM使用非聚集索引,其索引的data域存放的是数据的物理地址,故其具有较高的插入、查询性能;InnoDb使用聚集索引,key为表主键,辅索引的data域存放的是主键,故使用辅索引查找数据最后是通过主索引找到数据的,写入数据时索引需要维持B+树结构,性能没有MyISAM好。
  7. 、MyISAM关注性能;InnoDb关注事务

详细参考:https://blog.csdn.net/keil_wang/article/details/88392433

3、线程间为什么要进行通信?

cpu是随机进行线程的,但是有些时候我们希望cpu按照我们的规律执行线程,所以需要线程间进行通信。

线程间通信的几种方式和常见场景:

  1. 使用休眠唤醒机制:
    Object的wait()、notify()、notifyAll()
    Condition的await(),signl(),signlAll()
  2. CountDownLatch门栓机制,适用于一个线程的执行需要等待另外几个线程执行后才执行。
  3. CycicBariier栅栏机制,适用于等待某个条件,全部线程一起执行,如赛跑比赛中所有运动员都要等待信号枪。
  4. Semaphore,适用于控制访问资源,如三台机器8个工人,只有获取到机器资源的工人才能进行操作,操作结束后释放资源。

猜你喜欢

转载自blog.csdn.net/HardToFindName/article/details/100863759
今日推荐