Android企业面试题

preview
需积分: 0 1 下载量 8 浏览量 更新于2016-08-29 1 收藏 26KB DOC 举报
### Android企业面试题知识点解析 #### 一、Android架构设计 **知识点1:** Android项目的文件目录结构及类结构。 - **项目结构说明:** - `src/main/java`: 存放应用程序的主要Java代码。 - `src/main/res`: 存放资源文件,如布局文件、图片等。 - `build.gradle`: 项目级别的构建脚本,用于定义项目的构建配置。 - `settings.gradle`: 定义项目的依赖关系。 - `AndroidManifest.xml`: 应用程序的清单文件,声明应用所需的权限、四大组件等。 - **类结构示例:** - **Activity**: 用户界面的主要控制器。 - **Service**: 在后台运行的服务,不提供用户界面。 - **BroadcastReceiver**: 接收广播消息。 - **ContentProvider**: 提供数据访问接口。 **知识点2:** 使用过的Android架构原理及应用。 - **MVC(Model-View-Controller):** 分离数据模型、用户界面和控制逻辑。 - **MVVM(Model-View-ViewModel):** 数据绑定和观察者模式的应用。 - **MVP(Model-View-Presenter):** 与MVVM类似,但更侧重于Presenter层。 #### 二、具体的Android知识点 **知识点3:** ViewGroup与View,Layout与Widget的关系。 - **ViewGroup**: 是View的子类,可以包含多个View或ViewGroup。 - **View**: 屏幕上最基础的可视组件。 - **Layout**: 布局容器,通常继承自ViewGroup。 - **Widget**: 具体的UI组件,如Button、TextView等。 - **居中方法:** 使用LinearLayout设置`android:orientation="vertical"`和`android:gravity="center"`属性,或使用RelativeLayout设置`android:layout_centerInParent="true"`属性。 **知识点4:** BroadCastReceiver的注册机制和调用机制。 - **注册机制:** 动态注册在Activity中使用`registerReceiver()`方法;静态注册在`AndroidManifest.xml`中定义。 - **调用机制:** 发送广播使用`sendBroadcast()`或`sendOrderedBroadcast()`方法。 **知识点5:** ContentProvider的原理及其作为四大组件之一的原因。 - **原理:** 提供统一的数据访问接口,实现数据的安全隔离和共享。 - **原因:** 内容提供者是Android应用间数据交换的核心机制,通过它实现不同应用间的数据共享。 **知识点6:** Handler的机制和原理。 - **机制:** Handler机制实现了消息队列和线程之间的通信,主要用于解决UI线程和工作线程间的通信问题。 - **原理:** 通过Looper维护一个消息队列MessageQueue,并通过Message对象封装数据。 #### 三、Android系统方面 **知识点7:** 如何避免图片过大引起的OOM问题。 - **解决方案:** - 使用BitmapFactory.Options设置inSampleSize值来压缩图片。 - 使用Glide等第三方库自动处理图片加载。 - 限制单个图片的最大尺寸,使用缓存策略减少内存消耗。 **知识点8:** Android系统中如何加载动态库so和静态库jar。 - **加载动态库so:** - 使用System.loadLibrary()方法加载指定的.so文件。 - 确保.so文件放置在`/jniLibs`目录下。 - **加载静态库jar:** - 将.jar文件添加到项目中,使用`aar`或`jar`形式打包。 - 在build.gradle中添加依赖。 #### 四、Android学习应用 **知识点9:** 熟悉的开源框架及项目应用。 - **举例:** - **RxJava/RxAndroid**: 响应式编程框架。 - **Retrofit**: 网络请求框架。 - **ButterKnife**: 视图绑定库。 - **Dagger/Hilt**: 依赖注入框架。 - **Realm**: 对象关系映射库。 **知识点10:** 阅读过Android的源代码的经验。 - **简述:** - 了解源码中的关键类,如ActivityManagerService、WindowManagerService等。 - 关注启动流程、消息传递机制等核心部分。 - 通过阅读源码理解系统的底层实现原理。 #### 五、项目实际经验问题 **知识点11:** 项目成员之间的合作分工。 - **合作模式:** - 使用敏捷开发模式,如Scrum。 - 设立产品负责人、开发团队、Scrum Master等角色。 - 定期举行Sprint计划会议、每日站会等。 **知识点12:** 项目的筹备、设计、实施、测试验收。 - **筹备阶段:** 明确项目目标、需求分析、制定项目计划。 - **设计阶段:** 架构设计、UI/UX设计、数据库设计等。 - **实施阶段:** 编码、单元测试、集成测试。 - **测试验收:** Alpha测试、Beta测试、用户验收测试等。 **知识点13:** 代码组织方式。 - **命名规范:** - 类名使用大驼峰命名法。 - 包名使用全小写。 - **目录结构:** - 按照功能模块划分,如`data`, `domain`, `presentation`等。 **知识点14:** 使用Android论坛上的资源。 - **论坛资源:** - Stack Overflow: 提问与解答。 - Android Developers: 官方文档和技术博客。 - GitHub: 开源项目和代码示例。 - CSDN: 技术文章和经验分享。 通过以上知识点的总结和解析,我们可以更加深入地理解Android开发的各个方面,这对于准备面试或者提高自身技能都有很大的帮助。