面试题java

本文深入探讨了Java中的核心概念,包括hashTable与HashMap的区别、Overload与Override的不同之处、常见的RuntimeExceptions、Error与Exception的区别、List/Set/Map与Collection的关系以及抽象类与接口的重要差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、hashTable和HashMap的区别

1) hashMap去掉了HashTable 的contains方法,但是加上了containsValue()和containsKey()方法。
2) hashTable同步的,而HashMap是非同步的,效率上逼hashTable要高。
3) hashMap允许空键值,而hashTable不允许。

2、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?


方法的重写Overriding和重载Overloading是Java多态性的不同表现。

重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。

如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。

如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。

3、给我一个你最常见到的runtime exception


ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException<wbr>, CannotRedoException, CannotUndoException,<strong><span style="color:#ff6666">ClassCastException</span></strong>, CMMException, ConcurrentModificationEx<wbr>ception, DOMException, EmptyStackException, IllegalArgumentException<wbr>, IllegalMonitorStateExcep<wbr>tion, IllegalPathStateExceptio<wbr>n, IllegalStateException,<br> ImagingOpException, <strong><span style="color:#ff6666">IndexOutOfBoundsExceptio<wbr>n</wbr></span></strong>, MissingResourceException<wbr>, NegativeArraySizeExcepti<wbr>on, NoSuchElementException,<span style="color:#ff6666"><strong>NullPointerException</strong></span>, ProfileDataException, ProviderException, RasterFORMatException, SecurityException,<strong><span style="color:#ff6666">SystemException</span></strong>, UndeclaredThrowableExcep<wbr>tion, UnmodifiableSetException<wbr>, UnsupportedOperationExce<wbr>ption</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

4、error和exception有什么区别?


error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。


5、List, Set, Map是否继承自Collection接口?
List,Set是

Map不是,Map继承了Object类

6、抽象类和接口的异同点?

定义:

声明方法而不去实现它的类就叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,

但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向

具体子类的一个实例。

接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有

方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该

实现类不能从接口定义中继承行为。

相同点:

  1. 他们都不能生成实例,都有抽象方法
  2. 接口是特殊的抽象类
  3. 接口继承接口和抽象类继承类都使用的关键字是extends

类继承类和接口

public class Apple extends Fruit implements Fruit1, Fruit2{}

接口可以多继承

public interface Fruit1 extends Fruit {}

不同点:

  1. 名字不同, 接口是interface,抽象类是abstract class
  2. 接口里面全部都是抽象 ,接口中的方法默认都是public abstract类型的;抽象类里面可以有抽象方法也可以有其他的方法
  3. 接口的 属性都是静态的,但是抽象类的属性可以是任意的
  4. 抽象类中可以有 构造器,但是接口中除了抽象方法什么都没有
  5. 接口的定义的变量默认是public static final型,且必须给其赋初始值。所以在实现类中不能重新定义,也不能改变其值。而在抽象类中其值可以重新定义也可以重新赋值
  6. 从继承的角度看,接口可以多继承,但是抽象类却不能,它只能继承一个父类,不能继承多个父类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值