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

14 KiB
Raw Blame History

tags, create time
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 并等待其执行结果时,代码片段如下:

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 的有序广播,请完成下面代码。

<receiver android:name="MyReceiver">
    ③
    <intent-filter>
        ④
        <action android:name="kp.adver.receiver"/>
    </intent-filter>
</receiver>

[!success]- 答案与解析

  • ③ <action>
  • ④ android:name="kp.adver.receiver"

3. 发送有序广播

下面是向上清单发送广播并附带消息的代码片段,请完成主要代码。

Intent intent = new Intent();
⑤
intent.putExtra("msg", "来自 kp的消息");
⑥

[!success]- 答案与解析

  • ⑤ intent.setAction("kp.adver.receiver")
  • ⑥ sendOrderedBroadcast(intent, null)

4. 联系人数据访问

向通讯录的多个联系人可以通过以下方式来实现:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("content://com.android.contacts/contacts"));
startActivity(intent);

5. 数据库插入操作

下面代码片段完成向数据库表添加一条记录,请完善:

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
// 创建数据源
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 程序段

if(a >= 100)
    x = 1;
else
    y = 1;

[!success]- 答案与解析

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 授权模式允许厂商定制芯片,促进移动终端多样化发展

关联笔记