微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

聚焦Android面试题一

昨天面试了一家证券公司的Android职位,面对技术面试明显感觉自己表达得不够好,一方面是自己的松懈,另一方面是年后第一场面试有点不够重视,现在对面试中的问题做了一下总结:
1.项目开发中assets与res文件夹有什么区别?
这个问题我一开始就想这不就是读取文件的API不同吗?还有什么特别的吗?有一篇博客解释说res占用apk空间大小,assets不占用,但是通过分析apk包目录发现,两者都占用apk空间大小。

apk包分析


这个问题还是从API或者编译方式来分析两者之间的差异性。

2.SharedPreferences如何进行同步提交和异步提交?
SharePreferce我们经常使用的是commit方法进行提交,但是异步提交确实很少使用到,我们在提交时候发现到了一个非常独特的API,如下:

   SharedPreferences.Editor editor = getSharedPreferences("sp",MODE_PRIVATE).edit();
   //editor.commit();
   editor.apply();

这个apply()方法看似也是提交的意思,看了一下官方SDK说明(查看方式),这个API就是异步提交的方法,但是有一点需要注意就是,这个方法没有返回值,也就是有没有保存成功是不知道的,这个方法的存在是为了解决异步提交的效率问题,commit是等提交后再进行下一步的提交,效率较低。
3.Fragment之间如何进行通讯?
fragment之间通讯方式有很多种

  1. 如果fragment创建有先后,先创建的fragment完全可以持有另一个fragment的引用,这时直接调用该引用的public方法就行了,这种方式一定要考虑到生命周期的因素,避免出现内存泄漏。
  2. 通过第三方eventbus实现通讯,eventbus底层所使用的观察者和反射当然也能实现。
  3. SharedPreferences/文件存储,在保证线程安全的情况下,这种方式通讯都是行得通的。

以上三种是实际开发中最常用的通讯方式。
4.简单描述View绘制过程
View绘制过程简单描述为onMeasure()→onLayout()→onDraw();onMeasure()方法测量视图尺寸,也就是要晓得这个即将绘制的视图长宽多少,onLayout()方法是布局视图,这个方法是在布局上给这个视图腾位置,onDraw()开始绘制。
5.简单描述一下Handler原理
这个东西之前总结过,就不大想再写一遍了

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