1、设计模式
2、IPC机制、Binder原理
3、多线程、线程中通讯、Volatile、ThreadLocal
4、四大组件
5、Service的2种启动方式
6、String、StringBuffer、StringBuild
7、静态内部类和内部类
8、mvc、mvp、mvvm mvvm中的DataBinding、LiveData、ViewModel
9、子线程为什么不能更新UI?因为ViewRootImpl绘制的时候会检测当前线程是否是主线程不是则抛出异常
10、Android 性能优化:内存、卡顿、耗电、启动速度
11、Android UI绘制流程、刷新流程
12、Android 帧率的检测
13、Handle机制:sendMessage和post的区别
14、AsycTask原理
15、JetPack一些组件的使用
16、类加载机制、双亲委派模型
17、JVM、JMM、GC
18、OKHttp、RxJava、Retrofit、Dargger2原理
19、自定义View、事件分发机制、ViewGroup的onDraw和View的onDraw
20、项目中遇到的难点、Bug:硬件加速闪退问题(so文件缺失)、内存溢出、Android9.0适配问题、Android5.0之前65535问题
21、App的启动过程
22、锁、锁的升级、读写锁与排它锁、乐观锁和悲观锁、公平锁和非公平锁、可重入锁与非可重入锁
23、死锁的原因,怎么预防死锁:
产生死锁的4个条件
- 互斥使用:即当资源被一个线程使用(占有)时,别的线程不能使用
- 资源不可抢占:资源请求者不能强制从资源占有者手中夺取资源,资源只能由资源占有者主动释放。
- 请求和保持 :即当资源请求者在请求其他的资源的同时保持对原有资源的占有。
- 循环等待:即存在一个等待队列:P1占有P2的资源,P2占有P3的资源,P3占有P1的资源。这样就形成了一个等待环路
死锁的预防
- 加锁顺序:线程按照一定的顺序加锁
- 加锁时限:线程尝试获取锁的时候加上一定的时限,超过时限则放弃对该锁的请求,并释放自己占有的锁
- 死锁检测
24、Android每个版本的特性
26、Android APT的使用
27、TCP与UDP的区别、TCP的三次握手与4次挥手、http与https的区别、http1.0与1.1、1.2的区别
28、AMS、PMS、WMS
29、牛客网各种算法题
网友评论