阿里巴巴Android客户端面试部分问题及答案

这个是上周五参加阿里第一轮面试的题目。

1.Android序列化的两种方式:

在Android这个Linux系统中,无法将对象的引用传递给Activities或者Fragments,只有将这些对象放到Intent或者Bundle里面,才能进行传递。序列化表示的是将一个对象转换成可存储或可传输的状态,既可以在本地也可以在网络中进行传输。
1)Serializable Java自带,将一个对象转换为二进制文件字节序列。
2)Parcelable Android专用,将一个完整的对象进行分解,分解后的每一部分都是Intent所支持的类型。
使用场景:
       使用内存 Serializable在序列化的时候会产生大量的临时变量,而引起频发的GC,Parcelable比Serializable效率高,所以推荐使用Parcelable.
使用磁盘:
Parcelable在外界持续有变化的情况下,不能很好的保持数据的有效性,尽管Serializable效率低,但是还是建议使用Serializable。
2.Android应用启动黑白屏问题
         当我们在启动一个应用时,系统会去检查是否已经存在这样一个进程,如果没有则系统对应用进行冷启动,系统和APP本身都有很多工作需要做。首先系统的服务会先检查startActivity中的intent的信息,然后再去创建进程,最后才是执行启动Acitivy的操作。黑白屏的问题,就是在这段时间内产生的。 
        系统在绘制页面加载布局之前,首先会初始化窗口(Window),而在进行这步操作时,系统会根据我们设置的Theme来指定它的Theme主题颜色。Window布局的顶层是DecorView,StartingWindow显示一个空DecorView,我们在Style中的设置就决定了显示的是白屏还是黑屏。
解决方法 :
      黑白屏是根据我们设置的Theme来决定了,那我们就可以直接从启动页的Theme入手,我们给启动页设置一个全屏的背景图片,这样就不用显示默认的主题颜色了,这样就能避免白屏问题了。
另附:
    1、冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动。

2、热启动:当启动应用时,后台已有该应用的进程(例:按back键、home键,应用虽然会退出,但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以在已有进程的情况下,这种启动会从已有的进程中来启动应用,这个方式叫热启动。

3.如何收取用户使用APP的ANR信息?
      一般情况下应用无响应的时候回产生一个日志文件,位于/data/anr/文件夹下面,trace文件是Android Davik虚拟机在收到异常终止信号时产生的,最常见的一个触发条件就是Android应用中产生了FC(force close)。我们可以定期将用户trace.txt文件关于本APP的部分收集并发送到服务器。

4.阅读过的开源框架
    说自己用过的即可,要了解原理。
5.使用.so库的坑
    这个是面试官自己在开发时候遇到的一个坑,我并没有遇到这个问题,猜测是否是版本的问题导致的,他给予了肯定的回答。
6.版本控制工具
    我说自己目前所在的公司用的是SVN,不过自己在京东云上搭建过Git服务器。

总结

学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!
最后,祝愿即将跳槽和已经开始求职的大家都能找到一份好的工作,这些面试题分享在我的Android 移动互联网群里,可以来群里下载,群里还有一些行业大牛,群里也会有不定时送书等活动,欢迎前来下载。

领取方式:

文章点赞,然后加入合作Android进阶群:1007478004 管理员处免费领取

猜你喜欢

转载自blog.csdn.net/weixin_44941011/article/details/89476509