java基础面试题一

文章目录

java基础面试题一

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

Overload 是重载,Override 是重写。很基础的知识点必会。

Overloaded 的方法的参数列表不一样,它们的返回类型不一定不一样。

如果两个方法的参数列表完全一样,是否可以让它们的返回值不同来实现重载Overload? 这是不行的。

Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?它们有何区别

set元素是不能重复的,可以用equals()来判断!

第二个问题:主要看你对==equals的了解。

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

这种题就需要背了,没啥可理解的。常写代码谁能记住,我反正是记不住。就跟你手写代码一样,不是一般人那。

空指针异常 NullPointerException
数组越界异常 IndexOutOfBoundsException
类转换异常 ClassCaseException
向数组中存放与声明类型不兼容对象异常 ArrayStoreException
Io操作异常 BufferOverFlowException

error 和 exception 有什么区别

Exception 和 Error 都是继承了 Throwable 类,在 Java 中只有 Throwable 类型得实例才可以被抛出 throw 捕获 try-catch 。

Exception 是程序中正常运行中,可以预料的异常情况,可以被捕获,进行处理的异常。

Error 程序导致程序处于非正常的不可恢复状态。不便于捕获。

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

List 与 Set 继承 Collection 接口;Map 没有继承自 Collection 接口;

abstract class 和 interface 有什么区别?

abstract class 和 interface 都不能实例化。

abstract class 拥有自己的成员变量,interface 默认 static final 修饰

abstract class 方法可以私有化,非抽象方法,必须实现;interface 不能有私有的,默认是 public abstract

实现方式不同:abstract class 需要 extends,interface 要用 implement

abstract 的 method 是否可同时是static?是否可同时是native?是否可同时是synchronized?

abstract 的方法可以同时是 static !

abstract 的方法不能同时是native的!

native本身就和abstract冲突,他们都是方法的声明,只是一个把方法实现移交给子类,另一个是移交给本地操作系统。如果同时出现,就相当于既把实现移交给子类,又把实现移交给本地操作系统,那到底谁来实现具体方法呢!

abstract 的 方法可同时是 synchronized

接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实体类(concrete class)

接口: 接口是一种约束形式,其中只包括成员定义,不包含成员的实现内容。

接口可以继承(extends)接口。

抽象类可以实现(implements)接口。

抽象类可继承(extends)实体类,(但前提是实体类必须有明确的构造函数)。

构造器 Constructor 是否可被重写(Override)

构造器Constructor不能被继承,因此不能被重写(Override),在本类当中可以被重载(Overload)

如果父类自定义了有参构造函数,则子类无论定义无参,有参构造函数,都会报错。正确的做法是在子类的构造方法中添上super(参数),以表明子类构造之前先构造父类,而这句话必须放在第一句,否则报"Constructor call must be the first statement in a constructor"的错误。

是否可以继承 String 类?

不能继承 String 类

原因是 String 类 被 final 修饰的

try{} 里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在 return前还是后

Try{}里有一个return语句,那么紧跟在这个try后面的finally{}里的code会执行的。

finally 语句总会执行,除非遇到一些特殊情况,如System.exit(0)

return语句并不一定就是结束一段程序,当它和finally一起使用但finally语句中无return时会先等finally语句执行完成后再返回值。

当finally语句中有return语句时会直接返回finally中return的语句

用最有效率的方法算出2乘以8等於几

2 <<3

System.out.println(2 << 3);		//16	2*2^3
System.out.println(1 << 2);		//4		1*2^2

两个对象值相同(x.equals(y)== true),但却可有不同的hash code,这句话对不对

不对,如果两个对象x 和 y 满足 x.equals(y) == true,它们的哈希码(hashCode)应当相同。

当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递

我先不思考题,首先 java 就属于值传递

swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上

switch和case语句的参数是int、short、char或者byte。

注意,对于精度比int大的类型,比如long、float、double,不会自动转换为int,如果想使用,就必须强转为int,如(int)float。

​ jdk1.7后,整型,枚举类型,boolean,字符串都可以。jdk1.7并没有新的指令俩处理switch String,而是通过调用switch中的String.hashCode,将String转为int从而进行判断。

参考博客:

上一篇:Invalid default: public abstract java.lang.Classorg.mybatis.spring.annotation .MapperScan.factoryBea


下一篇:abstract(抽象)修饰符,可以修饰类和方法