Android企业面试题
需积分: 0 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开发的各个方面,这对于准备面试或者提高自身技能都有很大的帮助。
倾听雨落-harry
- 粉丝: 176
- 资源: 24
最新资源
- Lawrence C. Evans Partial Differential Equations.djvu
- CFA知识点梳理系列:CFA Level II, Reading 4 Big Data Projects
- 专业问题 · 语雀.mhtml
- 基于Vue+TP6的B2B2C多场景电商商城设计源码
- 基于小程序的研知识题库小程序源代码(java+小程序+mysql).zip
- 基于小程序的微信小程序的点餐系统源代码(java+小程序+mysql).zip
- 基于小程序的宿舍管理小程序源代码(java+小程序+mysql).zip
- 基于小程序的小区服务系统源代码(python+小程序+mysql).zip
- QT项目之中国象棋人工智能
- 基于小程序的疫情核酸预约小程序源代码(java+小程序+mysql).zip