如若转载请注明出处: 谢谢.
上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大家.
对于这次跳槽找工作, 我准备了挺长的时间, 其中也收集了很多比较好的笔试面试题, 大都是一些常用的基础, 很多都是由于时间原因没有来得及给出答案, 但是题目大都是比较经典实用的, 现在都放到这里, 希望对正处于找工作的博友有一定的帮助.
第一部分: Java基础(此部分面试题题目来自: 答案是搜集与互联网)
(为了方便,我把他们分了类,有一些是必看的,我用!标注,有一些进阶型的我用%标注,有一些需要了解的,我用?标注。)
一:继承、抽象类与接口区别、访问控制(private, public, protected,默认)、多态相关
!1、interface和 abstract class的区别
interface是接口,abstract class是抽象类。
1,语法层次
抽象类中可以拥有任意范围的成员数据,可以定义非抽象方法。而接口中只能拥有静态的不能修改的成员数据,同时所有的方法必须是抽象的。
所以说接口是抽象类的一种特例。
2,跨域不同
a,抽象类是对类的整体进行抽象,包括类的属性和行为。接口是对类的局部(行为)进行抽象。
b,抽象类是is-a,跨域的是具有相似特点的类。接口是like-a,可以跨域不同的类。
例如猫、狗可以抽象一个动物类的抽象类,具备叫的方法。鸟、飞机可以实现Fly接口,具备飞的行为。
3,设计层次
抽象类是自下而上的一种设计思想,而接口是自顶而下的一种设计思想。
抽象类中我们要知道子类才能抽象出父类。而接口不同,它只需要定义一个规则即可。
!2、是否可以继承多个接口,是否可以继承多个抽象类
java可以实现多个接口,对于类是单继承体系结构。
%3、Static Nested Class 和 Inner Class的不同
静态内部类没有了指向外部的引用,可以直接被实例化而不需要依附与外部类的实例化。
非静态内部类保留了指向外部的引用,必须依附于外部类的实例化才能够实例化内部类。
静态嵌套类内部中:内部类不能访问外部类的非静态成员。外部类不能直接访问静态类中的属性,需要通过内部类去访问。
非静态内部类中:内部类可以直接访问外部类的属性成员。外部类不能直接访问静态类中的属性,需要通过内部类去访问。
延伸:使用内部类最吸引人的原因是:每个内部类都能独立地继承一个类,所以无论外围类是否已经继承某个类,对内部类都没有影响。
内部类:成员内部类(直接在外部类中)、局部内部类(内部类在方法或者作用域中)、嵌套内部类(static 修饰的内部类)、匿名内部类
这里需要说明一点:局部内部类和匿名内部类访问局部变量时为和需要加final关键字?
局部变量的生命周期与局部内部类的对象的生命周期的不一致性。例如内部类innerClass在方法f()中,而方法f()中定义局部变量i且被内部类使用。
当方法f()运行结束后,局部变量i就已经死亡不存在了,但局部内部类对象可能还存在(直道没有人再引用该对象才会消亡),这时出现一种情况就是
局部内部类要访问一个已经不存在的局部变量。而当变量被final修饰时,通过final将局部变量"复制"一份,复制品直接作为局部变量中的数据成员。
!4、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
overload重载和override重写是Java多态性的不同表现。
overload是一个类多态性的表现,override是父类与之类多态性的不同表现。
override:子类中定义与父类相同的名称及签名. overload:方法相同方法签名不同。
注意:不能通过访问权限、返回类型、抛出的异常进行重载
!5、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized
static 修饰的方法不能够被重写。
!6、是否可以继承String类
不可以,String是被final修饰的类。
!7、构造器Constructor是否可被override?
构造器不能被继承,所以也不能够被重写。