Java面试题及答案

八股文问题及答案

1、面向对象

面向对象是一种编程思想,他是从面向过程过度而来的,例子:洗衣服任务。
三大特性:封装、继承、多态
封装:把数据与基于数据的操作封装在一起,使其形成一个不可分割的独立个体。减少耦合、提高代码的复用性。
继承:一种类之间的关联关系,子类可以得到父类的非私有的属性和方法。子类可以当作父类来使用。
多态:编译时多态 & 运行时多态
    编译时多态:主要指方法的重载
    运行时多态:指程序中定义的对象引用所指向的具体类型在运行期间才确定
    运行时多态三个条件:继承、重写、向上转型

2、JDK、JRE、JVM之间的区别

JVM:是运行java字节码的虚拟机
JDK:是提供给开发者使用的java开发工具包
JRE:是java的运行环境

3、==和equals方法之间的区别

==的作用:基本类型比较值是否相等,引用类型比较内存地址是否相等
equals的作用:基本类型没有,引用类型比较内存地址是否相等。可重写equals方法

4、hashCode()与equals()之间的关系

在覆盖(重写)equals方法时应当总是覆盖hashCode方法,保证等价的两个对象散列值也相等。

5、final关键字的作用是什么?

用来修饰变量、方法、类。修饰变量则变量在初始化之后不能改变。修饰方法则方法不能被重写。修饰类则类不能被继承。

6、String、StringBuffer、StringBuilder的区别?

执行速度:低、中、高;
线程安全:安全、安全、不安全;
使用场景:少量字符串操作、多线程大量操作、单线程大量操作

7、重载与重写的区别?

重载出现在类中,名称相同的方法,参数列表不同、返回值类型不同。
重写出现在继承中,子类改写父类重名的方法,参数列表不变、返回值类型不变,只更改方法体中的逻辑就是重写。

8、接口和抽象类的区别?

抽象:将项目中某些共性的东西抽离出来。
抽象类是对整个事物的抽象,包括属性和行为。接口是对事物的某一个行为进行抽象。

9、List和Set的区别

List:存储的元素有序、可重复
Set:存储的元素无序、不可重复
Queue:按照特定的排队规则来确认先后顺序,存储的元素有序、可重复
Map:使用键值对存储,key无序、不可重复,value无序、可重复,每个key最多可映射一个value

10、ArrayList和LinkedList区别

都实现了List接口,具有有序不唯一的特点。都是不同步的,线程不安全。
ArrayList实现了长度可变的数组、在内存中分配了连续的空间,底层数据结构是Object数组,LinkedList底层数据结构是双向链表。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值