2021Android 大厂面试真题,面试必知必会
1、作用
Serializable 的作用是为了保存对象的属性到本地文件、数据库、网络流、rmi 以方便数据传输,当然这种传输可以是程序内的也可以是两个程序间的。而 Android 的 Parcelable 的设计初衷是因为 Serializable 效率过慢,为了在程序内不同组件间以及不同 Android 程序间(AIDL)高效的传输数据而设计,这些数据仅在内存中存在,Parcelable 是通过 IBinder 通信的消息的载体。
从上面的设计上我们就可以看出优劣了。
2、效率及选择
Parcelable 的性能比 Serializable 好,在内存开销方面较小,所以在内存间数据传输时推荐使用 Parcelable,如 activity 间传输数据,而 Serializable 可将数据持久化方便保存,所以在需要保存或网络传输数据时选择 Serializable,因为 android 不同版本 Parcelable 可能不同,所以不推荐使用 Parcelable 进行数据持久化。
3、编程实现
对于 Serializable,类只需要实现 Serializable 接口,并提供一个序列化版本 id(serialVersionUID)即可。而 Parcelable 则需要实现 writeToParcel、describeContents 函数以及静态的 CREATOR 变量,实际上就是将如何打包和解包的工作自己来定义,而序列化的这些操作完全由底层实现。
学习福利
【Android 详细知识点思维脑图(技能树)】
其实 Android 开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。
虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。
这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司 19 年的面试题。把技术点整理成了视频和 PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。
由于篇幅有限,这里以图片的形式给大家展示一小部分。
网上学习 Android 的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
评论