2020年Android高级面试题总结(附答案解析)

回顾一下自己这段时间的经历,三月份的时候,疫情原因公司通知了裁员,我匆匆忙忙地出去面了几家,但最终都没有拿到offer,我感觉今年的寒冬有点冷。到五月份,公司开始第二波裁员,我决定主动拿赔偿走人。后续的面试过程我做了一些准备,基本都能走到hr面,后面我也顺利地拿到了offer,我给大家分享下我的求职体会,希望能给大家一些参考。

一般Android面试分为两部分:Java部分和Android部分,下面说一下自己面试过程遇到的一些具体题目和一些相关知识点。

一 Java相关

1.重载函数的签名(区别是否是重载函数)

答:方法名+参数类型+参数顺序(返回值不是)

2.finalize的工作原理

答:一旦垃圾收集器准备好释放对象占用的存储空间,它首先调用finalize(),而且只有在下一次垃圾收集过程中,才会真正回收对象的内存.所以如果使用finalize(),就可以在垃圾收集期间进行一些重要的清除或清扫工作。此外系统进行垃圾回收时并不保证一定会调用它,所以可以说它和对象被回收没有必然关系。

3.一个对象的创建过程

答:例如有一个Dog类:

1.即使没有static,构造器其实也是静态方法,所以当首次创建Dog时或者Dog的静态域或者静态方法被访问的时候,Dog的class对象会被加载。

2.在加载Dog的class的时候可能会发现其有基类,此时先暂停Dog的加载,转而去加载其基类。所以基类的static域比子类先初始化。

3.载入class文件之后,会创建一个该该类的class对象,所有关于静态初始化的动作会被执行,所以静态初始化只在Class对象首次加载时进行一次。

4.当使用new的时候,首先为Dog对象在堆上分配足够内存空间。这块内存控件会被清零,所有实例都被初始化成了默认值,包括基类。

5.执行所有字段定义处的初始化,从基类开始。

6.执行构造器。(在第一行会执行基类的构造器)

4.对象的销毁是按照创建的逆序来进行的。

5.final的方法和类都不允许覆盖和继承。private默认实现了final。

6.简述内部类的特点

7.形式参数可被视为local variable,也就是说形式参数相当于在方法中定义了一个局部变量a,当传入c时,只是将c指向的对象给a

8.finally 语句块是在 try 或者 catch 中的 return 语句之前执行的

9.简述jvm中默认的classLoader与功能

10.switch语句后的控制表达式只能是short、char、int、long整数类型和枚举类型,不能是float,double和boolean类型。String类型是java7开始支持

11.重写的特性

12.!=和==,当用于基本类型时候,是比较值是否相同;当用于引用类型的时候,是比较对象是否相同,比较内存地址

13.null可以被强制类型转换成任意类型的对象,于是通过它来执行静态方法

14.如何终止一个线程

15.静态属性和静态方法是否可以被继承

16.列出各种List,Set,Map,Queue并说出他们的同与不同。

17.列出几种线程池

18.解释一下java内存模型

19.解释一下java代码的原子性

20.解释一下volatile字段

21.解释一下synchronized字段

22.Lock的使用

23.wait()和sleep()区别

24.死锁产生的条件

...

篇幅原因,参考答案均整理到下面这份PDF文档里,需要的朋友点击我的GitHub,前往免费领取!

2020Android 高级面试题总结(附答案解析)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsxgwz.html