总结
蚂蚁面试比较重视基础,所以Java那些基本功一定要扎实。蚂蚁的工作环境还是挺赞的,因为我面的是稳定性保障部门,还有许多单独的小组,什么三年1班,很有青春的感觉。面试官基本水平都比较高,基本都P7以上,除了基础还问了不少架构设计方面的问题,收获还是挺大的。
经历这次面试我还通过一些渠道发现了需要大厂真实面试主要有:蚂蚁金服、拼多多、阿里云、百度、唯品会、携程、丰巢科技、乐信、软通动力、OPPO、银盛支付、中国平安等初,中级,高级Java面试题集合,附带超详细答案,希望能帮助到大家。
第一、从多态的体现方面:我们使用多态的时候,创建的是父类的引用,开辟的是子类的空间,由于没有开辟父类的空间,所以是父类的引用指向子类对象,并不是真正的父类自己创建了对象,而且父类对象的引用还可以作为函数参数来接收子类对象哦!
第二、多态实现的前提:必须是类与类之间要有关系,要么继承,要么实现,存在覆盖,其实就是有抽象函数。
第三、从多态的好处:大大提高程序的可拓展性
第四、多态的应用:1.父类对象的引用指向子类对象,其实本质上是一个向上转型,就像int转成double一样,儿子穿了一身爸爸的衣服,扮成了爸爸。2.但变成了爸爸之后,只能使用爸爸特有的技能,儿子怎么能够使用自己本身的技能呢?这时候就需要向下转型,脱下伪装,将父类对象的引用强转成子类类型,就可以使用子类特有的技能了。
第五、多态的弊端:提高了拓展性,但是只能使用父类的引用访问父类的成员。
多态的三个用法:
-
1, 对象类型不变,
-
2, 只能对引用调用其引用类型中声明的方法
-
3, 在运行时,会根据对象的实际类型找子类覆盖之后的方法
下面程序可以很好的解释什么是多态:
一个A类,定义了m1和m2方法
A类的子类B类,覆盖了m2(),添加了m3方法
多态就是 可以把B类对象放入A类的引用里面,就是把子类放入父类引用,A a =new B();
通过这个引用a能调用m1和m2方法,不能调用m3方法,因为A类中没有调用m3,
a. m2是会调用B类中的m2,B类中的m2重写了A类中的m2,所以找的就是B类覆盖之后的m2.
为便于理解程序已加详细注释说明:
package d11;
class duot{
public static void main(String[] args) {
/*多态的使用
Animal类,定义了eat()和sleep()方法,
Animal的子类Dog类,覆盖了sleep类,添加了shout()方法
多态就是 可以把(dog类)对象放入(Animal类)的引用里面,
就是把子类放入父类引用,Animal a =new Dog();
通过这个引用a能调用eat()和sleep()方法,不能调用shout()方法,因为Animal类中没有调用shout(),
a.sleep()是会调用dog类中的sleep(),dog类中的sleep()重写了Animal类中的sleep,
所以a.sleep()找的就是dog类覆盖之后的sleep(). */
Animal a =new Dog();
a.eat();//This is a eat()
//a.shout();//不能调用shout方法,会报错,Animal类中没有调用shout方法;
a.sleep();//sleep 3 hours
/*类型转换
子类引用赋值给父类引用,可以直接赋值。
父类引用赋值给子类引用,必须_强制类型转换,
保证编译通过,但是运行时可能发生 类型转换异常。
*/
//(编译时不出错,运行时可能发生类型转换异常)
//这个强制类型转换其实是给编译器看的,使他不理会这个异常,
//因为Animal类中并不一定装的是这个dog对象。只是可能,
//如果换成Animal a =new Cat();则就会编译不报错运行报错类型转换异常
Dog d =(Dog)a;//引用间的赋值;需要强制类型转换,
d.shout();//这时候就能调用shout方法了,
//instanceof关键字
/*Instanceof 是一个二元运算符组成一个布尔表达式;
使用方法: 引用 instanceof 类名
就是判断该引用所指向的对象 和后边的这个类名是否兼容;
可以把instanceof形象的比喻为 是不是 是就是真,不是就是假;
*/ //例:a里面装的是一个狗
System.out.println(a instanceof Dog);//true a是一个狗
System.out.println(a instanceof Cat);//false a不是一个猫
System.out.println(a instanceof Animal);//true a是一个动物
最后
学习视频:
大厂面试真题:
源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**