☰
HarmonyOS 应用开发者高级认证备考笔记
2026/11/3 10:50:14 网站建设 项目流程

这篇把 HarmonyOS 应用开发者高级认证(理论考试)的备考内容压成一页:十组必背对比、四条生命周期、35 条高频易错判断、自编自测 12 题。考试规则以华为开发者学堂官方页面为准。

本文首发于我的个人博客,本页为转载,原文链接:https://liupeng.icu/2026/11/02/2026-11-02-harmonyos-advanced-cert-notes/

考试信息
项目数值
时长60 分钟
满分 / 及格100 / 80
考试次数每月 3 次
形式在线客观题(判断 / 单选 / 多选)
前置实名认证

及格线是 80 分,多选题通常分值更高且少选错选都不给分,所以别空题,也别说"多选我只敢选一个"——那是策略,不是妥协。


一、ArkTS 与 TypeScript 的差异(禁用清单)

ArkTS 为了编译期能确定对象布局、便于 AOT,砍掉了 TypeScript 里一大票动态特性。这一节几乎每年必考,判断题直接命中。

一禁类型:any、unknown 二禁声明:var(只能 let / const) 三禁动态:运行时增删属性、obj["key"] 动态索引、delete、in(用 instanceof 替代) 四禁反射与元编程:prototype、eval、with、Function.apply/call/bind、TS 实验性装饰器

替代方案记住四个词:明确类型、联合类型、泛型、Map。类型兼容要用名义类型,即显式implements/extends,光长得一样不算。

二、@State/@Prop/@Link
装饰器数据源方向一句话
@State组件自身自身 ↔ UI私有状态,只观察第一层
@Prop父组件父 → 子单向子组件改了不回传,对象是深拷贝
@Link父组件父 ↔ 子双向父用$传引用,子不能本地初始化

延伸三个:跨层级用@Provide+@Consume(双向);观察嵌套对象用@Observed+@ObjectLink;变化监听 V1 用@Watch、V2 用@Monitor。

Storage 一族按作用域记:AppStorage 是应用级内存,PersistentStorage 是应用级持久化,LocalStorage 是页面级。带Link的双向,带Prop的单向。

三、状态管理 V1 → V2 对照
V1V2
@Component@ComponentV2
@State@Local
@Prop@Param(配@Once)
@Link@Param+@Event
@Provide/@Consume@Provider/@Consumer
@Observed+@ObjectLink@ObservedV2+@Trace
@Watch@Monitor
—@Computed(有缓存,依赖变了才重算)

硬规则:V1 和 V2 不混用。@Param是只读的,想改就得通过@Event回调父组件,这是 V2 的单向数据流。

四、TaskPool 与 Worker
对比TaskPoolWorker
级别任务级线程级
线程管理自动手动
适合短时、独立、CPU 密集长时、常驻、频繁通信
装饰器@Concurrent—
通信参数 / 返回值postMessage/onmessage
数量由任务池调度,优先级 HIGH/MEDIUM/LOWAPI 12+ 最多 64 个,旧版 8 个

两者共同点:都是 Actor 模型,内存隔离,都不能更新 UI(UI 只在主线程改)。

@Concurrent修饰的函数四条限制:不能用闭包变量、不能用this、不能操作 UI、参数和返回值要可序列化。跨线程共享对象用@Sendable,普通对象默认是序列化拷贝,不是共享引用。

五、HAR、HSP、HAP
对比HARHSP
类型静态共享包动态共享包
共享时机编译时打进 HAP运行时共享
能否独立安装运行否否
典型用途公共组件、工具多 HAP 复用、压包体积

依赖关系一张图:

App Pack(.app,上架) ├─ entry.hap(主模块) └─ feature.hap(可选功能模块) HAP → HAR / HSP HAR → HAR / HSP HSP → HAR / HSP HAP ✗→ HAP 共享包:✗ 循环依赖,✗ 依赖传递

.app用于上架,.hap用于安装运行;两种共享包都不能独立跑。

六、router 与 Navigation
对比routerNavigation
官方态度旧方案,新应用不推荐推荐
页面栈系统管理NavPathStack
页面载体@EntryNavDestination
多端较弱支持 Stack / Split / Auto 分栏
系统路由表不支持支持(router_map.json)

题干出现"推荐"就选 Navigation。

