Collection 与Collections的区别?
Collection是集合类的上级接口,继承与他有关的接口主要有List和Set
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全等操作
重载Overload 与重写Override的区别
重载:在一个类中的现象:同一个类中,存在方法名相同,参数列表不同的方法
重写:是指建立了继承关系以后,子类对父类的方法不满意,可以重写,遵循两同两小一大原则
重载的意义:是为了外界调用方法时方便,不管传入什么样的参数,都可以匹配到对应的同名方法
重写的意义:在不修改源码的情况下,进行功能的修改与拓展(OCP原则:面向修改关闭,面向拓展开放)
3、try...异常 catch finally 和try ..异常 catch,我要return一个值,那个会执行return?
假如在try catch里面加一个throw,会return值吗?是既抛异常也有返回值,还是只有异常。
try catch resource
顺序 try catch return finally return(catch中的)
finally 中有return不执行
- 当Java程序执行try块、catch块遇到return语句时,当系统执行完return语句之后,并不会立即结束该方法,而是去寻找该异常处理流程中是否包含finally块,如果没有finally块,方法终止,返回相应的返回值。如果有finally块,系统立即开始执行finally块——只有当finally块执行完成后,系统才会再次跳回来根据return语句结束方法。如果finally块里使用了return语句来导致方法结束,则finally块已经结束了方法,系统不会跳回去执行try、catch块里的任何代码。
- 只返回异常。程序在catch中执行throw语句时并不会立即抛出异常,而是去寻找该异常处理流中是否包含finally块。如果没有finally块,程序立即抛出异常;如果有finally块,程序立即开始执行finally块——只有当finally块执行完成后,系统才会再次跳回来抛出异常。如果finally块里使用return语句来结束方法,系统将不会跳回catch块去抛出异常。
4、抽象类和接口
- 接口是一种用interface定义的类型,抽象类是一种用class定义的类型
- 接口中的方法都是抽象方法,还有默认方法与静态方法。抽象类中的方法不做限制
- 接口中的都是静态常量,抽象类中可以写普通的成员变量
- 接口没有构造方法,不可实例化,抽象类有构造方法,但是也不可以实例化
- 接口是先天设计的结果,抽象是后天重构的结果
- 接口可以多继承,抽象类只能单继承
数据库
1、事务,事务怎么提交,怎么应用,一张表能不能使用事务
事务是将一堆sql语句绑定在一起执行,sql中默认事务是开启的,也可以自己进行事务提交,先用
start开启事务,写完sql在手动提交,commit ,
当对数据库进行增删改的时候,会对数据造成破坏的时候,使用事务,可以,当有多条数据存在的时候。
2、索引是什么,在数据库中怎么查看索引的效率
索引是排好序的目录,可以快速进行数据检索 ,explain
- 1.把创建了索引的列的内容进行排序,
- 对排序结果生成倒排表
- 在倒排表内容上拼上数据地址链
- 先找到倒排表内容,取出数据链,从而拿到具体数据
3、左连接,右连接,内连接有什么区别
- inner join 内连接,只保留两张表中完全匹配的结果集
- left join会返回左表所有的行,即使在右表中没有匹配的记录
- right join会返回右表所有的行,即使在左表中没有匹配的记录
4、左连接和内连接那个效率高
- 如果inner join是等值连接,返回的行数比较少,所以性能相对会好一点
- 同理,使用了左连接,左边表数据结果尽量小,条件尽量放到左边处理,意味着返回的行数可能比较少。这是mysql优化原则,就是小表驱动大表,小的数据集驱动大的数据集,从而让性能更优
spring框架
1、项目有几个,应用了什么技术
2、自己拿手的项目模块具体说一下
3、mybatis查询数据库的两种写法。以及写完SQL语句后还有干啥?
4、前端页面怎么调用后端,顺序是什么。
5、restful了解吗?说一说
1)每一个URI代表一种资源;
(2)客户端和服务器之间,传递这种资源的某种表现层;
(3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。
微服务
1、用过那些组件
2、分别介绍组件的作用
3、feign方式怎么调用,怎么实现的
- Feign应用过程分析(底层逻辑先了解):
- 1)通过 @EnableFeignCleints 注解告诉springcloud,启动 Feign Starter 组件。
- 2) Feign Starter 会在项目启动过程中注册全局配置,扫描包下所由@FeignClient注解描述的接口,然后由系统底层创建接口实现类(JDK代理类),并构建类的对象,然后交给spring管理(注册 IOC 容器)。
- 3) Feign接口被调用时,底层代理对象会将接口中的请求信息通过编码器创建 Request对象,基于此对象进行远程过程调用。
- 4) Feign客户端请求对象会经Ribbon进行负载均衡,挑选出一个健康的 Server 实例(instance)。
- 5) Feign客户端会携带 Request 调用远端服务并返回一个响应。
- 6) Feign客户端对象对Response信息进行解析然后返回客户端。
MVC工作原理
用户发送请求至前端控制器DispatcherServlet。
2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4、DispatcherServlet调用HandlerAdapter处理器适配器。
5、HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
6、Controller执行完成返回ModelAndView。
7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。
8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
9、ViewReslover解析后返回具体View。
10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
11、DispatcherServlet响应用户。