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

举报
灰小猿 发表于 2021/09/28 09:05:51 2021/09/28
【摘要】 一、抽象类和接口的使用场景抽象类的使用场景:1、既想约束子类有共同的行为,又想拥有自己的方法,又能拥有实例变量接口的应用场景:约束多个类拥有统一的行为,但是不在乎每一个类是如何实现的。作为能够实现特定功能的标识存在,或者是什么都不做的纯粹的标识实现类具备很多不同的功能,但是这些功能没有什么联系使用接口的引用调用具体实现类的方法二、抽象类和接口的区别?1、抽象类对变量没有限制,接口只能包含常量...

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

抽象类的使用场景:

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

接口的应用场景:

  1. 约束多个类拥有统一的行为,但是不在乎每一个类是如何实现的。
  2. 作为能够实现特定功能的标识存在,或者是什么都不做的纯粹的标识
  3. 实现类具备很多不同的功能,但是这些功能没有什么联系
  4. 使用接口的引用调用具体实现类的方法


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

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

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

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


三、如何进行单元测试?

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

  1. 人工静态检查

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

  1. 动态执行跟踪

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


四、如何实现低耦合?

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

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

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

4、少用全局变量

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

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

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

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


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

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

聚集索引的使用情况:

  1. 列经常被分组排序
  2. 返回某范围内的数据
  3. 数据列中的数据基本不同
  4. 主键列和外键列


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

非聚集索引的使用情况:

  1. 列经常用分组排序
  2. 频繁更新的列
  3. 主键列和外键列
  4. 频繁修改索引列


六、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和后台交互时如何规范接口?

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


欢迎小伙伴们补充指正!

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。