Java面试题:一些高频易混淆的名词解释

throws&throw

  1. throws出现在方法头,throw出现在方法体

  2. throws表示出现异常的一种可能性,并不一定会发生异常;throw则是抛出了异常,执行throw一定抛出了某种异常

  3. 两者都是消极的异常处理方式,只是抛出或可能抛出异常

重写/重载

重载和重写都是多态的一种体现方式

重载是编译期间的活动,重写是运行期间的活动

重载是在一个类中定义相同名字的方法,方法的参数列表或者类型要互不相同,但是返回值类型不作为是否重载的标准,可以修改可见性。

重写要求子类重写父类的方法;返回值为基本类型时必须相同,返回值为引用类型时,要小于等于父类。 同理,子类抛出的异常也要小于等于父类;

子类重写方法的修饰词要大于等于父类

重载和重写都是多态的一种体现方式

重载是编译期间的活动,重写是运行期间的活动

重载是在一个类中定义相同名字的方法,方法的参数列表或者类型要互不相同,但是返回值类型不作为是否重载的标准,可以修改可见性。

重写要求子类重写父类的方法;返回值为基本类型时必须相同,返回值为引用类型时,要小于等于父类。 同理,子类抛出的异常也要小于等于父类;

子类重写方法的修饰词要大于等于父类

两小、一大、一同原则

Synchronized/volatile

  • volatile:关键字是线程同步的轻量级实现,所有其性能比synchronized关键字要好,但是volatile关键字只能用于变量而synchronized关键字可以修饰方法以及代码块。synchronized在JavaSE1.6之后进行了主要包括为减少获得锁和释放锁带来的性能消耗而引入偏向锁和轻量级锁以及它各种优化后执行效率有显著提高。

  • 多线程访问volatile关键字不会发生阻塞,而Synchronized关键字可能发生阻塞

  • volatile关键字能保证数据的可见性,但不能保证数据的原子性。 synchronized关键字两者都能保证。

  • volatile关键字主要用于解决变量在多个线程之间的可见性,而Synchronized关键字解决的是多个线程之间的访问

new 操作符 clone()方法 复制对象

new操作符本身是分配内存空间,执行到new操作符首先看操作符的类型,然后分配对应的内存。内存分配完后再调用构造函数填充对象各个域(对象的初始化)至此一个对象创建完毕,可以将它的地址发布到外部。

clone在第一步和new相似,都是分配内存。调用clone()方法时,分配的内存和源对象相同,然后再使用源对象中对应的各个域填充新对象的域,填充完成后clone返回一个新的对象被创建,

复制引用/复制对象

Person p = new Person(23, "zhang");
Person p1 = (Person) p.clone()

Servlet的体系结构

 

  1. GenericServlet是个抽象类,必须给出子类才能实例化。它给 出了设计servlet的一些骨架,定义了servlet生命周期,还有一些得到名字、配置、初始化参数的方法,其设计的是和应用层协议无关的,也就是说 你有可能用非http协议实现它。

  2. HttpServlet是GenericServlet的子类, 具有GenericServlet的一切特性,还添加了doGet, doPost, doDelete, doPut, doTrace等方法对应处理http协议里的命令的请求响应过程。

  3. ServletConfig接口定义了在Servlet初始化的过程中由Servlet容器传递给Servlet得配置信息对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值