快手后端2面的一些问题讨论

面试中答得不好的,求解答。

1.为什么重写equal一定要重写hashcode,我把之前看过的都答上了,说我没答到点子上

2.线程池的singel创建方法,和不用线程池一个一个创建比,有什么好处

3. MVCC解决了幻读没有? 关于这个我记得有一个结论是部分解决,但是的确记不太清楚了。感觉这个问题挺高频了
我的一个笼统的理解是:快照读可以通过mvcc避免幻读;当前读的时候需要配合间隙锁

#快手##面试题目#
全部评论
1.提高存储效率,使用hashcode方法进行提前校验,可以避免每一次对比都调用equals方法,尤其是对于Hashset方法这类可能对于一个新来的数据 要比较N次(假设n个数据),如果使用hash那么定位到位置只需要进行一次比较就行,定位到如果存在hash冲突,那么就调用equals比较 2.重新equals方法后,可能会出现a.equals(b)=ture情况,但是可能之前是两个new的对象,那么这两个hashcode不相等。但是重新之后要遵循如果a.equals(b)=true 那么a.hashcode=b.hashcode,这样子就矛盾了
1 回复 分享
发布于 2020-08-10 19:56
因为相同的对象必须要有相同的hashcode,我面试被问到这么答的,面试官也说不对,不知道哪有问题
点赞 回复 分享
发布于 2020-08-05 23:07
我认为hashcode代表一个类的某些特征,原生的hashcode根据类的地址算出来的,重写了equals就要重写hashcode来满足实际的业务需求。(相同的类hashcode相等)
点赞 回复 分享
发布于 2020-08-07 09:27
我的理解是在hashmap或者hashset中需要使用hashcode()计算哈希值来确定元素存储的位置。只有两个Object哈希值相同,这两个Object的“值”才可能相等。在实际hashmap或hashset中在调用equals()方法的操作也是比较哈希值相同的(也就是在同一个LinkedList或红黑树)的数据。如果你的hashcode()方法都不能保证这两个Object能存到同一个LinkedList或红黑树中,那他们就不可能相等。 综上,所以如果想利用equals()方法判断两个Object相等,必须先重写hashcode()方法。
点赞 回复 分享
发布于 2020-08-07 11:19
Next-key吧
点赞 回复 分享
发布于 2020-08-07 12:30
需要用hashcode定位到equals相同的桶,集合里用到
点赞 回复 分享
发布于 2020-08-24 22:00
问了这么少吗
点赞 回复 分享
发布于 2020-08-24 23:50
m
点赞 回复 分享
发布于 2020-08-24 23:57
mvcc可以解决脏读和不可重复读,幻读是用间隙锁来解决的
点赞 回复 分享
发布于 2020-08-25 00:06
2、线程池算是一种异步处理的方式吧,感觉可以从这个角度考虑,而且将等待处理的线程转换为阻塞队列中的Node,可以节省内存 3、RR中,幻读通过mvcc + 间隙锁来解决,但是仍然存在问题,感觉可结合MySql的可串行化考虑
点赞 回复 分享
发布于 2020-08-25 09:31

相关推荐

11-09 14:54
已编辑
华南农业大学 产品经理
大拿老师:这个简历,连手机号码和照片都没打码,那为什么关键要素求职职位就不写呢? 从上往下看,都没看出自己到底是产品经理的简历,还是电子硬件的简历? 这是一个大问题,当然,更大的问题是实习经历的描述是不对的 不要只是去写实习流程,陈平,怎么去开会?怎么去讨论? 面试问的是你的产品功能点,是怎么设计的?也就是要写项目的亮点,有什么功能?这个功能有什么难处?怎么去解决的? 实习流程大家都一样,没什么优势,也没有提问点,没有提问,你就不得分 另外,你要明确你投的是什么职位,如果投的是产品职位,你的项目经历写的全都是跟产品无关的,那你的简历就没用 你的面试官必然是一个资深的产品经理,他不会去问那些计算机类的编程项目 所以这种四不像的简历,在校招是大忌
点赞 评论 收藏
分享
斑驳不同:还为啥暴躁 假的不骂你骂谁啊
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-21 19:05
点赞 评论 收藏
分享
2 28 评论
分享
牛客网
牛客企业服务