七、数据存储选型
方案类型分布式场景
Preferences轻量键值否少量配置、开关、token
RDB关系型(SQLite)否复杂查询、事务、大量结构化数据
KV Store键值数据库是跨设备键值数据
分布式数据对象内存对象是多设备实时协同

两个细节:Preferences.put()之后要flush()才落盘;RDB 的ResultSet用完要close()。

八、Stage 模型与 FA 模型
对比StageFA
核心单元UIAbility/ExtensionAbilityAbility/AbilitySlice
是否推荐是否
窗口WindowStageAbilitySlice 栈

启动模式默认是singleton(重复拉起复用实例并触发onNewWant),其余还有 multiton、specified。

九、自适应布局与响应式布局
类型手段
自适应布局拉伸、均分、占比、缩放、隐藏
响应式布局断点、栅格、媒体查询、资源限定词

断点必背:sm 320–599 / md 600–839 / lg 840–1439 / xl ≥ 1440(vp);栅格默认12 列;长度用 vp、字体用 fp。

一次开发多端部署是三层架构:UI 层 + 功能层 + 基础层,不是"一套布局到处拉伸"。

十、权限类型
类型授予方式示例
system_grant安装时自动授予,只需声明INTERNET、KEEP_BACKGROUND_RUNNING
user_grant运行时动态申请CAMERA、MICROPHONE、LOCATION、相册、DISTRIBUTED_DATASYNC

user_grant三步:声明 → 填 reason / usedScene →requestPermissionsFromUser。光声明不会自动授权。


四条生命周期

自定义组件:

aboutToAppear → build → onDidBuild →(销毁)aboutToDisappear 复用场景:aboutToReuse / aboutToRecycle

页面(仅@Entry):onPageShow/onPageHide/onBackPress。注意onPageShow每次显示都会触发,不是只跑一次;一个页面也只能有一个@Entry。

UIAbility(顺序必背):

onCreate → onWindowStageCreate → onForeground → onBackground → onWindowStageDestroy → onDestroy

loadContent写在onWindowStageCreate,不是onCreate——先有 Ability,再有窗口。

AVPlayer 状态机:

idle → initialized(设源)→ prepared(prepare) → playing ↔ paused → completed → stopped → released

用完必须release()。


35 条高频易错判断

能一眼说出"为什么错",判断题就稳了。

#说法判断理由
1ArkTS 支持any和unknown✗明确禁用,用联合类型/泛型/明确类型
2ArkTS 可以用var声明变量✗只能let/const
3ArkTS 支持结构化类型✗名义类型,要显式implements/extends
4ArkTS 可以运行时给对象加属性✗对象布局编译期固定
5ArkTS 支持delete和in✗都不支持
6ArkTS 支持Function.apply/call/bind✗均不支持
7@State能观察对象的所有嵌套属性✗V1 只观察第一层,深层用@Observed/@ObjectLink或 V2
8@Prop是双向同步✗单向,父 → 子
9@Link可以由子组件本地初始化✗必须由父组件用$传入
10@Provide/@Consume只能父子直传✗可跨层级
11@ObjectLink必须由父组件传入✓不能在子组件本地初始化
12@StorageProp是双向同步✗单向,@StorageLink才双向
13@ComponentV2可以使用@State✗V1/V2 不混用
14@Param在子组件中可以随意修改✗只读,通过@Event回调
15@Computed每次访问都重新计算✗有缓存,依赖变化才重算
16@Entry页面可以有多个✗一个页面只能有一个
17onPageShow只执行一次✗每次显示都可能触发
18UIAbility 先onCreate后onWindowStageCreate✓先有 Ability,后有窗口
19loadContent应放在onCreate✗应放在onWindowStageCreate
20默认启动模式是 singleton✓重复拉起复用实例,触发onNewWant
21HAP 可以依赖另一个 HAP✗HAP 之间不能互相依赖
22HAR 是运行时共享包✗HAR 是编译时静态共享包
23HSP 可以独立安装运行✗跟随宿主应用发布
24HAR/HSP 支持依赖传递✗都不支持循环依赖和依赖传递
25TaskPool 自动管理线程✓Worker 才需要手动管理
26@Concurrent函数可以使用闭包变量✗只能用入参和 import 的常量/模块
27TaskPool 任务中可以直接更新 UI✗UI 只能在主线程更新
28Worker 最多创建 64 个(API 12+)✓旧版本是 8 个
29普通对象跨线程是共享引用✗默认序列化拷贝,@Sendable才共享
30Preferences 支持分布式同步✗跨设备用 KV Store / 分布式数据对象
31RDB 支持 SQL 和事务✓基于 SQLite
32分布式软总线就是云同步✗主要是近场可信设备互联
33一次开发多端部署就是一套布局到处拉伸✗三层架构 + 自适应 + 响应式 + 资源适配
34卡片可以常驻后台执行长时任务✗卡片能力受限,不能常驻
35长时任务不需要权限✗需要对应类型和KEEP_BACKGROUND_RUNNING等权限

