结合项目问一些问题,主要考察对项目掌握和深入理解的程度,以及沟通表达能力,是否能调理清晰的表达出项目的情况;
handler原理源码级别的理解,可以参考http://blog.csdn.net/Zone_yan/article/details/79078033;
线程池常用的几种类型;
设计模式,单例,工厂,观察者模式等常用的就行,不会问太多;
开发框架mvc,mvp,mvvm等,mvp最为常用,需要深入理解;
事件的传递分发机制,点击动作开始从Activity一直到view之间的传递过程,可以参考http://blog.csdn.net/Zone_yan/article/details/79098876;
自定义View时几个重要的方法,需要了解自定义ViewGroup和view的区别,主要是有哪些方法是ViewGroup有而View没有的,
自己仿照一些带有动画的自定义View,比如使用贝塞尔曲线的自定义动画控件,就可以基本掌握;
开源框架的使用和分析,比如okhttp,对于其拦截器,网络缓存,okhttp的I/O读写等关键点需要有一定了解,
当然对于开源开发框架比如Rxjava/RxAndroid,Rxtrofit,EventBus以及特定开源工具比如图片加载框架Glide、Picasso等有所了解更好;
内存优化,造成内存泄露的情况,比如不规范使用流,Cursor,bitmap,非静态内部类等等,
针对bitmap加载图片为什么会造成内存泄露,以及如何避免加载时出现内存泄露和溢出可能会针对问一下;
进程间通信binder机制的理解,可以参考http://blog.csdn.net/Zone_yan/article/details/79149686;
java中锁的概念,在问多线程开发时的线程同步会涉及到锁,包括synchronized,Lock,这里面有一个可重入锁的概念,需要了解一下,
还有一些线程安全的集合比如ConcurrentHashmap,还有一个关键字是voliate修饰变量后的变化,对于它是否有原子性需要了解;
数据方面ArrayList和LinkedList原理的区别,各自的优缺点,hashmap的原理,
关于队列和栈的原理需要了解,比如通过两个栈怎么实现队列的效果,最好能用代码大概写出来,比如二叉树的深度遍历和广度遍历要有了解;
算法二分查找,冒泡排序,快速排序等基本的要掌握扎实,最好自己手写一遍,这个不是了解原理就能100%的写出来,里面有很多小细节需要注意;
还有一些插件化,热修复,reactNative,H5和android的交互等等最好了解
以上的链接中参考内容虽然不深入,但感觉应付面试足以。