面试题之“区别”

重载overload与重写override的区别

  • 两者都是实现Java多态性的方式,重载是实现对编译的多态,重写是实现运行时的多态。
  • 重写,顾名思义是重新写一遍,是子类对父类方法的重写,其方法名,参数列表,返回类型需要和父类一致。
  • 重载是在一个类中,定义了多个同名的方法,参数列表,返回类型可能不同。

String、StringBuffer、StringBuilder的区别

  • String是字符不可变类,当对象需要改变时,String需要分配新的内存去生成新的String对象,浪费内存空间。
  • StringBuffer和StringBuilder是可变类,每个StringBuffer对象会有缓冲区容量,当字符串大小不超过容量时,不会分配新的容量,并且改变对象时不会生成新的未使用的对象。
  • StringBuffer是多线程操作字符串,他是线程安全的。
    StringBuilder是单线程操作字符串,他是线程不安全的,不能够同步访问,但他的速度比StringBuffer快。

抽象类和接口的区别

  • 抽象类更像是定义一个事物的固有属性,而接口则是定义它的功能。
  • 抽象类关心它是什么,接口关心它能做什么。
  • 抽象类有构造方法,接口没有构造方法。
  • 抽象类是不能够实例化的,接口是特殊的抽象类,所以也不能实例化。
  • 接口中,只包含抽象方法和常量。
  • 抽象类支持单继承,接口支持多继承,一个接口可以继承多个接口,一个类也可以实现多个接口。

同步、异步的区别

  • 同步是所有操作完成后,才返回给用户结果,也就是数据库操作完成后才响应用户;异步是不需要等所有操作完成就响应用户请求。相比来说,异步会使用户体验感好一些,并且更有效率。
  • 如果数据是在线程内共享,必须使用同步获取。
  • 如果程序在对象上调用需要花费很久的方法,并不希望等待方法的返回时,应使用异步编程。

final、finally、finalize的区别

  • final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
  • finally是异常处理语句结构的一部分,表示总是执行。
  • finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的这个方法,可以覆盖这个方法提供的其他资源回收,例如关闭文件等。

get、post的区别

本质上get和post是没有区别的,他们都是HTTP协议发送请求的方法,HTTP的底层时候TCP/IP,所以get和post的底层也是TCP/IP。

  • get请求参数包含在url中,post则是通过requestbody传递参数。
  • get请求参数长度有限制,post没有。
  • get请求只能进行url编码,post支持多种编码方式。
  • get请求不安全,因为其参数直接暴露在url上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值