面经-法大大Java实习 2023.4.6
总结:(答得不是很完善的地方总结一下)
接口和抽象类的共同点和区别:
共同点:
- 不可以被实例化
- 可以包含抽象方法
- 可以有默认的实现方法
区别:
- 接口对类的行为进行约束,实现某接口已经拥有了的具体行为,抽象类代码复用,强调的是从属关系
- 接口的成员变量只能用public static final修饰且不可修改并初始化,抽象类默认是default类型,可以在子类被重新定义且重新赋值
- 一个类只能继承一个抽象类(单继承),可实现多个接口。
== 和 equals()方法
==:
- 对于基本数据类型,直接比较值的大小
- 对于引用类型,比较对象的内存地址
equals()方法:
比较对象是否相等,即对象的内存地址是否相等,一般也分为两种情况
- 重写了,一般比较两个对象的成员属性是否相等
- 未重写,比较的该类型的对象是否相等
try-catch-finally方法
- 如果在catch中return了,那么finally里面的逻辑会在return之前被执行。
- 如果catch和finally都有return,那么catch的return会被忽略,
- 因为 try 语句中的 return 返回值会先被暂存在一个本地变量中,当执行到 finally 语句中的 return 之后,这个本地变量的值就变为了 finally 语句中的 return 返回值。
- finally一般用于资源回收、比如线程、数据库资源回收的情况
HashMap和HashSet区别
- 前者实现了Map接口,后者实现了Set接口
- HashSet底层是HashMap实现存储的
HashMap和HashTable的区别
- 前者继承了AbstractMap类,后者继承了Dictionary类
- HashMap线程不安全,HashTable线程安全
- contains不一样,HashMap没有contains方法只有containsValue和containsKey方法,但是HashTable这三个方法都有
- key-value是否能为null,HashMap 都可以为null,HashTable都不可以null,否则就是空指针异常
- 获取hashCode方法不一样
HashMap先调用hashCode获取到了hash值之后,再与右移16位的hash值相异或获取hash值。
HashTable直接通过hashCode方法获取
- 解决hash冲突方法不一样
HashMap通过数组+链表/红黑树,如果链表长度大于8,变成红黑树,若链表长度后面小于6,转回链表格式
HashTable只有链表存储
项目介绍:
因为主要是自己写的、在redis那一块也比较熟悉,也自己解决了缓存雪崩的问题,后面也解决了缓存和数据库一致性问题,但是面试的时候忘记提了,可能提了会更加加分~
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 HUT菜鸟小八的博客!
评论