2011年Android面试必备知识点详解

需积分: 3 1 下载量 193 浏览量 更新于2024-07-24 收藏 154KB DOC 举报
"这是一份关于2011年Android技术面试的综合整理,包含了百度、新浪、中科软等知名公司的面试题目及详细答案,旨在帮助求职者准备Android开发者职位的面试。" 这篇摘要中涵盖了多个Android开发的重要知识点,以下是详细说明: 1. **Android四大组件**:Activity(活动)、Service(服务)、BroadcastReceiver(广播接收器)和ContentProvider(内容提供者)。Activity是用户界面,Service在后台执行任务,BroadcastReceiver用于接收系统或应用广播事件,ContentProvider负责数据共享。 2. **布局管理器**:LinearLayout(线性布局)、RelativeLayout(相对布局)、FrameLayout(帧布局)、TableLayout(表格布局)和GridLayout(网格布局)。它们分别用于线性排列、基于相对位置定位、单个元素显示、表格结构和网格化展示组件。 3. **动画类型**:Tween动画(平滑变化)和帧动画(连续播放多张图片形成动画)。Tween动画包括平移、旋转、缩放和透明度变化,帧动画则适合做连续动作效果。 4. **XML解析**:DOM解析器、SAX解析器和Pull解析器。DOM一次性加载整个XML文档,占用内存大;SAX是事件驱动,按需解析,内存占用小;Pull解析器类似SAX,但更简单且性能更好,官方推荐使用Pull解析器。 5. **ListView优化**:使用ViewHolder设计模式减少视图查找,复用convertView,使用异步加载和缓存策略,避免过多的对象创建,以及使用SparseArray替代HashMap来存储视图状态。 6. **数据存储方式**:Shared Preferences(键值对存储)、SQLite数据库、内部/外部存储、ContentProvider和文件系统。 7. **Activity启动模式**:标准模式(SingleTop)、栈顶复用模式(SingleTask)、单实例模式(Singleton)和前台服务模式(SingleInstance)。它们决定了新Activity如何创建和管理。 8. **Intent启动方式**:显式Intent指定具体组件,隐式Intent通过Intent Filter匹配组件。涉及FLAG_ACTIVITY_NEW_TASK和FLAG_ACTIVITY_CLEAR_TOP等标志。 9. **Activity生命周期**:包括onCreate()、onStart()、onResume()、onPause()、onStop()、onDestroy()等关键方法,以及配置变更(如屏幕旋转)时的生命周期调整。 10. **屏幕旋转生命周期**:屏幕旋转会导致Activity重建,onSaveInstanceState()用于保存状态,onRestoreInstanceState()恢复状态。 11. **Service操作**:通过startService()启动,stopService()或stopSelf()停止。Service在后台持续运行,即使用户离开应用。 12. **广播注册**:静态注册(在AndroidManifest.xml中)和动态注册(在代码中)。静态注册不受Activity影响,动态注册需在合适的时机注册和取消注册,系统设计广播机制是为了组件间通信和事件分发。 13. **Message组件**:Message对象携带数据,Handler处理消息,Message Queue存放消息,Looper循环读取消息队列并分发给Handler。 14. **Android组件关系**:Activity作为用户交互入口,Intent用于启动组件或传递数据,Intent Filter定义接收何种Intent,Service处理长时间后台任务,BroadcastReceiver响应广播事件。 15. **MVC模式**:Model(模型)存储数据,View(视图)显示数据,Controller(控制器)处理用户交互。Android官方推荐使用MVVM(Model-View-ViewModel)模式。 16. **ANR**:Application Not Responding,当主线程阻塞超过5秒时出现。避免办法是确保UI线程不执行耗时操作,使用AsyncTask或其他异步机制。 17. **Force Close**:程序异常终止,通常由未捕获的异常引起。通过良好的错误处理和测试可以避免。 18. **Android系统架构**:Linux内核、硬件抽象层、系统库、运行时库、应用程序框架和应用程序。每个层次都提供了不同功能和服务。 19. **ContentProvider**:作为数据共享接口,允许应用间数据交换,通过Uri访问数据。 20. **未声明异常**:虽然API没有声明,但在运行时仍可能抛出异常,例如空指针异常。应进行充分的异常处理,避免程序崩溃。 21. **IntentService优点**:在单独的工作线程中执行任务,自动停止服务,防止内存泄漏。 22. **保存Activity状态**:onSaveInstanceState()和onRestoreInstanceState(),或使用Bundle在配置变更时保存和恢复状态。 23. **Activity窗口样式**:通过改变主题Theme或修改Window属性实现。 24. **退出Activity**:调用finish(),安全退出应用需要管理Activity堆栈,确保正确关闭所有Activity。 25. **AIDL**:Android Interface Definition Language,用于进程间通信(IPC),处理基本数据类型和Parcelable对象。 26. **运行时权限**:用户在运行时授予,文件系统权限在安装时设定。运行时权限更注重用户隐私,文件系统权限控制对文件的操作。 以上内容详尽解析了Android开发的关键知识点,对于面试准备非常有帮助。