腾讯面试题集锦文末有提供答案
1、四大组件是什么
2、四个组件的生命周期
3、Activity四种启动模式对比
4、Activity在有Dialog时按Home键的生命周期
5、两个Activity之间跳转时必然会执行的是哪几个方法
6、 前台切换到后台,然后再回到前台,Activity生命周期回调方法。弹出Dialog,生命值周期回调方法
7、Sparse Array
8、 atomic包
9、Android埋点
10、什么是Service以及描述下它的生命周期。Service有哪些启动方法,有什么区别,怎样停用Service
11、service如何杀不死
12、 Service与Activity怎么实现通信
13、什么是Intent Service?有何优点?
14、什么时候使用Service
15、请描述一下Broadcast Receiver
16、如何注册广播
17、广播的生命周期
18、为什么要用ContentProvider?它和sql的实现上有什么差别
19、请介绍下Android的数据存储方式
20、简单说说Fragment
21、他们是怎么进行传递数据的
22、Fragment Manager , add 和 replace 有什么区别
23、Fragment和view的区别
24、请介绍下Android中常用的五种布局
25、TextView 、ImageView ,Button,ImageButton他们之间的联系和区别
26、RelativeLayout和FrameLayout的区别
27、Padding和Margin有什么区别
28、Listview如何显示不同条目
29、ScrowView 使用的注意
30、Android UI中的View如何刷新
31、什么是ANR(异步加载) 如何避免它
32、Gradle中buildToolsVersion和TargetSdkVersion的区别是什么
33、进程间怎么通信
34、假设手机本地需要缓存数据,如何保证和服务器的数据统一
35、分页怎么做的
36、什么Context
37、Android程序与Java程序的区别
38、Android中的动画有哪几类,它们的特点和区别是什么
39、Android工程的目录结构
40、android的启动流程
1、四大组件是什么?
Activity
Service
BroadcastReceiver
Content Provider
2、四个组件的生命周期?
Service的生命周期:首先Service有两种启动方式,而在这两种启动方式下,它的生命周期不同。通过startService()方法启动的服务初始化结束后系统会调用void onStart(Intent intent)
bindService ()方法启动的服务初始化结束后系统会调用IBinder onBind(Intent intent)方法,用来绑定传递给bindService的Intent的对象。注意:多次调用bindService()时,如果该服务已启动则不会再触发此方法。
3、Activity的四种启动模式对比?
Standard:
SingleTask:设置了singleTask启动模式的activity在启动时,如果位于activity栈中,就会复用该activity,这样的话,在该实例之上的所有activity都依次进行出栈操作,即执行对应的onDestroy()方法,直到当前要启动的activity位于栈顶。一般应用在网页的图集,一键退出当前的应用程序。singleInstance:如果使用singleInstance启动模式的activity在启动的时候会复用已经存在的activity实例。不管这个activity的实例是位于哪一个应用当中,都会共享已经启动的activity的实例对象。使用了singlestance的启动模式的activity会单独的开启一个共享栈,这个栈中只存在当前的activity实例对象。
4、Activity在有Dialog时按Home键的生命周期?
当我们的Activity上弹出Dialog对话框时,程序的生命周期依然是onCreate()—> onStart()—> onResume(),在弹出Dialog的时候并没有onPause()和onStop()方法。而在此时我们按下Home键,才会继续执行onPause()和onStop()方法。这说明对话框并没有使Activity进入后台,而是在点击了Home键后Activity才进入后台工作。原因就是,其实Dialog是Activity的一个组件,此时Activity并不是不可见,而是被Dialog组件覆盖了其他的组件,此时我们无法对其他组件进行操作而已。
5、两个Activity之间跳转时必然会执行的是哪几个方法?
6、 前台切换到后台,然后再回到前台,Activity生命周期回调方法。弹出Dialog,生命值周期回调方法?
7、 SparseArray
SparseArray:
a.数据结构:
key和value,并用压缩的方式来存储数据
b.优点:
·由于key指定为int,能节省int和Integer的装箱拆箱操作带来的性能消耗
·扩容时只需要数组拷贝工作,而不需重建哈希表
c.适用场景:
Map且key为整型;不适合存储大容量数据,此时性能将退化至少50%
d.使用
· public void delete(int key)
· public void remove(int key)实际上内部会调用delete方法
· public E get(int key)
· public E get(int key, E valueIfKeyNotFound)可设置假设key不存在时默认返回的value
· public int keyAt(int index)获取相应的key
· public E valueAt(int index)获取相应的value
e.get/put过程:元素会按照key从小到大进行存储,先使用二分法查询key对应在数组中的下标index,然后通过该index进行增删查。源码分析见SparseArray解析
由于篇幅问题,后续答案请关注转发后点赞评论 **(面试)**即可免费获得相应面试答案和架构资料。