Android(安卓)面试复习资料
Android面试题总结
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原理
参考文章:
- 1.腾讯Android面试:Handler中有Loop死循环,为什么没有阻塞主线程,原理是什么
- 2.Android Handler postDelayed的原理
- 3.找到一篇关于“MessageQueue”的好文章
- 4.Android消息机制Handler,有必要再讲一次
- 5.ThreadLocal 原理
- Android异步消息处理机制(源码分析+面试题)
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的启动过程
Activity启动流程源码分析
Activity启动流程3.Activity的启动模式,A跳转B,B返回A
android的启动模式
4.主线程为什么不用创建looper
ActivityThread的main方法究竟做了什么?
7.intent
1.intent传递数据有大小限制吗,为什么是1M?
答: 探究intent传递大小限制
9.事件等的传递机制
1.事件冲突解决?
Android面试题(三)——View的事件体系和工作原理
10.view的绘制
1.view的绘制流程?
Android 绘制原理浅析「干货」
2.requestLayout的原理?
3.invalidat和postInvalidat的区别?
4.measureSpeace是什么,有几种模式,由什么组成的?
MeasureSpec 到底是个啥!
4.自定义view?
答:1.自定义组合view
2.自定义继承view
3.自定义绘制view5.RelativeLayout和LinearLayout性能分析
Android中RelativeLayout和LinearLayout性能分析
6.动画的分类
Android 属性动画:这是一篇全面 & 详细的 属性动画 总结&攻略
11.Apk的打包流程?
12.Apk的安装流程?
13.activity的启动流程?
14.Binder的原理?
- 阿里巴巴面试:Binder通信原理与机制
15.内存泄漏?
1.handler导致内存泄漏
2.线程内部类导致
3.资源未释放
4.静态变量和单例模式导致内存泄漏,主要是持有content引用
5.leakCanary的原理
16.Android几种进程
前台进程
可见进程
服务进程
后台进程
空进程
17.SharedPreference
1.SharedPreference的原理?
- Android之不要滥用SharedPreferences
2.SharedPreference使用注意事项?
18.进程包活的思路
- 阿里巴巴面试 :进程保活如何做到,你们保活率有多高
19.序列化
Serializable和Parceable的区别?
Serializable和Parceable的原理?
20.Bitmap
Bitmap的大小如何计算?
Bitmap压缩处理?
列表图片三级缓存?
21.内存缓存,磁盘缓存,
LruCache的原理?
22.PatchClassLoad和DexClassLoad
23.js互掉
24.热修复原理?
- Android 类加载机制以及基于类加载机制的热修复
- 腾讯面试合集:热修复连环炮热修复是什么 有接触过tinker吗,tinker原理是什么
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的结构
- 深入浅出 Java 虚拟机 是你通往高级 Java 开发的必经之路
- JVM类加载机制
30.GC
31.计算机五层模型
- 聊一聊计算机网络的五层模型
- 计算机网络五层模型复习
32.http和https区别
- HTTPS加密过程和TLS证书验证
- https原理:证书传递、验证和数据加密、解密过程解析
- 面试官常问问题(1)-http 和 https 区别、https 是如何保证数据安全的
- 菜鸟教程——http和Https、SSL
32.http请求流程
- Https原理及流程
32.DNS流程
- 互联网基础服务之DNS—基础篇
33.集合
- jdk1.8 HashMap红黑树源码解析
- 图解LinkedHashMap原理
- 图解HashMap原理
- 聊聊HashMap
- 并发编程——ConcurrentHashMap#addCount() 分析
- HashMap,ArrayMap,SparseArray源码分析及性能对比
- HashMap深度分析
- 死磕 java集合之终结篇
- 面试官:”准备用HashMap存1w条数据,构造时传10000会触发扩容吗?“
- HashMap为什么选择红黑树
34.线程
- java面试题之多线程
- Android中多线程切换的几种方法
- 2019中级Android开发面试解答之线程篇
- Android 多线程:AsyncTask的原理 及其源码分析
- android 多线程 — 线程的面试题和答案
- EventBus 3.0 源码分析
- Retrofit分析-漂亮的解耦套路
- 网络加载框架 - Retrofit
- OKHttp源码解析(一)--初阶
- 盘它,okhttp3吊炸天源码分析(一):同步、异步请求源码解析
- 线程、多线程和线程池面试专题
35.源码分析
- RxJava 从入门到放弃再到不离不弃
- RxJava 之 Android使用初体验
- 我们真的需要使用RxJava+Retrofit吗?
- 一步一步带你认识MVP+Retrofit+Rxjava并封装
- Retrofit 2.x 的使用,优势,源码分析和启发
- OkHttp3 HTTP请求执行流程分析
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
- 详解synchronized与Lock的区别与使用
- 头条,华为面试高频题;Java中的锁有哪些?以及区别
- Java 经典问题
- Java 的泛型擦除和运行时泛型信息获取
- 分析int和Integer的区别
- 父类的静态方法能不能被子类重写
- 常见面试题:Java值传递深度解析
38.Android
- 腾讯Android面试:系统如何加载一个dex文件,他的底层原理是怎么实现的
- 在腾讯面试,被问到组件化如何实现,组件化与插件化的差别在哪里,该怎么选型?
- 关于onActivityResult的resultCode为0的异常
- Android埋点,减少对业务代码的入侵
- 阿里巴巴 说说 Android 虚拟机Dalvik与ART区别在哪里?
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,支持免打扰模式
更多相关文章
- 如何定制android源码的编译选项 & 后期安装?
- Android源码——安卓聊天
- Android(安卓)Netroid解析之——断点续传下载及问题修正
- android开发之定制标题栏 --- 附源码
- android 源码开发 关于编译等小知识点总结
- Ubuntu下Chromium for Android(安卓)源码的编译
- [转]Windows下用Git下载android源码
- android Fragment 源码分析
- Android文件下载功能实现代码