2019-10-09 面试题
接口和抽象类的区别:
7种区别
| 比较点 | 抽象类 | 接口 |
| 定义 | 用abstract修饰的类 | 用interfact修饰的类 |
| 组成 |
抽象方法,普通方法,构造方法, 成员变量,常量 |
抽象方法,静态常量 |
| 必须有默认的方法实现 | 不存在方法实现 | |
| 使用 | 子类继承(extends) | 类实现(implements) |
| 关系 | 抽象类可以实现接口 | 接口不能继承抽象类 |
| 对象 | 都是通过对象的多态性来实现 | |
| 有构造器 | 无构造器 | |
| 可以有main() | 没有main() | |
| 局限性 | 继承一个类和实现多个方法 | 只能继承一个或多个接口 |
| 速度快 | 速度慢,因为需要时间去找 |
HashMap、HashTable、ConCurrentHashMap(浅)区别:
HashMap:非线程安全,键和值都允许有null,由于现场不安全所以效率比较高;底层是数组和链表,1.8之后加入红黑树;
HashTable:线程安全,采用synchronizeation关键字,不接受null,效率低;
ConCurrentHashMap:线程安全,用于替代HashTable,采用了锁分段技术,不接受null,效率相对HashTable较高。
SpringMVC的执行流程:
- 用户发送请求至前端控制器DispatcherServlet;
- DispatcherServlet收到请求调用处理器映射器HandlerMapping;
- 处理器映射器根据请求url找到具体的处理器,生成处理器执行链HandlerExecutionChain(包括处理器对象和处理器拦截器)一并返回给DispatcherServlet;
- DispatcherServlet根据处理器Handler获取处理器适配器HandlerAdapter执行HandlerAdapter处理一系列的操作,如:参数封装,数据格式转换,数据验证等操作;
- 执行处理器Handler(Controller,也叫页面控制器);
- Handler执行完成返回ModelAndView;
- HandlerAdapte将Handler执行结果ModelAndView返回到DispatcherServlet;
- DispatcherServlet将ModelAndView传给ViewResolver视图解析器;
- ViewReslover解析后返回具体View;
- DispatcherServlet对View进行渲染视图(既将模型数据model填充至视图中);
- DispatcherServlet响应用户。
具体画图流程:

浙公网安备 33010602011771号