HarmonyOS 高级认证 · ArkTS 判断速刷 97 题(订正版)

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

说明:题目由本人备考时整理,答案已逐条对照华为 / OpenHarmony 官方文档核对;它不是官方真题原文,存疑题号已在文中单独标注,请以当期官方文档为准。

这份是把我备考时刷的 97 道 ArkTS 判断题整理成的一份速刷清单,题目来自我自己的一次复习对话记录,再逐条对着华为 / OpenHarmony 官方文档核对答案。它不是官方真题原文,认证考试有答题保密约定,所以对外我只叫它「考点速刷」;但每一条的判断和理由我都按当期文档重新核过一遍,可以直接当自测表用。

系统性的知识梳理见另一篇备考笔记,本篇只做「一句话判断 + 一句话理由」的高密度版。

先说订正了什么

原始题库里有 1 条答案判错、4 条表述有歧义、12 条我暂时无法独立确认。发布前已经全部改掉或标注,刷题时按订正后的版本记。

类型题号处理
答案判错,已订正44生命周期那条改成「错误」,并写清 UIAbility 与 FA 模型 Ability 的区别
表述绝对化,已改写34、41、50、1收窄措辞或补上真正的规则,避免记成「一律如此」
存疑,已标注6、12、23、24、29、31、46、51、60、74、89、96保留原判断,但注明「以官方当期文档为准」,别当结论背

另外整套题混了不同 API 版本的规则(第 7 题就是 API 21 才放开的新限制),考试以当期考纲为准,刷题时留意版本。

一、后台任务、线程、Worker、Native 子进程
  1. 需要在后台运行的耗时任务只在所有线程都空闲时才触发执行。
    判断:正确。taskpool 的 IDLE 优先级就是给后台耗时任务用的,只在空闲时执行。原题还有半句「同一时间仅有一个同 IDLE 优先级任务执行」,这半句我在官方文档里没找到原句,按前半句判断即可。
  2. Worker 线程支持同步调用主线程接口。
    判断:错误。Worker 与主线程通过 postMessage 异步通信,不支持同步调用。
  3. entry 模块中引入 HAR 包内的 Worker 对象,路径写成 har/ets/workers/Worker.ets。
    判断:正确。跨包引用 Worker 时要带上模块名。
  4. NativeChildProcess_MainProc 返回后子进程不会自动退出,需要手动调用终止接口。
    判断:错误。MainProc 返回后子进程自动退出。
  5. 回调 onProcessStart 在主线程运行,不需要考虑线程同步。
    判断:错误。回调运行在子进程自己的线程里,跨进程交互必须考虑同步。
  6. NativeChildProcess_OnConnect 的执行优先于 NativeChildProcess_MainProc。
    判断:原题判正确(存疑)。OnConnect 是客户端发起连接时的 IPC 回调,常规实现里 MainProc 反而更早,先后顺序请以当期 NativeChildProcess 文档和示例为准。
  7. 应用退到后台申请长时间任务,同一 UIAbility 同一时刻最多支持两个长时任务(API 20 及之前)。
    判断:错误。API 20 及之前一个 UIAbility 同一时刻最多持有 1 个长时任务,API 21 才放宽到最多 10 个。
  8. 主线程与其他线程存在大量数据交互时,可以用 @Unsafe 装饰器做线程间传递与同步。
    判断:错误。并发 Actor 模型用的是 @Sendable,没有 @Unsafe 这个装饰器。
  9. Actor 并发模型支持传输 Serializable 对象。
    判断:错误。Actor 消息传递支持 Sendable、Transferable;Serializable 是持久化用的,不能作为 Actor 传参。
二、ArkUI 状态管理 V2(@ObservedV2 / @Trace / @Param / @Provide / @Consume)
  1. V2 里用 @Attrs 装饰的属性变化能触发 UI 刷新。
    判断:错误。V2 的响应式是 @ObservedV2 + @Trace,没有 @Attrs 这套。
  2. 嵌套类的属性被 @Trace 装饰,且该嵌套类被 @ObservedV2 装饰时,才具备触发 UI 刷新的能力。
    判断:正确。两层条件缺一不可。
  3. @ObservedV2 实例目前不支持 JSON 序列化。
    判断:原题判正确(存疑)。V2 代理对象在序列化上确实有限制,但具体范围以状态管理 V2 文档为准。
  4. 被 @Trace 装饰的属性变化时,只会通知与该属性关联的组件刷新。
    判断:正确。这就是 V2 的精准更新,按属性粒度刷新依赖节点。
  5. 未被 @Trace 装饰的属性变化也能触发 UI 刷新。
    判断:错误。V2 只有 @Trace 标记的属性变更才驱动 UI。
  6. V2 的双向绑定用 !! 语法糖,自定义组件的双向绑定通过 @Param + @Event 组合实现。
    判断:正确。
  7. @Provide / @Consume 摆脱逐层传参,可以跨层级传递数据。
    判断:正确。
  8. @Provide / @Consume 能实现祖先与后代组件的双向数据同步。
    判断:正确。两者是同一份状态的双向绑定。
  9. @Provide / @Consume 可以在多层级父子组件之间传递状态。
    判断:正确。
  10. @Provide 装饰的变量写在后代组件、@Consume 写在祖先组件。
    判断:错误。方向正好相反:@Provide 在祖先侧提供,@Consume 在后代侧消费。
  11. 只要参数同时包含按值传递和按引用传递,状态变量改变就不会触发动态渲染。
    判断:错误。传递方式本身不是不刷新的原因,问题出在装饰器和属性层级。
  12. 用对象字面量传对象,只修改对象的深层属性,不会触发 UI 刷新。
    判断:正确。没有 @Trace 标记深层属性、又没替换引用,V2 感知不到。
  13. 传入两个以上对象字面量时,修改深层属性就一定能刷新 UI。
    判断:错误。数量不改变结论,深层属性照样不触发刷新。
