Files
final-exam/嵌入式系统/试题册/试题7.md
T

466 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
tags: [嵌入式系统, 试题, 嵌入式系统设计与开发]
create time: 2026-06-10 10:41
---
# 试题 7 — 武汉科技大学《嵌入式系统》
## 概述
- **课程**:嵌入式系统
- **学校**:武汉科技大学
- **题型**:选择题、填空题、判断题、程序设计题、简答题、设计题
- **知识点**:Android 分层架构、Activity 生命周期、SQLite 数据库、ContentProvider、Intent 机制、μC/OS-II 任务调度
> [!tip] 学习建议
> 本卷以 Android 应用开发为主线,兼顾嵌入式操作系统基础。建议先梳理 Android 四大组件的职责与交互关系,这是选择题和填空题的高频考点。
## 正文
### 一、单选题(每题 3 分,共 48 分)
> [!note] 教学提示
> 本部分涵盖 Android 系统架构、Activity/ContentProvider 机制、布局控件、数据库操作及 ARM 体系结构等基础知识点。
1. 以下关于 Android 系统分层架构的描述,错误的是()。
A. Android 系统采用分层架构
B. 从应用角度看 Android 系统的中心是应用框架
C. 应用是软件工程单元的文件
D. Android 和 iOS 都使用 Linux 内核
> [!success]- 答案与解析
> **答案:B**
2. 下列不属于 ARM 体系结构支持的七种处理器模式之一的是()。
A. 用户模式
B. 管理模式
C. 系统模式
D. 中断模式
> [!success]- 答案与解析
> **答案:C**
> [!question] 思考:ARM 支持的七种模式分别是什么?
> 用户模式(USR)、系统模式(SYS)、管理模式(SVC)、中止模式(ABT)、未定义模式(UND)、IRQ 中断模式、FIQ 快速中断模式。
3. Android 的应用程序框架主要包括()等在 Android 系统上进行开发各种组件。
A. Activity
B. Service
C. ContentProvider
D. BroadcastReceiver
> [!success]- 答案与解析
> **答案:D**
4. 在 Android 系统中,所有的用户界面都是在()文件中通过 XML 进行描述。
A. manifest.xml
B. layout.xml
C. res.xml
D. main.xml
> [!success]- 答案与解析
> **答案:D**
5. 在 Android 7.0 中新增的权限类型是()。
A. normal
B. dangerous
C. signature
D. SignatureOrSystem
> [!success]- 答案与解析
> **答案:D**
6. 要想使布局中的 TextView 控件的内容在水平方向和垂直方向上居中,应该设置属性为()。
A. android:gravity="center"
B. android:layout_gravity="center"
C. android:text="center"
D. android:layout_centerInParent="true"
> [!success]- 答案与解析
> **答案:D**
> [!note] 教学提示
> 注意区分 `gravity`(内容对齐)和 `layout_gravity`(组件在父容器中的对齐)。在 RelativeLayout 中,`layout_centerInParent` 可实现完全居中。
7. 在 Android 中,将字符串转换为大写的格式方法是()。
A. convert()
B. toUpperCase()
C. equals()
D. parse()
> [!success]- 答案与解析
> **答案:B**
8. Android 中,使用 Intent 传递数据的主要类型有()。
A. Serializable
B. Parcelable
C. 以上两者都可以
D. 都不可以
> [!success]- 答案与解析
> **答案:C**
9. 通过 ContentProvider 进行数据共享时,必须在 AndroidManifest.xml 文件中对()进行配置。
A. activity
B. provider
C. service
D. receiver
> [!success]- 答案与解析
> **答案:D**
10. 使用 startActivityForResult() 方法启动 Activity 后,该 Activity 被销毁后系统回调的方法是()。
A. onActivity()
B. onPause()
C. onActivityResult()
D. onStop()
> [!success]- 答案与解析
> **答案:D**
11. 以下哪些方式可以实现两个应用程序之间的数据共享?
A. 使用 SharedPreferences
B. 使用 ContentProvider
C. 使用文件存储
D. 以上都是
> [!success]- 答案与解析
> **答案:D**
12. SQLite 数据库存储的数据类型不包括()。
A. NULL
B. INTEGER
C. VARCHAR
D. BLOB
> [!success]- 答案与解析
> **答案:A**
> [!note] 教学提示
> SQLite 支持五种存储类型:NULL、INTEGER、REAL、TEXT、BLOB。VARCHAR 不是 SQLite 原生支持的存储类型名称。
13. 可以进行分层布局的容器是()。
A. FrameLayout
B. LinearLayout
C. RelativeLayout
D. TableLayout
> [!success]- 答案与解析
> **答案:B**
14. 下列选项中,用于获取数据库记录的语句是()。
A. rawQuery
B. select
C. query
D. delete
> [!success]- 答案与解析
> **答案:B**
15. Android 中实现单例模式的正确方式是()。
A. 将构造方法设为 private
B. 将类设为 abstract
C. 只能使用静态工厂方法
D. 以上都可以
> [!success]- 答案与解析
> **答案:D**
16. 以下关于 Activity 生命周期的描述,正确的是()。
A. Activity 处于前台时完全可见
B. Activity 不可见但在后台运行
C. Activity 被系统回收前调用 onDestroy
D. Activity 不可见,用户不可交互
> [!success]- 答案与解析
> **答案:B**
17. 判断下面代码的输出结果是()。
> [!note] 教学提示
> 本题考查 Android Activity 启动流程的理解,需结合 Intent 和生命周期回调顺序进行分析。
> [!success]- 答案与解析
> **答案:B**
18. Intent 是 Android 系统提供的消息传递机制。下列哪个方法能启动其他应用的 Activity?
A. Intent.ACTION_DIAL
B. Intent.ACTION_CALL
C. Intent.ACTION_SENDTO
D. Intent.ACTION_VIEW
> [!success]- 答案与解析
> **答案:B**
19. putExtra() 方法用于向 Intent 中添加附加信息。下列哪个方法能够读取 Intent 中附加的字符串类型数据?
A. getExtra()
B. getStringExtra()
C. getData()
D. getString()
> [!success]- 答案与解析
> **答案:C**
20. Bundle 类的()方法可以返回所有 key 的集合。
A. getKeys()
B. getString()
C. getStringExtra()
D. toString()
> [!success]- 答案与解析
> **答案:A**
### 二、填空题(每题 2 分,共 20 分)
> [!note] 教学提示
> 填空题重点考查 Activity 间数据传递、广播接收者配置、有序广播发送以及 SQLite 数据库操作等实践技能。
**1. Activity 间数据传递**
如果 Activity_A 启动 Activity_B 并等待其执行结果时,代码片段如下:
```java
Intent intent = new Intent(Activity_A.this, ①);
Bundle bundle = new Bundle();
bundle.putString("name", "我是string");
intent.putExtras(bundle);
②;
```
> [!success]- 答案与解析
> - ① Activity_B.class
> - ② startActivityForResult(intent)
**2. 广播接收者配置**
如下代码实现一个广播接收者 `kp.adver.receiver`,接收权限为 20 的有序广播,请完成下面代码。
```xml
<receiver android:name="MyReceiver">
③
<intent-filter>
④
<action android:name="kp.adver.receiver"/>
</intent-filter>
</receiver>
```
> [!success]- 答案与解析
> - ③ `<action>`
> - ④ android:name="kp.adver.receiver"
**3. 发送有序广播**
下面是向上清单发送广播并附带消息的代码片段,请完成主要代码。
```java
Intent intent = new Intent();
⑤
intent.putExtra("msg", "来自 kp的消息");
⑥
```
> [!success]- 答案与解析
> - ⑤ intent.setAction("kp.adver.receiver")
> - ⑥ sendOrderedBroadcast(intent, null)
**4. 联系人数据访问**
向通讯录的多个联系人可以通过以下方式来实现:
```java
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("content://com.android.contacts/contacts"));
startActivity(intent);
```
**5. 数据库插入操作**
下面代码片段完成向数据库表添加一条记录,请完善:
```java
DBOpenHelper helper = new DBOpenHelper(getApplicationContext(), "test.db", null, DB_VERSION);
SQLiteDatabase db = helper.getWritableDatabase();
Person person = new Person();
person.setName("wustzz");
person.setAge(24);
db.⑦("person", null, new Person[]{person.name, person.age});
db.close();
```
> [!success]- 答案与解析
> - ⑦ insert(插入操作)
### 三、判断题(每题 2 分,共 20 分)
> [!note] 教学提示
> 判断题覆盖 Android 应用组件、Activity 生命周期、数据存储等核心概念,正确写 T,错误写 F。
1. > [!success]- 答案与解析
> **答案:F**
2. > [!success]- 答案与解析
> **答案:F**
3. > [!success]- 答案与解析
> **答案:T**
4. > [!success]- 答案与解析
> **答案:T**
5. > [!success]- 答案与解析
> **答案:F**
6. > [!success]- 答案与解析
> **答案:F**
7. > [!success]- 答案与解析
> **答案:T**
8. > [!success]- 答案与解析
> **答案:F**
9. > [!success]- 答案与解析
> **答案:T**
10. > [!success]- 答案与解析
> **答案:T**
### 四、程序设计题(30 分)
> [!note] 教学提示
> 本题考查 SimpleAdapter 的使用,是 Android UI 开发中适配器模式的典型应用。
**使用 SimpleAdapter 为 ListView 创建适配器,绑定数据源。**
> [!success]- 答案与解析
> **主要步骤:**
>
> 1. 创建 `List<Map<String, Object>>` 数据结构
> 2. 遍历 `names` 数组,为每个 item 添加 `header`、`personName`、`desc`
> 3. 创建 SimpleAdapter 并设置给 ListView
>
> ```java
> // 创建数据源
> List<Map<String, Object>> list = new ArrayList<>();
> String[] names = {"张三", "李四", "王五"};
>
> for (String name : names) {
> Map<String, Object> map = new HashMap<>();
> map.put("header", R.drawable.ic_launcher); // 头像
> map.put("personName", name); // 姓名
> map.put("desc", "这是一段描述文本"); // 描述
> list.add(map);
> }
>
> // 创建 SimpleAdapter
> SimpleAdapter adapter = new SimpleAdapter(
> this,
> list,
> R.layout.list_item, // 布局文件
> new String[]{"header", "personName", "desc"},// 数据 key
> new int[]{R.id.iv_header, R.id.tv_name, R.id.tv_desc} // 对应 View ID
> );
>
> // 设置适配器
> listView.setAdapter(adapter);
> ```
> [!tip] 解题技巧
> SimpleAdapter 的构造函数参数较多,需重点掌握:数据源、布局文件、数据 key 数组、对应 View ID 数组的对应关系。
### 五、简答题(每题 5 分,共 30 分)
**1. 简述 MV 指令与 LDR 指令的异同**
> [!success]- 答案与解析
> MV 指令将半字数据从一个寄存器传送到另一个寄存器;LDR 指令用于从内存中读取数据到寄存器。
>
> | 指令 | 操作数类型 | 功能 |
> |:----:|:--------:|:----:|
> | MV | 寄存器 → 寄存器 | 数据传送 |
> | LDR | 内存 → 寄存器 | 数据加载 |
**2. 简述 CPSR 各状态位定义及功能**
> [!success]- 答案与解析
> CPSR(当前程序状态寄存器)是一个 32 位寄存器,位域定义如下:
>
> | 位域 | 范围 | 功能 |
> |:----:|:----:|:----:|
> | N | [31] | 负数标志,运算结果为负时置 1 |
> | Z | [30] | 零标志,运算结果为零时置 1 |
> | C | [29] | 进位标志,加法产生进位/减法无借位时置 1 |
> | V | [28] | 溢出标志,运算溢出时置 1 |
> | I | [7] | IRQ 中断禁止位,置 1 时禁止 IRQ |
> | F | [6] | FIQ 中断禁止位,置 1 时禁止 FIQ |
> | T | [5] | Thumb 状态位,为 1 时处理器处于 Thumb 状态 |
> | M[4:0] | [4:0] | 处理器模式位,指示当前工作模式 |
**3. 简述嵌入式系统定义及特点**
> [!success]- 答案与解析
> 嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。
>
> 特点:
> - 专用性强,针对特定任务定制
> - 资源受限,CPU、内存、存储有限
> - 实时性要求高,需在规定时间内响应
> - 软硬件协同设计,需考虑功耗和成本
**4. 简述 μC/OS-II 中任务调度的相关函数及作用**
> [!success]- 答案与解析
> | 函数 | 功能 |
> |:----:|:----:|
> | OSTaskCreate() | 创建新任务 |
> | OSTaskDel() | 删除指定任务 |
> | OSTaskSuspend() | 挂起任务 |
> | OSTaskResume() | 恢复被挂起的任务 |
> | OSTimeDly() | 延时指定时钟节拍数 |
> | OSTimeDlyHMSM() | 按时分秒延时 |
> | OSTaskChangePrio() | 改变任务优先级 |
> | OSTaskSwInit() | 初始化任务切换 |
> [!note] 教学提示
> μC/OS-II 是一个抢占式实时操作系统,任务调度基于优先级。掌握这些 API 函数对于理解 RTOS 的任务管理机制至关重要。
### 六、设计题(每题 15 分,共 30 分)
**1. 用 ARM 汇编代码实现以下 C 程序段**
```c
if(a >= 100)
x = 1;
else
y = 1;
```
> [!success]- 答案与解析
> ```assembly
> CMP R0, #100 ; 比较 R0 和 100
> MOVGE R1, #1 ; 若 R0 >= 100,R1 = 1 (x = 1)
> MOVLT R2, #1 ; 若 R0 < 100,R2 = 1 (y = 1)
> ```
> [!note] 教学提示
> ARM 条件执行是其指令集的重要特性。`GE` 表示大于或等于(Greater or Equal),`LT` 表示小于(Less Than)。通过条件码可以避免使用跳转指令,提高流水线效率。
**2. 从 ARM 处理器结构特点分析其对智能移动终端的支持**
> [!success]- 答案与解析
> ARM 处理器的设计极大地推动了智能移动终端的发展,主要体现在:
>
> - **RISC 架构**:采用精简指令集,指令执行效率高,且功耗极低,非常适合依靠电池供电的移动设备
> - **Thumb 指令集**:提供 16 位指令格式,大幅提高代码密度,减少对存储空间的需求
> - **多级流水线技术**:如 ARM9 的 5 级流水线,提高指令执行效率和吞吐量
> - **低功耗管理模式**:支持 Idle、Power-down 等多种低功耗模式,延长电池续航
> - **丰富的片上外设集成**:ARM 核心配合 SoC 设计,集成 Wi-Fi、蓝牙、图形加速等控制器,缩小设备体积
> - **开放的生态与标准**:IP 授权模式允许厂商定制芯片,促进移动终端多样化发展
## 关联笔记
- [[试题5]]
- [[试题6]]
- [[ARM体系结构]]
- [[μC/OS-II操作系统]]