JAVA真实企业面试题

本人 小渣一枚,从事Java开发时间不长,以下提到的问题仅代表个人意见,有哪些不合理的地方还望大神们指出,谢谢


好了,言归正传:

面试作为企业选拔人才的唯一标准,那么每家企业都有各自选才的标准,但是技术(Java)这方面还是百变不离其宗,基础成了所有面试官喜欢拿来考察面试者初步慎选的唯一标准,

所以基础各方面一定要扎实,牢固

下面是一些企业经常会问到的基础题:大家可以借鉴一下。(原创,全部本人个人理解,非网站抄来)


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

Overload(重载):发生在同一个类中,表示在同一个类中可以有多个同名的方法,但这些方法的参数列表各不相同(即参数个数和参数类型不同)。

Override(重写、覆盖):发生在子类和父类之间,表示子类中的方法可以与父类中的某个方法的名称和参数完全相同。通过子类创建的实例对象调用方法时,将调用子类中定义的方法,把父类中定义的方法给覆盖了(面向对象多态的一种体现,经常笔试的前几个选择题或者简答题常考到 )。

最熟悉的覆盖就是对接口方法的实现,在接口中一般只是进行了声明,实现的时候需要实现接口中声明的所有方法,在继承中也可能会在子类中覆盖父类中的方法。

子类覆盖父类的方法时需注意:

1.子类抛出的异常只能比父类少,或者是抛出父类异常的子异常。(原因:子类可以解决父类的一些问题,不能比父类有更多的问题)。

2.子类方法的访问权限只能比父类更大,不能更小,如父类是private,子类则不存在覆盖的限制,相当于子类增加了一个全新的方法。

Overloaded的方法是否可以改变返回值的类型?

1.如果几个Overloaded方法的参数列表不一样,返回值的类型可以不一样。

2.如果两个方法的参数列表完全一样,不可以。(这里可以用反证法证明)

(因为有时候我们调用一个方式时也可以不定义返回结果变量,即不用关心返回结果,

例如,我们调用map.remove(key)方法时,虽然remove有返回值,但我们通常不会定义接收返回结果的变量,这时候假设该类中有两个名称和参数列表完全相同的方法,仅仅是返回值不同,Java就无法确定到底该调用哪个方法,因为它无法通过返回结果类型来判断。)


重载需要注意的几点:

1.在使用重载时只能通过不同的参数样式(不同的参数类型,个数,顺序,同一参数类型必须不一样)。

2.不能通过访问权限返回类型抛出的异常进行重载。

3.方法的异常类型和数目不会对重载造成影响。

4.对于继承来说,如果某一方法在父类中的访问权限是private,那么子类就不能对其进行重载,如果定义了的话,只是定义了一个新方法,不会达到重载的效果。


2.String和StringBuffer区别

String和StringBuffer都可以操作字符串,String有equals方法,StringBuffer没有。

String提供数值不可改变的字符串,StringBuffer提供的字符串是可变的,可以用来动态构造字符数据。


3.HashMap和HashTable区别


4.final,finally,finalize区别


5.Java如何进行异常处理,关键字:throw,throws,try catch finally分别代表声明意思?在try块中可以抛出异常吗?


6.error和Exception有什么区别?


7.forward和redirect区别?


8.Collection和Collections区别?


9.int和integer区别?


10.ArrayList和LinkedList区别?


11.Hibernate和ibatis区别?


12.abstract class 和 interface区别?

13.


你可能感兴趣的:(JAVA真实企业面试题)