三、DevEco Previewer 预览
  1. @StorageProp 装饰的属性可以在 Previewer 正常预览 UI,但 AppStorage 的同步逻辑在预览器里不生效。
    判断:原题判正确(存疑)。预览器的能力边界随 DevEco Studio 版本变化,以当期文档为准。
  2. @StorageLink 装饰的属性同上。
    判断:原题判正确(存疑)。与第 23 题同一组限制。
  3. @Link 装饰的子组件可以直接单独预览。
    判断:错误。@Link 依赖父组件传入的绑定,单独预览会初始化失败,要预览父组件。
  4. @Consume 装饰的子组件可以直接单独预览。
    判断:错误。@Consume 依赖祖先的 @Provide,单独预览取不到状态。
  5. 组件内部调用了 C++ SO 库,仍然能在 Previewer 正常预览。
    判断:错误。预览器不支持 Native SO 调用。
  6. DevEco 本地模拟器用于在个人电脑上模拟鸿蒙环境,方便应用与服务调试。
    判断:正确。
  7. macOS 运行 DevEco 本地模拟器,系统版本至少 12.5。
    判断:原题判正确(存疑)。数值请查官方环境要求表格,别靠记忆。
  8. DevEco 本地模拟器可以跑在虚拟机里以节省硬件资源。
    判断:错误。官方不支持虚拟机嵌套运行模拟器。
  9. Mac 运行本地模拟器推荐至少 8G 内存。
    判断:原题判正确(存疑)。同第 29 题,以官方配置要求为准。
四、组件、布局、弹窗、LazyForEach、FrameNode
  1. Flex 布局要让子元素在交叉轴方向拉伸填充,设置 alignItems: ItemAlign.Stretch。
    判断:正确。
  2. 输入框自定义键盘使用 customKeyboard 接口。
    判断:正确。
  3. List 组件自带复用池,只支持当前页面内节点复用。
    判断:正确(已改写)。List/Grid 的内置复用池是页面级,随页面销毁;需要跨页面复用时,自己用 BuilderNode + NodePool 或 @Reusable 维护缓存池。
  4. FrameNode.isModifiable() 用来判断当前节点能否设置属性、修改子节点。
    判断:正确。
  5. 用 componentContent 形式创建 CustomDialog 可以解耦 UI,并支持动态更新弹窗内容。
    判断:正确。
  6. updateCustomDialog 更新弹窗属性时,未传的参数会保留原有值。
    判断:错误。未设置的属性会被重置为默认值。
  7. 想同时操作弹窗内部和外部控件,必须把 isModal 设为 false。
    判断:正确。isModal = true 时外部不可交互。
  8. keyboardAvoidMode.Default 可启用弹窗自动避让软键盘。
    判断:正确。
  9. LazyForEach 生效条件:数据源实现 IDataSource、每项 key 唯一、超出可视区域的节点被回收。
    判断:正确。
  10. 优先用自定义组件代替 @Builder 做 UI 复用是官方推荐方案。
    判断:错误。官方的口径更接近「轻量、无状态的 UI 复用优先 @Builder,开销更小;需要独立状态、生命周期或复用池的场景再用自定义组件(可配合 @Reusable)」,不是绝对的二选一。
