Android权限处理,终局之战
### **面试题如下(答案太长不方便展开,仅仅展示部分)**
1. Android属性动画实现原理;
2. 补间动画实现原理
3. Android各个版本API的区别
4. Requestlayout,onlayout,onDraw,DrawChild区别与联系
5. invalidate和postInvalidate的区别及使用
6. Activity-Window-View三者的差别
7. 谈谈对Volley的理解
8. 描述一次网络请求的流程
9. HttpUrlConnection 和 okhttp关系
**10.如何优化自定义View**
> 1)在要在onDraw或是onLayout()中去创建对象,因为onDraw()方法可能会被频繁调用,可以在view的构造函数中进行创建对象;
> 2)降低view的刷新频率,尽可能减少不必要的调用invalidate()方法。或是调用带四种参数不同类型的invalidate(),而不是调用无参的方法。无参变量需要刷新整个view,而带参数的方法只需刷新指定部分的view。在onDraw()方法中减少冗余代码。
> 3)使用硬件加速,GPU硬件加速可以带来性能增加。
> 4)状态保存与恢复,如果因内存不足,Activity置于后台被杀重启时,View应尽可能保存自己属性,可以重写onSaveInstanceState和onRestoreInstanceState方法,状态保存。
**11.低版本SDK如何实现高版本api?**
> 使用@TargetApi注解·
> 当代码中有比AndroidManifest中设置的android:minSdkVersion版本更高的方法,此时编译器会提示警告,解决方法是在方法上加上@SuppressLint("NewApi")或者@TargetApi()。但它们仅是屏蔽了android lint错误,在方法中还要判断版本做不同的操作。
> @SuppressLint("NewApi")屏蔽一切新api中才能使用的方法报的android lint错误
> @TargetApi() 只屏蔽某一新api中才能使用的方法报的android lint错误,如@TargetApi(11)如果在方法中用了只有API14才开始有的方法,还是会报错。
### **面试经验总结**
1.一定要谨慎对待写在简历上的东西,一定要对简历上的东西非常熟悉。因为一般情况下,面试官都是会根据你 的简历来问的;
2.能有一个上得了台面的项目也非常重要,这很可能是面试官会大量发问的地方,所以在面试 之前好好回顾一下自己所做的项目;
3.和面试官聊基础知识比如设计模式的使用、多线程的使用等等,可以结合具体的项目场景或者是自己在平时是 如何使用的;
4.建议提前了解一下自己想要面试的公司的价值观,判断一下自己究竟是否适合这个公司。
5.另外,我个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事。所以,劝各位不要因为面试失败而灰心、 丧失斗志。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油!
## 实战系列
话不多说,Android实战系列集合都已经系统分类好,**由于文章篇幅问题没法过多展示,获取学习笔记链接:[点击我的GitHub免费获取](https://github.com/a120464/Android-P7/blob/master/Android%E5%BC%80%E5%8F%91%E4%B8%8D%E4%BC%9A%E8%BF%99%E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)**
![](http://www.icode9.com/i/li/?n=2&i=images/20210701/1625134765399628.jpg)
![](http://www.icode9.com/i/li/?n=2&i=images/20210701/1625134766160356.jpg)