关于一个“变态”面试题的疑问

malligator 2007-07-11 09:42:18
有一个流传的变态级的JAVA程序员面试32问,我见过几次。
其中有一个问题是这样的:

两个对象值相同(x.equals(y)==true),但却可有不同的hashcode,这句话对不对?
我以为这句话是对的;但是,看到几处给出的答案都是:

不对,有相同的hashcode.

难道我理解错了题目的意思。
我是这样想的:
自定义的一个类可以重载equals和hashCode方法,我可以在equals方法里任何情况都返回true,但hashCode里用当前时间的毫秒数作为返回值:这样,很明显的,对大多数的对象x.equals(y)==true但x.hashCode() != y.hashCode().

当然,这样的重载是很有问题很不符合设计思想也没有什么实际用处的。但题目说的只是可能,难道不是么?
...全文
525 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
sleep_ok 2007-07-17
  • 打赏
  • 举报
回复
赫赫, 是可以做到的,但是不推荐这样做

public class TestHashcode {

private int hashcode = -1;
private int flag = 0;

public int hashCode() {
return hashcode;
}

public boolean equals(Object obj) {
if (obj instanceof TestHashcode && flag == ((TestHashcode)obj).flag) {
return true;
}
return false;
}

public TestHashcode(int hashcode, int flag) {
super();
this.hashcode = hashcode;
this.flag = flag;
}

public static void main(String[] args) {
TestHashcode t1 = new TestHashcode (1, 1);
TestHashcode t2 = new TestHashcode (2, 1);
System.out.println("Hashcode of t1 is " + t1.hashCode());
System.out.println("Hashcode of t2 is " + t2.hashCode());
System.out.println("t1.equal(t2) is " + String.valueOf(t1.equals(t2)));
}
}
Blueion 2007-07-17
  • 打赏
  • 举报
回复
Note that it is generally necessary to override the hashCode method whenever this method is overridden, so as to maintain the general contract for the hashCode method, which states that equal objects must have equal hash codes.
-------------------------------------------------------------------------------
这个是JDk 5.0的Object的equals方法说明的最后一句话,很明显重载这两个方法是有条件的,我当然可以随便重载,但是肯定不符合jdk规范,楼主相当于修改了jdk。这个题目本身也是没事找事
malligator 2007-07-17
  • 打赏
  • 举报
回复
S~
malligator 2007-07-14
  • 打赏
  • 举报
回复
没有不同意见?
xiaoyuandy 2007-07-14
  • 打赏
  • 举报
回复
Ding!
malligator 2007-07-11
  • 打赏
  • 举报
回复
变态我觉得谈不上,只是有些是比较细节的,没注意的可能就回答不上来。
我觉得有一些还是要了解一下的

面试也就这样了,问问概念;问算法的更少吧,笔试能稍有涉及...
最关键的理解能力动手实践能力只有在工作中能体现出来:但是,公司能给这样的机会么,对所有的应聘者?
yonglr899 2007-07-11
  • 打赏
  • 举报
回复
楼主,你的想法是对的,支持你!
like_wolf 2007-07-11
  • 打赏
  • 举报
回复
现在面试他妈的都一样。那些面试的人把我们当猴耍,我面试的时候,也一样。问的那问题怪的很,可能永远也不会用到那。面试完了,人家说还可以,只是有些知识掌握的不是很好。所以工资给的不是很高。我想算了,先干吧。谁知道他妈的,进来后问他面试我时,我没回答上来的几个问题时,他说了半天也说不出来。原来他也不会。就是这么贱!!!
gongyali2005 2007-07-11
  • 打赏
  • 举报
回复
哎!.我还以为是多态呢!
joejoe1991 2007-07-11
  • 打赏
  • 举报
回复
我也认为对
malligator 2007-07-11
  • 打赏
  • 举报
回复
给出其中的一个链接,有兴趣的可以看一下
http://www.toidy.cn/gjbc/java/java49.html

链接中此问题为29

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