五、UIAbility、Want、任务栈、生命周期、HAR / HSP / HAP
  1. 多模块工程里 feature 模块要用公共 library HAR,在 oh-package.json5 的 dependencies 里配置。
    判断:正确。
  2. 构建 HAR 静态共享包:选中 HAR 模块 → Build → Make Module。
    判断:正确。
  3. UIAbility 的生命周期回调包含 onCreate、onStart、onBackground、onStop、onDestroy。
    判断:错误(本卷唯一大坑)。这是 Stage 模型与 FA 模型混在一起的说法。Stage 模型的 UIAbility 是 onCreate → onWindowStageCreate → onForeground →(onNewWant)→ onBackground → onWindowStageDestroy → onDestroy,另有 onContinue;onStart / onStop / onActive / onInactive 属于 FA 模型的 Ability,不是 UIAbility 的回调。
  4. multiton 启动类型的 UIAbility 每次启动都新建任务卡片,singleton 复用同一个任务卡片。
    判断:正确。
  5. 先启动 UIAbility1(multiton)再返回销毁,启动 UIAbility2(singleton)再返回销毁,再启动一次 UIAbility2 再返回销毁,多任务列表里能看到 2 个任务视图。
    判断:原题判正确(存疑)。这是实测类结论,需要真机或官方示例佐证,别当规律背。
  6. Want 隐式启动 UIAbility 时没有匹配到组件,启动失败。
    判断:正确。
  7. Want 隐式启动只匹配到一个满足条件的 Ability,直接启动它。
    判断:正确。
  8. Want 隐式启动匹配到多个 UIAbility 时,系统直接选第一个启动。
    判断:错误。多个匹配时系统会拉起选择框,由用户指定。
  9. Want 隐式启动匹配到多个 UIAbility 时直接启动失败。
    判断:错误。正确行为就是第 49 题的理由:多个匹配项交给用户选择,不会失败。
  10. 动态 HSP 与宿主应用的包名、进程、生命周期保持一致;动态 HAP 不可以和宿主包一起打包发布。
    判断:原题判正确(存疑)。这组术语容易记混,建议直接对照「动态加载 HAP / HSP」原文再定。
六、Web 组件、JS 桥、鼠标事件、ContextMenu
  1. Web 组件的 mixedMode() 用于允许网页加载 HTTP 链接。
    判断:正确。
  2. WebView 通过 JSBridge 通道访问扩展的原生 API(Hybrid)。
    判断:正确。
  3. 同层渲染可以让 H5 里渲染原生组件,解决层级覆盖问题。
    判断:正确。
  4. Hybrid 应用的界面与业务逻辑可复用 Web 生态:HTML + CSS 绘制界面,JS 编写业务逻辑。
    判断:正确。
  5. Web 组件 loadUrl 加载网络页面,loadData 加载 HTML 文本字符串。
    判断:正确。
  6. 鼠标事件在 ArkUI 里会先做碰撞(命中)测试再回调响应,鼠标左键还会额外生成一份触摸事件。
    判断:正确。
  7. 鼠标事件收到后不做任何处理,直接传递给上层应用。
    判断:错误。要经过命中测试、分发、回调冒泡。
  8. onContextMenuShow 回调返回的结果类型是 WebContextMenuResult。
    判断:正确。
  9. WebContextMenuResult 里有 pasteAndMatchStyle 方法。
    判断:原题判错误(存疑)。这是接口表细节,请查 Web 组件接口清单确认。
  10. Web 与 ArkTS 的 JS 桥接,最常用的是 registerJavaScriptProxy。
    判断:正确。
七、AppLinking、跨设备拖拽、意图共享
  1. AppLinking 在 appLinkingOnly = false 且目标应用已安装时,直接跳转打开目标应用。
    判断:正确。
  2. AppLinking 在 appLinkingOnly = true 且目标应用已安装时,直接跳转打开目标应用。
    判断:正确。
  3. AppLinking 在 appLinkingOnly = true 且目标应用未安装时,返回失败、系统不跳转,交给应用自行处理。
    判断:正确。
  4. 跨设备拖拽要求两端设备登录同一个华为账号。
    判断:正确。
  5. 跨设备拖拽要求两端打开 WiFi、蓝牙并接入同一局域网。
    判断:正确。
  6. 所有资源文件都支持跨设备拖拽。
    判断:错误。部分资源不支持,例如 HAP 预置资源。
  7. 跨设备拖拽需要打开键鼠穿越开关。
    判断:正确。
  8. 端侧意图共享不能同时构建多个意图对象分发。
    判断:错误。支持批量构造多个意图对象分发。
八、数据库、IAP、文档扫描、ConnectivityKit 蓝牙
  1. 键值型数据库和关系型数据库都支持备份与恢复,键值型还支持删除备份文件释放本地空间。
    判断:正确。
  2. 文档扫描能力从 MediaLibraryKit 导入,用于媒体库文档资源扫描管理。
    判断:错误。文档扫描属于 VisionKit。
  3. SpeechKit 提供语音转文档扫描功能。
    判断:错误。SpeechKit 是语音识别与语音合成,不做文档扫描。
  4. 用户 IAP 购买成功后,应用客户端向应用服务上报 purchase 订单数据。
    判断:正确。
  5. ConnectivityKit 的 Connection 模块只负责蓝牙连接管理,不负责蓝牙开关控制和数据收发。
    判断:原题判正确(存疑)。蓝牙能力在 @ohos.bluetoothManager 与 Connectivity Kit 之间的具体划分需要核对当期文档。
