某次电话面试后的几个问题总结

前几天参加了笔试之后接到了面试电话,询问了几个Java相关的基础问题,其中印象深点的问题有以下几个:

 

1.简述一下什么是MVC?

答:MVC即model-view-controller,M指数据模型,V指视图,C指的是控制器,它使程序的输入、处理以及输出分离开来,增强了程序的可移植性。

 

2.简述一下String与StringBuffer的区别。

答:实际上还有一个叫做StringBuilder的东西。在执行速度上面来看,StringBuilder>StringBuffer>String。其中,StringBuilder以及StringBuffer是字符串变量,而String是字符串常量。这里可能有疑问,String类型怎么会是常量呢?例如,String str  = asd;str = str + "f";结果为:asdf,String类型的str明明是可以改变的量。然而实际上这里JVM对此的操作是:先创建一个String类型变量赋值为asd,然后再创建一个String类型的str,然后再加上f,原来的str已被JVM的垃圾回收机制回收了,变为了新创建的str,其值为asdf,因此String类型的变量操作实际上是在不断地新建对象,因此执行效率会比较低。而StringBuffer以及StringBuilder为字符串变量,它们的操作均在同一个对象上进行,不会新建对象,因此效率更高。

扩展:StringBuffer以及StringBuilder的区别在于StringBuffer是线程安全的,而StringBuilder是非线程安全的。

三者使用总结:

1.String:数据量很少时使用;

2.StringBuffer:多线程且数据量不小使使用;

3.StringBuilder:单线程且数据量不小时使用。

 

3.简述一下重写与重载的区别。

答:重写是指子类的方法与父类方法重名时(参数类型、参数个数均一样),子类对父类方法的重新实现,子类调用这个方法名时调用的是子类的方法,而父类的同名方法则被隐藏了起来(若想调用父类的此方法,可以使用super关键字进行调用)。

重载则是完全不同的概念,重载是指在同一个类中,可能有多个同名的方法,而这些方法在参数上有区别,因此为不同的方法,类调用这些方法时,将根据所给的实参来自动判断调用哪个方法,最典型的例子就是构造方法的重载,一个类可以有多个构造方法,有默认的无参构造方法,也有自定义的带参构造方法。

 

4.简述一下抽象类与接口类的区别。

答:抽象类中必须包含抽象方法,但也可以含有非抽象的方法,抽象类中可以含有常量也可以含有变量,而接口中只含有抽象方法,不可以含有非抽象方法,只能含有常量(一般为静态常量),不可含有变量。其中抽象类不可以用于创建对象,因为其中的抽象方法没有具体的实现,只能由子类继承后来创建对象,并对抽象方法给出具体的实现,而接口可以被多个类来实现(在访问权限允许的情况下)。

 

这次面试的感觉大概就这么多吧,望以后深入钻研学习,学海无涯,不要停下学习的脚步。

你可能感兴趣的:(某次电话面试后的几个问题总结)