Java基础面试题
一、sleep()和wait()区别
1、sleep()是线程中的方法,wait()是Object中的方法。
2、sleep()不会释放锁,wait()方法会释放锁。
3、sleep()不依赖于synchronized关键字,wait()依赖于synchronized关键字。
4、sleep()不需要被唤醒(休眠只会退出阻塞),wait()方法调用后需要被唤醒(不指定时机需要被其他线程唤醒)。
二、hashCode()和equals()
简单来说hashCode就像一个签名,当2个对象hashCode相等,他们可能一样,相反hashCode不相等,肯定不一样。
相当于hashCode()可以先大范围的查找,再通过equals()比较。从而减少equals()比较次数,提高效率。
三、ArrayList与LinkedList区别
ArrayList数据结构:数组
LinkedList数据结构:链表
四、Collection与Collections区别
Collection是Set/List的父接口。
Collections是集合工具类。
五、++操作符石线程安全的吗?
非线程安全的,它涉及到多个指令,如读取变量值,增加,然后存储回内存
六、如何实现序列化,为何要序列化?
实现Serializable接口就行。为了网络传输,网络传输的数据都是二进制数据。
建议使用第三方工具来序列化,Java本身自带的序列化:码流太大,效率低。
七、String s = new String("abc")创建了几个对象?
两个,一个常量池的abc,一个new的堆上的对象。
八、抽象类和接口区别
抽象类针对类的根源是抽象,本质还是个类,接口是对动作/功能的抽象。
一个类只能继承一个抽象类。接口则可以实现很多个。
抽象类的功能远远大于接口,它本身就是个类。
九、如何通过反射调用对象方法?
获取对象的Class,再获取Method对象,通过invoke调用。
十、重载和重写的区别
重载是表示一个类里面可以有多个方法名相同,参数不同的方法。
重写时表示子类重写父类的一个方法。
版权声明
非特殊说明,本文由Zender原创或收集发布,欢迎转载。
上一篇:HashMap面试相关[数据结构、扩容机制、算法优化] 下一篇:JVM与多线程面试
ZENDER



发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。