数字速记
数字含义
60 / 100 / 80 / 360 分钟、满分 100、80 及格、每月 3 次
64 / 8Worker 上限:API 12+ 是 64,旧版是 8
320 / 600 / 840 / 1440断点边界(vp)
12栅格默认列数
3TaskPool 优先级 HIGH/MEDIUM/LOW
1×2、2×2、2×4、4×4常见卡片尺寸

自测 12 题(自编模拟,非官方真题)

下面这些是我按官方文档自己出的练习,不是考试原题,也不要拿去找"题源"——认证考试题目本身有保密要求,真正能帮到你的是把每个选项的对错理由说清楚。

判断

  1. ArkTS 里可以用obj["propName"]在运行时动态读写普通对象的属性。
  2. @Link修饰的变量可以在子组件里写默认值。
  3. HAR 与 HSP 都不支持循环依赖。
  4. 声明了user_grant权限后,安装时就会自动获得授权。

单选

  1. 需要在不相关的跨层级组件间共享并可双向修改状态,应选:
    A.@PropB.@Provide+@ConsumeC.@StateD.@Watch
  2. 要把一段耗时的数组计算放到后台且不常驻,最合适的是:
    A. Worker B. TaskPool C. 主线程setTimeoutD. 卡片
  3. loadContent()应该写在:
    A.onCreateB.onWindowStageCreateC.onForegroundD.aboutToAppear
  4. 上架应用市场提交的包格式是:
    A..hapB..harC..appD..zip

多选

  1. 关于@Concurrent修饰的函数,正确的有:
    A. 不能使用闭包变量 B. 不能使用thisC. 可以直接更新 UI D. 参数与返回值需可序列化
  2. 跨设备数据同步可以用下面哪些方案?
    A. Preferences B. KV Store C. 分布式数据对象 D. RDB
  3. 属于响应式布局手段的有:
    A. 断点 B. 栅格 C. 拉伸 D. 媒体查询
  4. Stage 模型里 UIAbility 的启动模式包括:
    A. singleton B. multiton C. specified D. shared

参考答案与理由

  1. ✗ ArkTS 禁止运行时动态索引普通对象,要映射就用Map。
  2. ✗@Link必须由父组件用$传引用,子组件不能本地初始化。
  3. ✓ HAR、HSP 都不支持循环依赖,也不支持依赖传递。
  4. ✗user_grant必须运行时requestPermissionsFromUser动态申请。
  5. B@Provide/@Consume可跨层级且双向。
  6. B 短时独立任务用 TaskPool,常驻或频繁通信才 Worker。
  7. B 先有 Ability 再有窗口,loadContent在onWindowStageCreate。
  8. C.app上架,.hap安装运行。
  9. ABD 并发任务里绝对不能碰 UI。
  10. BC Preferences 与 RDB 不具备分布式同步能力。
  11. ABD 拉伸属于自适应布局,不是响应式布局。
  12. ABC 默认 singleton。

考场策略
  1. 60 分钟做 50–60 题,平均一分钟一题,给多选题留 20 分钟。
  2. 先易后难,不会的先标记,交卷前一定回看。
  3. 多选题宁缺毋滥,只选有把握的;错选整题没分。
  4. 看到"所有、任意、无需、直接、完全、一定"这类绝对化表述,先怀疑。
  5. 看到"推荐":路由选 Navigation,应用模型选 Stage,短任务选 TaskPool、长任务选 Worker。
  6. 看到"跨层级"想 Provide/Consume,看到"嵌套对象"想 Observed/ObjectLink。
  7. 不要空题,判断题闭眼选也比留空强。

参考

HarmonyOS 应用开发者高级认证-理论考试 - 华为开发者学堂

ArkTS 语言介绍 - 华为开发者

TaskPool 与 Worker 的区别 - 华为开发者

一次开发多端部署 - 华为开发者

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询