Android面试必备:详解核心知识点与面试策略

需积分: 3 3 下载量 11 浏览量 更新于2024-07-23 1 收藏 128KB DOC 举报
"这是一份详尽的Android面试题集,涵盖了Android开发中常见的技术点,旨在帮助面试者准备面试,提高通过率。" 1. Android的四大组件是:Activity(活动)、Service(服务)、BroadcastReceiver(广播接收器)和ContentProvider(内容提供者)。Activity是用户界面的入口,用于展示UI并处理用户交互;Service是在后台运行的组件,不与用户交互;BroadcastReceiver用于接收系统或应用广播事件;ContentProvider则用于不同应用间的数据共享。 2. 常见的五种布局包括:LinearLayout(线性布局)、RelativeLayout(相对布局)、FrameLayout(帧布局)、GridLayout(网格布局)和ConstraintLayout(约束布局)。LinearLayout按垂直或水平方向排列子视图;RelativeLayout根据子视图之间的相对关系进行布局;FrameLayout允许子视图覆盖;GridLayout按网格排列子视图;ConstraintLayout则提供了更灵活的布局方式,可方便地创建响应式设计。 3. Android中的动画分为两种:Tween动画和Frame动画。Tween动画用于改变对象的属性,如平移、旋转、缩放等;Frame动画是播放一系列静态图像来实现动画效果,常用于简单的动画场景。 4. 解析XML的类主要有DOM、SAX和Pull解析器。官方推荐使用Pull解析器,因为它更节省内存且效率更高。DOM一次性加载整个XML文档,适合小文件;SAX是事件驱动的解析方式,只处理需要的部分,适合大文件;Pull解析器类似SAX,但使用API更加简洁。 5. ListView的优化包括使用ViewHolder模式减少视图查找时间,复用convertView,使用异步加载图片,以及避免在getView()中执行耗时操作。 6. Android的数据存储方式有:SharedPreferences(键值对存储)、SQLite数据库、内部/外部存储、ContentProvider和File。选择存储方式应根据数据类型和需求来决定。 7. Activity的启动模式有标准模式(standard)、单实例模式(singleInstance)、单任务模式(singleTask)和单栈顶模式(singleTop)。每种模式都有特定的启动行为和生命周期特点。 8. 与Activity和Task相关的Intent启动方式包括:显式Intent(指定具体目标组件)和隐式Intent(通过Action、Category等匹配组件)。启动模式会影响Activity在Task中的位置和行为。 9. Activity的生命周期包括:onCreate()、onStart()、onResume()、onPause()、onStop()、onDestroy()等方法,开发者需在这些方法中处理相应的状态变化。 10. 屏幕旋转时,Activity默认会重建,即执行onSaveInstanceState()保存状态,onDestroy()销毁,然后重新onCreate()。 11. 启动Service用startService(),停止Service用stopService()。Service在后台运行,不与用户界面交互,可用于执行长时间任务。 12. 注册广播有两种方式:静态注册(在AndroidManifest.xml中)和动态注册(在代码中)。静态注册不受应用运行状态影响,但无法在运行时动态控制;动态注册灵活性高,但应用关闭后不再接收广播。 13. Message、Handler、Message Queue和Looper共同构成消息机制。Looper负责循环读取消息队列,Handler用于发送消息和处理消息,Message是传递的消息实体。 14. Activity、Intent、Intent Filter、Service、Broadcast、BroadcastReceiver是Android组件通信的核心元素。Intent用于组件间的交互,Intent Filter用于定义接收何种Intent,BroadcastReceiver接收并处理广播。 15. MVC(Model-View-Controller)模式将应用划分为模型、视图和控制器三个部分,分离业务逻辑、数据和用户界面。在Android中,Activity通常作为Controller,View作为View,数据层可以是Model。 16. ANR(Application Not Responding)是指应用无响应,通常是主线程阻塞导致。避免ANR的关键是确保主线程不执行耗时操作,合理使用异步任务。 17. ForceClose通常是由于程序异常或资源泄露引起,可通过调试、代码审查和异常处理来避免。虽然Java异常可以被捕获,但无法捕获导致ForceClose的系统级错误。 18. Android系统架构从底层到上层依次为:Linux内核、硬件抽象层、系统库和服务、应用程序框架层和应用程序层。每一层都为上一层提供服务。 19. ContentProvider通过实现ContentProvider类,暴露数据接口供其他应用查询、插入、删除和更新数据。 20. Android API虽然未声明抛出异常,但在运行时仍可能抛出Runtime异常,例如空指针异常、数组越界等。遇到这类异常可能导致应用崩溃,需通过try-catch语句进行异常处理。 21. IntentService优点是自动管理线程,每个请求都在单独的工作线程中处理,处理完后自动停止服务,避免资源浪费。 22. 使用onSaveInstanceState()和onRestoreInstanceState()保存和恢复Activity状态,当Activity被系统回收时,可避免状态丢失。 23. 将Activity设置为窗口样式需修改主题主题属性,如设置透明背景和无标题栏。 24. 退出Activity通常使用finish(),安全退出多Activity应用需确保按栈顺序反向关闭Activity,避免内存泄漏。 25. AIDL(Android Interface Definition Language)是接口定义语言,用于跨进程通信。它定义了服务接口,工作原理是自动生成 Binder 类,处理数据类型包括基本类型、List、Map 和自定义类型。 26. Android程序运行时权限针对运行时动态请求,文件系统权限在安装时确定,主要针对文件读写等操作。两者结合使用,确保应用在适当的情况下访问敏感资源。