场景:
在练习
错题
错题1描述:
在Java中,HashMap中是用哪些方法来解决哈希冲突的?
A.开放地址法
B.二次哈希法
C.链地址法
D.建立一个公共溢出区
原因分析:
以上方法都是解决哈希填冲突的策略,但是在java.util.HashMap中,总体来说是使用的链地址法来解决冲突的。
当然了,使用链地址***导致get的效率从o(1)降至o(n),所以在Java8中,使用的是平衡树来解决提高效率的。
答案:C
错题2描述:
面向对象方法的多态性是指()
A.一个类可以派生出多个特殊类
B.一个对象在不同的运行环境中可以有不同的变体
C.针对一消息,不同的对象可以以适合自身的方式加以响应
D.一个对象可以是由多个其他对象组合而成的
原因分析:
选项的确不好理解,《疯狂java讲义》的标准解释是: 相同类型的变量、调用同一个方法时呈现出多种不同的行为特征,这就是多态。
答案:C
错题3描述:
单例模式中,两个基本要点是
A.构造函数私有
B.静态工厂方法
C.以上都不对
D.唯一实例
原因分析:
答案:A D
错题4描述:
下面哪些赋值语句是正确的()
A.long test=012
B.float f=-412
C.int other =(int)true
D.double d=0x12345678
E.byte b=128
原因分析:
A和B中long和float,正常定义需要加l和f,但是long和float属于基本类型,会进行转化,所以不会报出异常。AB正确(小数不加F默认是double类型,double类型不会自动转成float类型,编译是通不过的,但将整数赋予float是可以的。)
boolean类型不能和任何类型进行转换,会报出类型异常错误。所以C错。
D选项可以这样定义,D正确。
E选项中,byte的取值范围是-128—127。报出异常: cannot convert from int to byte.所以E选项错误。
答案:A B D
错题5描述:
下列哪些操作会使线程释放锁资源?
A.sleep()
B.wait()
C.join()
D.yield()
原因分析:
1.sleep会使当前线程睡眠指定时间,不释放锁
2.yield会使当前线程重回到可执行状态,等待cpu的调度,不释放锁
3.wait会使当前线程回到线程池中等待,释放锁,当被其他线程使用notify,notifyAll唤醒时进入可执行状态
4.当前线程调用 某线程.join()时会使当前线程等待某线程执行完毕再结束,底层调用了wait,释放锁
答案:C