Android面试经典题库:四大组件、数据存储与优化

需积分: 9 0 下载量 130 浏览量 更新于2024-07-29 收藏 154KB DOC 举报
"Android面试题集锦" 在Android面试中,常常会涉及到一系列核心概念和技术。以下是基于给定的文件信息,对部分重要知识点的详细解释: 1. **Android的四大组件** - **Activity**: 是Android应用的主要构建块,用于用户交互。它负责展示界面并管理生命周期,如在用户离开后暂停或停止,以及在用户返回时恢复状态。 - **Service**: 在后台运行,不与用户界面直接交互。它可以长时间执行任务,例如播放音乐或在后台下载数据。 - **Content Provider**: 提供数据访问接口,使得不同应用间能够共享数据。它隐藏了数据存储的细节,使外部应用能通过标准的CRUD操作来访问数据。 - **Broadcast Receiver**: 监听并响应系统或应用发送的广播Intent,执行相应的操作,如接收通知或响应系统事件。 2. **Android布局** - **LinearLayout**: 布局元素沿单一方向(垂直或水平)排列。 - **RelativeLayout**: 允许子视图相对于其他视图的位置进行布局。 - **FrameLayout**: 在一个容器中显示单个视图,但可以叠加其他视图。 - **GridLayout**: 将视图按网格排列。 - **ConstraintLayout**: 提供强大的可视化布局工具,允许视图相互约束,以创建灵活和适应性布局。 3. **Android动画** - **Tween动画**: 改变视图的属性,如大小、透明度等,而不会改变视图的位置。 - **帧动画**: 类似于电影胶片,通过连续播放一系列图片来创建动画效果。 - **属性动画**: 更为强大,可以改变任何对象的属性,并在任意时间线上操作。 4. **XML解析** - **SAX解析器**: 事件驱动,逐行读取XML文档,适用于大文件,内存效率高。 - **DOM解析器**: 加载整个XML文档到内存,形成树形结构,便于遍历,适用于小文件。 - **Pull解析器**: 类似SAX,但提供更简单的API,由开发者控制解析过程。 - **Android推荐使用PullParser**,因为它内存消耗低且性能高效。 5. **ListView优化** - 使用ViewHolder模式减少视图查找的时间。 - 使用异步加载数据,避免阻塞UI线程。 - 合理使用convertView复用机制。 - 避免在getView()方法中执行耗时操作。 6. **数据存储** - SharedPreferences: 存储键值对,适合少量配置数据。 - SQLite数据库: 结构化的数据存储,适用于复杂数据模型。 - 文件存储: 可以直接写入文件系统,适合文本、图片等。 - Content Provider: 共享应用间的数据。 7. **Activity启动模式** - **standard**: 每次启动新的Activity实例。 - **singleTop**: 如果栈顶已经存在该Activity实例,不创建新实例。 - **singleTask**: 创建新的任务栈,栈内只有一个Activity实例。 - **singleInstance**: 创建单独的任务栈,栈内只有一个Activity实例。 8. **Intent启动方式** - **显式Intent**: 指定要启动的Component,常用于同一应用内。 - **隐式Intent**: 不指定具体Component,通过Intent Filter匹配。 9. **Activity生命周期** - 包括onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy()等方法,需要理解每个状态的转换及何时调用相应方法。 10. **屏幕旋转的生命周期** - 屏幕旋转会导致Activity重建,onSaveInstanceState()保存状态,onCreate()和onRestoreInstanceState()恢复状态。 11. **Service管理** - 通过startService()启动Service,服务会在后台持续运行,直到调用stopService()。 - 使用bindService()绑定Service,服务在所有绑定者解除绑定后自动停止。 12. **广播注册** - 动态注册:在代码中注册,只在注册期间有效,更灵活,但需在不需要时手动注销。 - 静态注册:在AndroidManifest.xml中注册,应用启动时自动注册,无需手动管理,但无法在运行时动态控制。 13. **Message队列机制** - Message: 用于传递消息的数据结构。 - Handler: 接收和处理Message的线程对象。 - Message Queue: 存储待处理Message的队列。 - Looper: 循环读取消息队列并分发到Handler处理。 14. **Android系统架构** - Linux内核:提供硬件抽象层和底层服务。 - Libraries:包含C/C++库,如SQLite、OpenGL ES等。 - Android运行时:包括Dalvik虚拟机和ART运行时环境。 - 应用框架:支持四大组件和其他API。 - 应用程序:由开发者编写的各种应用。 以上只是部分Android面试中常见的知识点,涵盖范围广泛,面试时通常需要根据职位需求和技术栈深入讨论。