结合个人经历,记录下常见安卓面试题:
1、是否阅读过glide源码,glide有多少级缓存,说下glide加载图片流程。
2、讲述下mvvm架构、mvp架构
3、rxjava有哪些常用方法,如何并行执行任务?
4、handler原理,为何一个线程最多只有一个looper。子线程如何启动消息循环?
5、页面如何显示出来的?比如一个activity从setContentView开始,一直到页面显示出来,执行了哪些流程? 哪个方法调用后可以看到页面?
6、HashMap原理,HashMap是如何实现查找的,该算法时间复杂度是多少?
7、知道哪些线程安全集合?
8、了解安卓组件化开发吗?如何实现组件化开发?组件间如何通信?
9、协程是怎么实现的
10、如何实现一个线程池,参数都是什么意思?如果线程池中线程数达到最大值,继续有任务加入,线程池会怎样?
11、说下Android类加载机制
12、了解安卓插件化开发吗?宿主如何加载插件apk中的类?宿主如何访问插件apk中的资源。
13、是否做过flutter开发?
14、安卓各版本有啥差异
15、Java和c++有哪些区别
16、https证书校验过程
17、多个进程访问同一个资源文件,如何同步?
18、apk打包流程,签名校验流程
19、Android事件分发机制
20、详述下AMS
21、如何自定义控件,onMeasure方法用到的几种测量方法都是什么意思?
22、udp协议和tcp协议区别是什么
23、TS的异步方法是在子线程执行吗?
24、是否用过jni,如何用?
25、说下对称加密和非对称加密算法
26、如何性能优化,有什么经验,用的什么工具?
27、详述TCP协议3次握手、4次挥手的过程
28、怎样判断一个点在一个封闭图形内部?
29、LRUCache缓存实现原理
30、熟悉哪些设计模式?讲讲
31、okhttp怎么用,有哪些常用方法?过滤器能实现哪些功能?
32、从点击app图标开始,讲述应用启动流程。
33、安卓跨进程通信方式有哪些?aidl跨进程通信原理是什么?
34、广播有优先级吗?广播接收器可以终止广播传播吗?
35、IntentServie如何使用,任务在哪个线程执行的?
36、了解数据库锁吗?如何使用?乐观锁、悲观锁都是什么意思?
37、了解git哪些命令?git命令中rebase是什么意思?
38、怎样防止应用崩溃退出?无论如何都不能让应用崩溃退出,如何实现?
39、bindService和startService有什么不同?分别说下service生命周期。
40、activity启动模式有哪些,请详细说明差异和使用场景。
41、个人亮点,解决过什么疑难问题,如何解决的
42、某一项工作,比如开发一个音乐播放器,任务如何给组员拆解安排?
43、ANR问题如何解决?
44、如何实现消息推送?
45、如何实现即时通讯?
46、ThreadLocal原理,如何实现变量的线程隔离的?
47、java volatile关键字是什么意思,怎么用?
48、线程同步方法有哪些?怎样防止线程死锁?