Java基础面试题

烟雨 4年前 (2021-08-01) 阅读数 307 #面试
文章标签 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数据结构:数组

image.png

LinkedList数据结构:链表
image.png
ArrayList查询比LinkedList速度快(访问下标)。
LinkedList插入,删除快(不需要移动元素)。
LinkedList需要更多内存。

四、Collection与Collections区别

Collection是Set/List的父接口。
Collections是集合工具类。

五、++操作符石线程安全的吗?

非线程安全的,它涉及到多个指令,如读取变量值,增加,然后存储回内存

六、如何实现序列化,为何要序列化?

实现Serializable接口就行。为了网络传输,网络传输的数据都是二进制数据。
建议使用第三方工具来序列化,Java本身自带的序列化:码流太大,效率低。

七、String s = new String("abc")创建了几个对象?

两个,一个常量池的abc,一个new的堆上的对象。

八、抽象类和接口区别

抽象类针对类的根源是抽象,本质还是个类,接口是对动作/功能的抽象。
一个类只能继承一个抽象类。接口则可以实现很多个。
抽象类的功能远远大于接口,它本身就是个类。

九、如何通过反射调用对象方法?

获取对象的Class,再获取Method对象,通过invoke调用。

image.png

十、重载和重写的区别

重载是表示一个类里面可以有多个方法名相同,参数不同的方法。
重写时表示子类重写父类的一个方法。


版权声明

非特殊说明,本文由Zender原创或收集发布,欢迎转载。

发表评论:

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

作者文章
热门