Java开发常见入坑面试题总结

网友投稿 678 2022-05-30

一、抽象类和接口的使用场景

抽象类的使用场景:

1、既想约束子类有共同的行为,又想拥有自己的方法,又能拥有实例变量

接口的应用场景:

约束多个类拥有统一的行为,但是不在乎每一个类是如何实现的。

作为能够实现特定功能的标识存在,或者是什么都不做的纯粹的标识

实现类具备很多不同的功能,但是这些功能没有什么联系

使用接口的引用调用具体实现类的方法

二、抽象类和接口的区别?

1、抽象类对变量没有限制,接口只能包含常量

2、抽象类拥有构造方法,接口没有构造方法

3、抽象类中的方法可以是抽象的,也可以不是抽象的,但是接口中的方法必须是public abstract的,

三、如何进行单元测试

在代码编写完成之后,进行单元测试主要分为两个步骤:

人工静态检查

该阶段主要保证代码算法的正确性和逻辑性,尽可能的发现程序中没有发现的错误。

动态执行跟踪

执行待测程序,将实际运行结果和预期结果进行比较,发现其中存在的错误

四、如何实现低耦合?

1、少用继承,多用接口隐藏实现的细节

2、模块的功能设计尽可能的单一

3、遵循一个定义只在一个地方出现

4、少用全局变量

5、类中的属性和方法少用public,多用private

6、少用“硬编码”,尽量避免直接使用sql语句操作数据库

7、尽量减少模块直接操作或调用其他模块,

8、尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,不用内容耦合

五、聚集索引和非聚集索引的区别?

聚集索引:该索引中键值的逻辑顺序决定了表中相应行的物理顺序

聚集索引的使用情况:

列经常被分组排序

Java开发常见入坑面试题总结

返回某范围内的数据

数据列中的数据基本不同

主键列和外键列

非聚集索引:数据存储在一个地方,索引存储在另一个地方,索引的指针指向数据的存储位置

非聚集索引的使用情况:

列经常用分组排序

频繁更新的列

主键列和外键列

频繁修改索引列

六、Springboot中的容器有什么用?

1、添加组件(@configtion、@bean、Component、@Controller、@Service、@Repository)

2、导入xml配置文件

七、shiro中的token有什么用?是如何生成的?

Token的使用比session更有用,因为session过多的时候会占用服务器资源,而且在分布式系统中很难完成session的共享,

Token和session的作用都是对用户请求进行合法性认证。

Token存放位置:

Token会放置在请求头中,在前后端分离的时代,服务器认证通过之后,会返回给客户端一个token,在vue项目中,将这个token设置在全局cookie中,每次请求通过interceptors.request.use这个拦截,动态地为每个请求带上刚刚那个token,

Token的实现过程:

1.用户登录校验,校验成功后就生成Token并返回给客户端。

2.客户端收到数据后保存在客户端的cookie中

3.客户端每次访问API都从cookie中取出token并携带到服务器端。

4.服务器端采用filter过滤器校验请求携带的token。校验成功则返回请求数据,校验失败则返回错误码

不存储token,无论在缓存中或者数据库中的验证过程:在用户登录认证完成之后,服务器会向客户端返回一个加了密的token,这个token是由用户请求的部分信息、请求的URL、时间戳这三部分融合在一起形成的,在客户端再次发送请求的时候,会重新根据请求的部分内容、请求的URL、时间戳生成一个新的token,然后将这个新的token和之前的token进行比较,如果相同则这次合法。这样token不会占用存储空间,而且加密的过程要比从数据库中进行查询快得多。

八、vue和后台交互时如何规范接口?

一般常使用代理方式配置接口

欢迎小伙伴们补充指正!

我是灰小猿,我们下期见!

Java Spring 数据库

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:快速入门Redis系列(2)——Redis的数据类型详解
下一篇:Volatile可见性和原子性
相关文章