最后
面试题千万不要死记,一定要自己理解,用自己的方式表达出来,在这里预祝各位成功拿下自己心仪的offer。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
A、接口:接口的地位等同于class,接口中的所有方法都是抽象方法,不能包含具体实现的方法;
B、在接口中,因为全部是抽象方法,因此abstract一般省略;eg: public interface InterfaceTest{ public void outpu();}
C、抽象类可以有具体方法和抽象的方法,接口可以看做一种特殊的抽象类,即全部是抽象方法的抽象类。
D、类可以实现接口,利用implements实现;如果一个类实现了某个接口,那么该类需要实现接口中声明的所有方法,否则这个类必须声明为抽象类。
F、Java是但继承的,一个类只能有一个父类;但是一个类可以实现多个接口,通过“逗号”隔开即可;一个类可以既继承类又同时实现接口,eg: public class MyClass extends MyParent implenments MyInterface,MyInterfacee{ //类的具体内容} ;
G、多态的另一种形式:虽然接口自身不能实例化,但是接口可以被他的实现类实例化 Interface1 a=new InterfaceTest(); //Interface1为接口,InterfaceTest为实现了Interface1的实例。所谓多态:指的是父类的引用类型可以指向子类型的对象,或者接口的引用类型可以指向实现了该接口的类的实例。二者强制类型转换规则一致。
3、static关键字
A、static可以修饰属性、方法、类;当static修饰成员变量(属性)时,类的所有实例共用唯一的一个静态属性,即任意一个实例改变静态属性,其他实例的属性也会随之改变。同时可以通过“类名.成员变量名”的方式类访问,java也推荐这种方式。
B、static修饰静态方法,同样可以通过类名直接调用静态方法。静态方法继承的区别 M m=new N();//M继承于N,且M和N有一个共同的静态方法,此时会输出M的方法;
子类可以继承父类的静态方法,子类不能重写父类的静态方法,子类可以隐藏父类的静态方法;
注意:此时如果是静态方法,对象是谁就调用谁的方法,下文代码中的对象是M,所以输出M。如果调用方法不是静态方法,实例指向谁就调用谁的方法,下文代码中output如果不是静态犯法,就应该输出是N。
class StaticTest{
public static void main(String [] args){
M m=new N();
m.output();//输出M,与非静态方法输出结构不一样;
}
}
class M{
public static void output(){
System.out.println("M");
}
}
class N extends M{
//Override //这里会报错,父类静态方法不能被重写
public static void output(){
System.out.println("N");
}
}
4、final关键字,final可以修饰属性、方法、类。
A、1) final修饰类表示该类是一个终态类,不能被继承;
2)final修饰一个方法时,表示一个方法时终态的方法,该方法不能被重写(override);
3)final修饰一个属性时,表示该属性不能被改写。
4)final修饰一个原生类型时,表示该原生数据类型的值不能发生变化(比如说不能从10变为20);如果final修饰一个引用类型时,表示该引用类型不能再指向其他对象,但是该引用指向的对象的内容是可以发生变化的。
B、final陷进(容易犯的错误):final类型的成员变量,一般来说有两种赋予初值的方式:
1)在声明final类型成员变量时就赋予初值
2)在声明final类的成员变量不赋予初值,但是必须在类的构造函数中赋予初值,否则编译通不过。
public class FinalTest{
final int a;
public FinalTest(){
a=0; //定义第一个构造函数必须赋值,否则编译通不过;
}
public FinalTest(int a){
this.a=a; //定义了第二个构造函数,必须赋值,否则编译通不过
}
}
5、static关键字修饰,静态代码块
A、静态代码块的作用,完成成一些初始化的工作;首先执行静态代码块,再执行构造方法。
B、静态代码块会在class文件加载到JVM中的时候执行,而构造方法会在new的时候才生成;因此先输出“static block”,后续new对象的时候才输出“P constructor”;因静态代码块只会加载到JVM中一次,所以只执行一次。
public class StaticTest{
public static void main(String [] agrs){
P p=new P();
P p2=new P();
}
}
class P{
static{
System.out.println("static block");//先输出,且输出一次
}
public P(){
System.out.println("P constuctor"); //后输出,且输出2次
}
#### 最后
**[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)**
就答题情况而言,第一问100%都可以回答正确,第二问大概只有50%正确率,第三问能回答正确的就不多了,第四问再正确就非常非常少了。其实此题并没有太多刁钻匪夷所思的用法,都是一些可能会遇到的场景,而大多数人但凡有1年到2年的工作经验都应该完全正确才对。
只能说有一些人太急躁太轻视了,希望大家通过此文了解js一些特性。
并祝愿大家在新的一年找工作面试中胆大心细,发挥出最好的水平,找到一份理想的工作。
常非常少了。其实此题并没有太多刁钻匪夷所思的用法,都是一些可能会遇到的场景,而大多数人但凡有1年到2年的工作经验都应该完全正确才对。
只能说有一些人太急躁太轻视了,希望大家通过此文了解js一些特性。
并祝愿大家在新的一年找工作面试中胆大心细,发挥出最好的水平,找到一份理想的工作。