1.handler
1.handelr机制
2.子线程创建handler需要注意启动looper
3.handlerThread的原理:在run方法中创建了一个looper
4.handler导致内存泄漏的原因
5.handler.postDelay的实现原理
6.messagequeue阻塞与唤醒的实现原理
7.messagequeue数据结构是什么
8.一个线程为什么只有一个looper
9.looper怎么区分message的目标handler是哪个
10.looper为什么没有阻塞主线程
11. ThreadLocal原理
参考文章:
2.intentService
1.intentService为什么能够执行耗时操作?
答:IntentService中的onCreat方法中创建了handlerThread,
利用handlerTread中的looper创建了ServiceHandler,
而ServiceHandler中的handleMessage中调用的是IntentService中的onHandlerIntent方法,所以可以在handleIntent中进行耗时操作2.IntentService为什么只能用StartService来开启服务?
答:因为传递的intent最后都会封装成message最后由serviceHandler发送到子线程的消息队列,而serviceHandler发送的过程是在onStartCommand中完成的,所以要想走到onStartCommand生命周期只能使用startService
3.service
1.startService的生命周期?
答:onCreate->onStartCommand->ondestry
2.重复调用startService会走哪些方法?
答:会重复走onStartCommand方法
3.binderService的生命周期?
答:onCreat->onBind->onUnbind->ondestry
4.重复调用unbindService会走那些方法?
答:服务绑定后不会重复绑定
5.混合绑定先startService再bindService的生命周期?
答:onCreat->onStartCommand->onBind->onUnbind->onDestry
注意先解绑unbindService在stopService
4.广播
1.广播有几种,区别是什么?
答:有序广播:可以被拦截和修改
无序广播:不可以被拦截2.广播注册有几种区别是什么?
答:动态注册:代码注册,组件结束广播就结束,组件移除前先移除广播,避免发生内存泄漏
静态注册:清单文件注册,常驻系统,不受组件的生命周期影响,但是耗电占内存3.广播的原理?
答:集成BroadCast重写onRecive方法,通过bindler向AMS注册广播,通过bindler向AMS来发送广播,AMS通过intentFelter找到合适的BroadCastReciver,把消息发送到对应的BroadCastReciver的消息队列中,回调onRecive方法
5.contentProvider,ContentReciver,ContentObserve
1.广播发送原理
6.fragment
1.fragement的理解?
2.fragement和activity的数据交互?
3.fragement的生命周期?
4.fragement重复添加?
6.Activity
1.Activity的生命周期
2.Acitivty的启动过程
3.Activity的启动模式,A跳转B,B返回A
4.主线程为什么不用创建looper
7.intent
1.intent传递数据有大小限制吗,为什么是1M?
9.事件等的传递机制
1.事件冲突解决?
10.view的绘制
1.view的绘制流程?
2.requestLayout的原理?
3.invalidat和postInvalidat的区别?
4.measureSpeace是什么,有几种模式,由什么组成的?
4.自定义view?
答:1.自定义组合view
2.自定义继承view
3.自定义绘制view5.RelativeLayout和LinearLayout性能分析
Android中RelativeLayout和LinearLayout性能分析
6.动画的分类
11.Apk的打包流程?
12.Apk的安装流程?
13.activity的启动流程?
14.Binder的原理?
15.内存泄漏?
1.handler导致内存泄漏
2.线程内部类导致
3.资源未释放
4.静态变量和单例模式导致内存泄漏,主要是持有content引用
5.leakCanary的原理
16.Android几种进程
前台进程
可见进程
服务进程
后台进程
空进程
17.SharedPreference
1.SharedPreference的原理?
2.SharedPreference使用注意事项?
18.进程包活的思路
19.序列化
Serializable和Parceable的区别?
Serializable和Parceable的原理?
20.Bitmap
Bitmap的大小如何计算?
Bitmap压缩处理?
列表图片三级缓存?
21.内存缓存,磁盘缓存,
LruCache的原理?
22.PatchClassLoad和DexClassLoad
23.js互掉
24.热修复原理?
25.性能优化
- 布局优化:include viewStub merge
- 图片优化:图片缩放处理,图片缓存处理Glide
- 内存优化:内存泄漏 内存溢出
参考文章:- android APP性能优化总结
- Android性能优化面试题集锦
- 最全的Android内存优化技巧
- 不可思议的OOM
- 想让安卓app不再卡顿?看这篇文章就够了
- Android App卡顿分析,以及使用Choreographer进行帧率统计监测
- RecycleView性能优化
26.64K问题
27.MVP和MVC和MVVM
28.person p=new Person();
29.jvm的结构
30.GC
31.计算机五层模型
32.http和https区别
32.http请求流程
32.DNS流程
33.集合
34.线程
35.源码分析
36.优秀面试题
- 妹子面试阿里,面试官竟问她有没有男朋友?面试真题「PDF分享」
- 金九银十中,看看这31道Android面试题
- Android面试心得,已拿到offer
- 2019Android大厂面试必问系列(可收藏)
- 6年Android程序员的面试心得(可收藏)
- Android面试一天一题(Day 37:一套高级工程师的面试题)
- 2020字节跳动春招客户端开发岗面经
- 360面试心得(Android)
- 分享一份非常强势的Android面试题360+小米+BAT多家公司面试题汇总
- 最新百度、头条、小米、360、网易、等公司 Android 社招面试心得
- 2019 百度、头条、小米、360、网易、拼多多等公司 Android 社招面试心得
- Android面试题:小米+百度+360+美团
- 2018 Android面试心得,已拿到offer
- 比较高级的Android面试题
- Android 面试之 Android 篇二
37.java
38.Android
38.Android 各个版本的区别
主要记住一些大版本变化:
- android3.0 代号Honeycomb, 引入Fragments, ActionBar,属性动画,硬件加速
- android4.0 代号Ice Cream,API14:截图功能,人脸识别,虚拟按键,3D优化驱动
- android5.0 代号Lollipop API21:调整桌面图标及部件透明度等
- android6.0 代号M Marshmallow API23,软件权限管理,安卓支付,指纹支持,App关联,
- android7.0 代号N Preview API24,多窗口支持(不影响Activity生命周期),增加了JIT编译器,引入了新的应用签名方案APK Signature Scheme v2(缩短应用安装时间和更多未授权APK文件更改保护),严格了权限访问
- android8.0 代号O API26,取消静态广播注册,限制后台进程调用手机资源,桌面图标自适应
- android9.0 代号P API27,加强电池管理,系统界面添加了Home虚拟键,提供人工智能API,支持免打扰模式
网友评论