Java基础面试题

本文详细介绍了Java基础面试中常见的问题,包括接口与抽象类的异同、重载与重写的区别、StringBuffer与StringBuilder的性能对比、常用排序算法、单例设计模式、异常处理、线程与进程的区别、多线程实现方式、集合框架的区别以及内存管理和异常类型等,旨在帮助求职者准备Java面试。
摘要由CSDN通过智能技术生成

Java基础面试题   

1.接口和抽象类的异同点

相同:
  1.都不可以创建对象
  2.都可以定义抽象方法,并且一定要在子类中重写

不同:
  1.定义时关键字不同interface(接口),abstract(抽象类)
  2.抽象类中既可以有抽象方法,也可以有普通方法
  3.接口中的所有方法都是抽象方法
  4.抽象类的方法可以是任意权限,接口中的方法只能是public
  5.抽象类只能单继承,接口可以多实现

2.重载(overload)和重写(overwrite)的区别

重写的规则:

子类和父类,子类重写了父类的方法

  1.方法名,参数列表必须和父类完全一致
  2.返回值类型要么相同,要么子类方法的返回值类型是父类方法返回值类型的子类
  3.访问修饰符要么相同,要么子类访问修饰符范围大于父类
  4.方法中抛出的异常,要么相同,要么子类方法抛出的异常比父类被重写方法抛出的异常更小或相同

重载的规则(两同一不同)
  1.同一个类中
  2.方法名相同
  3.参数列表不同(个数,类型,顺序)
  4.和返回值无关

3.StringBuffer 和 StringBuilder 和 String的区别

  String字符串常量不可变,使用字符串拼接时,会开辟新的空间

  StringBuffer字符串变量可变,线程安全,字符串拼接直接在字符串后追加

  StringBuilder字符串变量可变,线程不安全,字符串拼接直接在字符串后追加

  1.执行效率: StringBuilder > StringBuffer > String
  2.性能:String是一个常量,是不可变的,所以对于每一次+=赋值,都会创建一个新对象,StringBuilder 和 StringBuffer都是可变的,字符串拼接时调用append方法,在字符串后追加,所以性能较高
  3.线程安全:StringBuffer线程安全 StringBuilder线程不安全
  4.对于大量的字符串拼接,使用StringBuffer 和 StringBuilder

4.冒泡排序
for (int i = 0; i < arr.length - 1; i++) {
   
	for (int j = 0; j < arr.length - 1 - i; j++) {
   
		if (arr[j] > arr[j + 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值