九、代理提醒、未成年人模式
  1. 代理提醒适合长时间后台、用户可感知的任务(音乐播放、导航),防止进程被系统挂起。
    判断:正确。
  2. 系统未成年人模式关闭时,用户可以在应用内开启系统的未成年人模式。
    判断:错误。应用不能控制系统总开关,只能控制应用内自身的未成年人模式。
  3. 系统未成年人模式开启时,应用跟随系统进入未成年人模式。
    判断:正确。
  4. 系统未成年人模式关闭时,用户可以在应用内单独开启应用自身的未成年人模式。
    判断:正确。
  5. 应用内开启未成年人模式后,可以在应用内关闭系统级未成年人模式。
    判断:错误。应用无权控制系统全局开关。
十、事件订阅、NAPI、Promise、Crash 定位、混淆、工程化
  1. EventHub 取消事件订阅用 off()。
    判断:正确。
  2. NAPI 中 napi_callback_info 用于获取 JS 侧传入的参数,napi_callback 是回调函数类型,async_complete_callback 用于异步完成通知。
    判断:正确。
  3. Promise 一旦 fulfilled 或 rejected,状态固定,不能再改。
    判断:正确。
  4. JS Crash 日志可以用 hdc 获取,但只能看 HeapLog,拿不到完整 FaultLog。
    判断:错误。通过 hdc 可以拉取 FaultLog 文件。
  5. Release 包配合 HiStark + SourceMap 可以解析 JS 崩溃堆栈。
    判断:正确。
  6. Release 构建时把 arkOptions.obfuscation.enable 设为 false 即可开启混淆保护 HAP 资产。
    判断:错误。要设为 true 才开启混淆。
  7. obfuscation-rules.txt 配置当前模块自身的混淆规则;consumer-rules.txt 是给依赖本模块的下游传递规则,不是本模块的混淆配置。
    判断:正确。
  8. consumer-rules.txt 用来配置当前模块的混淆规则。
    判断:错误。同第 86 题,它面向下游消费者。
  9. hdc 拉起 UIAbility 传参时,--ps 传字符串参数,--psn 传数字参数。
    判断:正确。
十一、应用上架、应用分身、多开、关联安卓应用
  1. 鸿蒙应用关联安卓版本应用,只能在发布鸿蒙应用时关联,全网发布后无法再关联。
    判断:原题判错误(存疑)。这属于 AppGallery Connect 的上架流程,能不能补关联请以 AGC 当期说明为准。
  2. 应用状态为「公开测试」时,支持申请下架。
    判断:正确。
  3. 已有多账号能力的应用,用 multiton(应用多实例)方案做多开,适配工作量更少。
    判断:正确。
  4. 需要沙箱完全隔离、本身不支持多账号的应用,采用应用分身方案做多开。
    判断:正确。
十二、补充高频题
  1. 自定义组件生命周期顺序:aboutToAppear → build → onDidBuild → aboutToDisappear。
    判断:正确。
  2. @Local 是 V2 状态管理里组件内局部状态的装饰器。
    判断:正确。
  3. List、Scroll 内置的复用池是页面级,页面销毁时复用池跟着销毁。
    判断:正确。与第 34 题是同一件事。
  4. 跨设备拖拽必须同时满足同华为账号、蓝牙 + WiFi 开启、同局域网、键鼠穿越开启,缺一不可。
    判断:原题判正确(存疑)。这四条是官方列出的前提条件,但「缺一不可」是绝对化表述,实际以官方说明为准。
  5. 应用间可以通过 URI + Want 拉起并传递参数。
    判断:正确。
怎么用这份清单

先只看题干遮住判断做一遍,错的题号记下来;第二遍只做错题,并且要能说出「为什么错」,特别是 44、7、19、37、49 这几条——它们都属于「记混了两套模型 / 记反了方向」的题型,考场上最容易得分也最容易丢分。存疑的 12 条不用背,知道自己不确定、考试时按文档口径判断就够了。

参考

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

UIAbility 生命周期 - 华为开发者

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

ArkTS 语言介绍 - 华为开发者

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

存疑的题号(6、12、23、24、29、31、46、51、60、74、89、96)涉及预览器、NativeChildProcess、ConnectivityKit、AGC 流程等细节,请直接到华为开发者文档站按关键词检索当期说明,不要依赖任何人的记忆,包括我的。

配套阅读:HarmonyOS 应用开发者高级认证备考笔记

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