安卓面试题库
在github上下载了一份面试题,花了些时间做了一遍。 多媒体那块的就没做了,但也记在这里。
- 安卓学习途径, 寻找资料学习的博客网站
- AndroidStudio使用, 插件使用, 通用的调试工具
- 安卓和苹果的区别
-
四大组件
- Content Provider
- Service
- Activity
- BroadCast Receiver
-
五大存储方式
- Shared Preference
- sqlite DB
- file
- 远程存储
- Content Provider
-
Layout布局有哪几种 FrameLayout什么时候用
5种布局方式
分别为: FrameLayout,LinearLayout,RelativeLayout,TableLayout,AbsoluteLayout FrameLayout 通常在自定义组件或者自由布局时使用
-
ListView的优化
- 视图重用
- 子组件的监听只加载一次
- 图片异步加载
- 数据与UI绑定
-
点击事件设置监听的几种方式
- 自定义类继承View.OnClickListener
- 使用匿名类
- Activity继承View.OnClickListener
- 在layout文件里使用onclick属性指定方法名
-
安卓主线程和子线程的关系
主线程指支撑APP运行的线程,负责APP的UI绘制工作,在主线程里不能进行网络请求的操作,也尽量不要在 主线程里进行耗时的操作。 子线程与主线程的通信一般是通过handler,主线程向子线程通信可以通过接口(interface)
-
Activity生命周期 onStart onResume区别
onStart是Activity创建后执行,重新返回时可能不会执行onStart; onResume是Activity创建和重启都会走的一个方法,只要Activity出现在屏幕上,就会执行onResume
-
Fragment生命周期 Activity和Fragment区别
Fragment的生命周期和Activity类似 Fragment是在Android3.0之后出现的,是Activity的一个组成部分,一个Activity可以有多个Fragment,Fragment不能脱离Activity单独存在
-
页面之间如何传递数据, 如果传递一个对象如何处理, 如何传递集合
页面之间的数据传递可以通过Intent传值,或者使用onActivityForResult回传; 如果是对象可以把对象序列化转成Serializable或者Parcelable传递 集合可以转成List传递 也可以通过第三方工具进行传值
-
dp px sp的区别
dp 与密度无关的像素单位,在不同设备上及时像素密度不一样,但dp的大小是不便的。 px 1px 就是1个像素点。 sp 跟尺寸无关的像素单位,一般处理字体的大小。
-
gravity和layout_gravity的区别
gravity是元素本身的内容摆放规则; layout_gravity是元素相对于父元素的摆放规则
-
margin和padding的区别
margin是外边距 padding是内补白
-
weight的作用
控制元素在父元素的所占大小的比例。只适用于线性布局
-
Handler机制
由Handler MessageQueue Looper三步分组成 Handler负责 消息的收发,MessageQueue负责存储,Looper负责管理消息
-
什么是ANR, 如何避免
Android Not Responsing 安卓定义的主线程响应时长为5秒,如果5秒内没响应,则会回收APP进程 耗时的工作在子线程里做。
-
显式意图和隐式意图区别,隐式意图的使用
显式意图一般用于APP内,具有明确的目标页面 隐式意图一般用于APP之间的调用,只要申明意图的标志,比如打开浏览器的意图。
-
广播几种接收方式, 广播有几种类型, 区别
-
开启Service的几种方式, 区别, Service和Activity之间如何传递数据
两种
- startService
- bindService 传递数据: 广播、Interface、Handler、bind对象
-
Service中如果要start一个Activity要如何特殊处理,为什么
- 隐式启动。
- 启动时标记Intent的NEW_TASK
-
自定义控件
简单的组合自定义控件 图文混排的自定义控件,需要重写View的一些方法
-
常用开源框架的使用
OKHttp,Volley,xUtils,EventBus
-
动画类型
Tweens Frame Animation
-
任务栈,页面启动方式
standard,singleTask,singleTop,singleInstence
-
Material Design / 新控件RecyclerView CardView等使用
RecyclerView智能化了ListView CardView即卡片View,也是智能化的View,实现某类业务很简单。
-
图片压缩和双缓存原理
- Matrix
- 双缓存: 先通过setBitmap方法将要绘制的所有的图形绘制到一个Bitmap上也就是先在内存空间完成,然后再来调用drawBitmap方法绘制出这个Bitmap,显示在屏幕上
-
多层View的onTouch事件分发
GroupView->ChildView->GroupView 呈U形分发事件
-
Android绘制原理 onMeasure onLayout onDraw作用
- onMeasure View的大小计算,视图的最终大小在这里确定
- onLayout操作用于设置视图在屏幕中显示的位置
- onDraw会将前两部操作后的参数:大小和位置等,将内容绘制到屏幕
-
什么是MVC MVP,区别
MVC 是 把软件分为三个部分:Model,View,Controller.三者相互作用 MVP 是把软件分为:Model, View, Presenter.Model 和View通过Presenter相互通信
-
响应式编程
一种面向数据流和变化传播的编程方式.
-
常见开源框架源码
- Android
- Volley
- LruCache
- xUtils
- VLC
-
单元测试常用框架和实际使用 场景
Monkey 自动化测试
多媒体
-
音频的环绕声和混响等如何处理
-
音频录制播放
-
视频的录制和播放
-
播放使用的常用框架
-
Android原生支持格式
-
软解码硬解码的区别
-
如果要做一个按住屏幕右侧滑动调整声音功能如何处理