# androidinterview **Repository Path**: andsnail/androidinterview ## Basic Information - **Project Name**: androidinterview - **Description**: 带答案的android面试题 - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2018-08-31 - **Last Updated**: 2024-12-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 写在前面 网上有很多关于android的面试题,但是一般都是只有一个问题,答案不确定有时候不能起到很好的作用,现在整理如下,尽量都包含答案,有些直接给出链接,有不全或者不正确的地方希望各位小伙伴指出来。 ### 一、android基础部分 1.四大组件是什么 Activity,Service,BroadcastReceiver,ContentProvider 2.[四大组件的生命周期和简单用法](http://www.cnblogs.com/bravestarrhu/archive/2012/05/02/2479461.html) 3.Activity之间的通信方式 ``` 1.基于消息的通信机制 Intent,boudle ,extra数据类型有限,比如遇到不可序列化的数据Bitmap,InputStream, 或者LinkList链表等等数据类型就不太好用。 2.利用static静态数据,public static成员变量; 3.基于外部存储的传输, File/Preference/ Sqlite ,如果要针对第三方应用需要Content Provider 4.基于Application Context ``` 4.[Activity各种情况下的生命周期](https://www.jianshu.com/p/e46d449467d5) 5.[横竖屏切换的时候,Activity 各种情况下的生命周期](https://www.jianshu.com/p/e46d449467d5) 6.[Activity上有Dialog的时候按Home键时的生命周期](https://www.jianshu.com/p/e46d449467d5) 7.[两个Activity 之间跳转时必然会执行的是哪几个方法](https://www.jianshu.com/p/e46d449467d5) 8.[前台切换到后台,然后再回到前台,Activity生命周期回调方法。弹出Dialog,生命值周期回调方法](https://www.jianshu.com/p/e46d449467d5) 9.[Activity与Fragment之间生命周期比较](https://blog.csdn.net/copy_yuan/article/details/51159552) 10.[Activity的四种启动模式对比](https://blog.csdn.net/cyanchen666/article/details/82021689) 11.[Activity状态保存与恢复](https://blog.csdn.net/bestchenq/article/details/51510984) 12.[fragment各种情况下的生命周期](https://blog.csdn.net/ya1139569539/article/details/78192112) 13.[Fragment状态保存startActivityForResult是哪个类的方法,在什么情况下使用](https://www.cnblogs.com/ldq2016/p/5629395.html) 14.如何实现Fragment的滑动(不太理解出题人的意图) 15.[fragment之间传递数据的方式](https://www.jianshu.com/p/f87baad32662) 16.[Activity怎么和Service绑定](https://blog.csdn.net/javazejian/article/details/52709857) 17.[怎么在Activity中启动自己对应的Service](https://blog.csdn.net/javazejian/article/details/52709857) 18.[service和activity怎么进行数据交互](https://blog.csdn.net/javazejian/article/details/52709857) 19.[Service的开启方式](https://blog.csdn.net/javazejian/article/details/52709857) 20.[请描述一下Service的生命周期](https://blog.csdn.net/javazejian/article/details/52709857) 21.[谈谈你对ContentProvider的理解](https://blog.csdn.net/u012858833/article/details/51629245) 22.[说说ContentProvider、ContentResolver、ContentObserver 之间的关系](https://blog.csdn.net/u012858833/article/details/51629245) 23.[请描述一下广播BroadcastReceiver的理解](https://www.jianshu.com/p/ca3d87a4cdf3) 24.[广播的分类](https://www.jianshu.com/p/ca3d87a4cdf3) 25.[广播使用的方式和场景](https://www.jianshu.com/p/5a983578418e) 26.[在manifest 和代码中如何注册和使用BroadcastReceiver](https://www.jianshu.com/p/ca3d87a4cdf3) 27.[本地广播和全局广播有什么差别](https://www.jianshu.com/p/ca3d87a4cdf3) 28.[AlertDialog,popupWindow,Activity区别](https://blog.csdn.net/feiduclear_up/article/details/49080587) 29.[Application 和 Activity 的 Context 对象的区别](https://www.cnblogs.com/ganchuanpu/p/6445251.html) 30.[Android属性动画特性](https://www.jianshu.com/p/2412d00a0ce4) 31.[如何导入外部数据库](https://blog.csdn.net/chaoyu168/article/details/50467913) 32.[LinearLayout、RelativeLayout、FrameLayout的特性及对比,并介绍使用场景](https://www.cnblogs.com/qitian1/p/6461473.html) 33.[谈谈对接口与回调的理解](https://www.jianshu.com/p/1cc11d19635e) 34.[介绍下SurfView](http://www.360doc.com/content/13/0103/14/7724936_257842268.shtml) 35.[序列化的作用,以及Android两种序列化的区别](https://blog.csdn.net/wangchunlei123/article/details/51345130) 36.差值器、估值器(参考属性动画) 37.[Android中数据存储方式](https://www.cnblogs.com/chendu123/p/6066910.html) ### 二、Android源码相关分析 38.[Android动画框架实现原理](https://blog.csdn.net/harrain/article/details/53726960) 39.[Android各个版本API的区别](https://blog.csdn.net/u012758803/article/details/54844903) 40.[Requestlayout,onlayout,onDraw,DrawChild区别与联系](https://blog.csdn.net/weixin_41101173/article/details/79726311) 41.[invalidate和postInvalidate的区别及使用](https://blog.csdn.net/lingdianalex/article/details/52469477) 42.[Activity-Window-View三者的差别](https://blog.csdn.net/qq_21399461/article/details/79836806) 43.[谈谈对Volley的理解]() 44.[如何优化自定义View](https://blog.csdn.net/whb20081815/article/details/74474736) 45.[低版本SDK如何实现高版本api](https://blog.csdn.net/shipeng22022/article/details/48491719) 46.[描述一次网络请求的流程](https://blog.csdn.net/seu_calvin/article/details/53304406) 47.[HttpUrlConnection 和 okhttp关系](https://www.jianshu.com/p/2fa728c8b366) 48.[Bitmap对象的理解](https://blog.csdn.net/jwq2011/article/details/52278248) 49.[looper架构](https://blog.csdn.net/lmj623565791/article/details/38377229) 50.ActivityThread,AMS,WMS的工作原理 51.自定义View如何考虑机型适配 52.自定义view事件 53.[LaunchMode应用场景](https://blog.csdn.net/android_freshman/article/details/52948124) 54.[AsyncTask 如何使用](https://www.jianshu.com/p/ee1342fcf5e7) 55.[SpareArray原理](https://blog.csdn.net/easyer2012/article/details/37871031/) 56.[请介绍下ContentProvider 是如何实现数据共享的](https://blog.csdn.net/maizangxiangwang/article/details/50738195) 57.[AndroidService与Activity之间通信的几种方式](https://blog.csdn.net/xiaanming/article/details/9750689) 58.[IntentService原理及作用是什么](https://blog.csdn.net/lmj623565791/article/details/47143563) 59.说说Activity、Intent、Service 是什么关系 一个Activity通常是一个单独的屏幕,每一个Activity都被实现为一个单独的类,这些类都是从Activity基类中继承而来的。Activity类会显示由视图控件组成的用户接口,并对视图控件的事件做出响应。 Intent的调用是用来进行屏幕之间的切换。Intent描述应用想要做什么。Intent数据结构中两个最重要的部分是动作和动作对应的数据,一个动作对应一个动作数据。 Service是运行在后台的代码,不能与用户交互,可以运行在自己的进程里,也可以运行在其他应用程序进程的上下文里。需要一个Activity或者其他Context对象来调用。 Activity跳转Activity,Activity启动Service,Service打开Activity都需要Intent表明意图,以及传递参数,Intent是这些组件间信号传递的承载着。 60.[ApplicationContext和ActivityContext的区别](https://www.cnblogs.com/ganchuanpu/p/6445251.html) 61.[SP是进程同步的吗?有什么方法做到同步](https://www.jianshu.com/p/bdebf741221e) 62.[谈谈多线程在Android中的使用](http://www.cnblogs.com/dolphin0520/p/3932921.html) 63.进程和 Application 的生命周期 64.[封装View的时候怎么知道view的大小](https://blog.csdn.net/a396901990/article/details/36475213) 65.RecycleView原理 66.[AndroidManifest的作用与理解](https://www.jianshu.com/p/6ed30112d4a4) ### 三、常见的一些原理性问题 67.[请描述一下View事件传递分发机制](https://www.jianshu.com/p/38015afcdb58) 68.[Handler机制和底层实现](https://blog.csdn.net/lmj623565791/article/details/38377229) 69.[Handler、Thread和HandlerThread的差别](https://blog.csdn.net/ly502541243/article/details/52414637) 70.[handler发消息给子线程,looper怎么启动](https://blog.csdn.net/lmj623565791/article/details/38377229) 71.[关于Handler,在任何地方new Handler 都是什么线程下?](https://blog.csdn.net/lmj623565791/article/details/38377229) 72.[ThreadLocal原理,实现及如何保证Local属性](https://www.cnblogs.com/dolphin0520/p/3920407.html) 73.[请解释下在单线程模型中Message、Handler、Message Queue、Looper之间的关系](https://blog.csdn.net/ly502541243/article/details/52414637) 74.[Touch事件传递流程](https://www.jianshu.com/p/38015afcdb58) 75.[事件分发中的onTouch 和onTouchEvent 有什么区别,又该如何使用](https://www.jianshu.com/p/38015afcdb58) 76.[View和ViewGroup分别有哪些事件分发相关的回调方法](https://www.jianshu.com/p/38015afcdb58) 77.[View刷新机制](https://blog.csdn.net/lll1204019292/article/details/52350517) 78.[View绘制流程](https://blog.csdn.net/lll1204019292/article/details/52350517) 79.[自定义控件原理](https://www.jianshu.com/p/988326f9c8a3) 80.[自定义View如何提供获取View属性的接口](https://blog.csdn.net/xxmbaobao1/article/details/42741285) 81.[Android代码中实现WAP方式联网](https://blog.csdn.net/asce1885/article/details/7844159) 82.AsyncTask机制 83.AsyncTask原理及不足 84.如何取消AsyncTask? 85.为什么不能在子线程更新UI