HarmonyOS 应用开发者基础认证考试题目与解析

11 阅读20分钟

HarmonyOS 应用开发者基础认证考试题目与解析

判断题

  1. 关系型数据库(Relational Database, RDB)支持Worker线程。
    A. 正确(True) 【✗】RDB 不支持 Worker 线程,RDBStore 实例与创建线程绑定,必须在主线程操作
    B. 错误(False) 【✓】正确。RDB 无法在 Worker 线程中使用,这是官方明确限制
    正确答案:B

  2. UIAbility组件是系统调度的基本单元,为应用提供绘制界面的窗口,因此一个应用最多只能包含一个UIAbility组件。
    A. 正确(True) 【✗】一个应用可包含多个 UIAbility,用于不同功能页面
    B. 错误(False) 【✓】正确。应用可根据需求定义多个 UIAbility(如主界面、设置页等)
    正确答案:B

  3. Feature模块是应用的主模块,提供基础功能。
    A. 正确(True) 【✗】Feature 是动态特性模块,非主模块
    B. 错误(False) 【✓】正确。Entry 模块才是主模块,提供应用入口和核心功能
    正确答案:B

  4. Module是应用/元服务的基本功能单元,包含了源代码、资源文件、第三方库及应用/元服务配置文件,每一个Module都可以独立进行编译和运行。
    A. 正确(True) 【✓】正确。Module 是基本功能单元,含完整开发要素,支持独立编译运行
    B. 错误(False) 【✗】描述完全符合官方定义
    正确答案:A

  5. 架构设计时需要考虑"一次开发,多端部署",这样可以节省跨设备UI开发工作量,同时提升应用部署的伸缩性。
    A. 正确(True) 【✓】正确。这是 HarmonyOS 核心设计理念,通过响应式布局实现跨端适配
    B. 错误(False) 【✗】该理念确实能降低多端开发成本
    正确答案:A

  6. Tabs组件中,使用barPosition属性设置页签的位置。
    A. 正确(True) 【✓】正确。barPosition 可设置页签在 Start(顶部/左侧)或 End(底部/右侧)
    B. 错误(False) 【✗】该属性确实存在且功能如题所述
    正确答案:A

  7. height属性用于设置组件自身的高度,缺省时使用元素自身内容需要的高度。
    A. 正确(True) 【✓】正确。缺省值为 auto,根据内容自适应高度
    B. 错误(False) 【✗】描述符合 ArkUI 规范
    正确答案:A

  8. 在ArkTS语法中,TreeMap和TreeSet都支持自定义排序,但TreeMap的键必须是唯一的,而TreeSet的值不能重复。
    A. 正确(True) 【✓】正确。TreeMap 键唯一有序,TreeSet 值不重复且有序,均支持自定义比较器
    B. 错误(False) 【✗】描述准确无误
    正确答案:A

  9. @Link装饰器不能在@Entry装饰的自定义组件中使用。
    A. 正确(True) 【✓】正确。@Entry 组件无父组件,而 @Link 需父组件传递数据源,官方明确禁止
    B. 错误(False) 【✗】该限制是 ArkUI 强制规则
    正确答案:A

  10. DevEco Studio是面向全场景多设备提供的一站式开发平台,支持多端双向预览、分布式调试、分布式式调试、超终端模拟、低代码可视化开发等能力,帮助开发者降低成本、提升效率、提高质量。
    A. 正确(True) 【✓】正确。虽题干有笔误"分布式式调试",但整体功能描述准确
    B. 错误(False) 【✗】DevEco Studio 确实提供所述核心能力
    正确答案:A

单选题

  1. @Builder装饰器可以将重复使用的UI元素抽象成一个方法,称为"自定义构建函数",在build方法里调用。下列关于自定义构建函数的说法正确的是
    A. @Builder函数只能在自定义组件内部定义 【✓】正确。@Builder 必须定义在组件内部,不能跨组件使用
    B. 允许在自定义组件内定义多个@Builder函数 【✓】正确。一个组件内可定义多个 @Builder 函数
    C. @Builder函数不能被其他@Builder函数调用 【✗】错误。@Builder 函数可互相调用
    D. 自定义组件内部定义的@Builder函数也可以被其他自定义组件调用 【✗】错误。不能跨组件调用,需用 @BuilderParam 传递
    正确答案:B(B 为最完整准确描述,A 虽正确但非"说法正确"的最佳选项)

  2. 在使用ArkTS进行应用开发时,下面哪个选项不会导致编译报错?
    A. let x: number | null = null; 【✓】正确。联合类型包含 null,赋值合法
    B. let y: string = null; 【✗】错误。string 不能直接赋 null,需声明为 string | null
    C. let x: number = null; 【✗】错误。number 不能直接赋 null
    D. let y: string = 100; 【✗】错误。类型不匹配,string 不能赋 number
    正确答案:A

  3. 下列关于if/else语句渲染说法错误的是?
    A. 当父组件和子组件之间存在一个或多个if语句时,必须遵守父组件关于子组件使用的规则 【✓】正确描述,非错误项
    B. 允许在容器组件内使用,通过条件渲染语句构建不同的子组件 【✓】正确描述,非错误项
    C. if、else if后面跟的条件语句不可以使用状态变量 【✗】错误描述。if/else 可以使用状态变量(如 if (this.count > 0)),这是响应式渲染基础
    D. 支持if、else和else if语句 【✓】正确描述,非错误项
    正确答案:C

  4. 下面代码示例中不会导致编译报错的是?
    A. let x: number | null = null; 【✓】正确。联合类型包含 null,合法
    B. let y: string = 100; 【✗】错误。类型不匹配
    C. let x: number = null; 【✗】错误。number 不能直接赋 null
    D. let y: string = null; 【✗】错误。string 不能直接赋 null
    正确答案:A

  5. 下面哪个组件不属于ArkUI中的系统组件
    A. Column() 【✗】属于系统容器组件
    B. Row() 【✗】属于系统容器组件
    C. Text() 【✗】属于系统基础组件
    D. Title() 【✓】不属于独立系统组件,标题通常通过 Navigation 的 title 属性设置
    正确答案:D

  6. 下列哪个组件属于ArkUI中的系统组件?
    A. Tabs 【✓】正确。Tabs 是官方提供的系统 UI 组件
    B. Title 【✗】不是独立组件
    C. AbilityStage 【✗】是应用模型组件,非 UI 组件
    D. UIAbility 【✗】是应用模型组件,非 UI 组件
    正确答案:A

  7. 你正在开发一个Web应用程序,需要确保XML文档的结构符合特定的规则。你会选择哪种机制来定义这些规则?
    A. 使用JavaScript 【✗】JS 用于逻辑处理,不定义 XML 结构规则
    B. 使用XMLSchema 【✓】正确。XML Schema (XSD) 专门用于定义 XML 文档结构和数据类型约束
    C. 使用HTML标签 【✗】HTML 与 XML Schema 无关
    D. 使用CSS样式表 【✗】CSS 用于样式,不定义结构规则
    正确答案:B

  8. 下面关于应用入口页面的定义代码写法正确的是
    A. @Component struct MyComponent { } 【✗】缺少 @Entry 装饰器,不能作为入口
    B. @Entry @Component struct MyComponent { } 【✓】正确。入口组件必须同时使用 @Entry 和 @Component,且为 struct
    C. @Entry @Component class MyComponent { } 【✗】ArkUI 入口组件必须是 struct,不能是 class
    D. @Entry @Component struct MyComponent { } 【✓】同 B,格式正确
    正确答案:B/D(B 和 D 内容相同,均为正确写法)

  9. 检查Preferences实例是否包含名为给定Key的存储键值对,需要使用哪个接口
    A. flush 【✗】用于将内存数据持久化到磁盘
    B. hasSync 【✓】正确。hasSync(key: string): boolean 用于同步检查 key 是否存在
    C. getPreferencesSync 【✗】用于获取 Preferences 实例
    D. getSync 【✗】用于根据 key 获取值
    正确答案:B

  10. 以下代码写法正确的是
    A. import { http } from '@kit.NetworkKit'; 【✓】正确。HarmonyOS 使用 @kit 命名空间引入系统 Kit
    B. import { http } from 'www.kit.NetworkKit'; 【✗】命名空间格式错误
    C. import { https } from '@kit.NetworkKit'; 【✗】模块名为 http,无 https 导出
    D. import { http } from '#kit.NetworkKit'; 【✗】命名空间应为 @,非 #
    正确答案:A

  11. 在将直板机上的短视频切换到折叠屏打开状态时,哪种UX设计最有助于提升用户体验?
    A. 短视频拉伸至左右满屏显示,顶部和底部显示不完全 【✗】拉伸导致画面变形,体验差
    B. 保持直板机UI界面效果,左右留白或背景模糊 【✗】浪费大屏空间,未发挥折叠屏优势
    C. 短视频在屏幕左侧,右侧显示视频评论信息,实现边看边评 【✓】正确。充分利用大屏实现分屏协同,提升交互效率
    D. 短视频仅显示在折叠屏左侧,右侧留白 【✗】右侧留白浪费屏幕资源
    正确答案:C

  12. 在应用内上下层级转场动效适配中,下列做法不推荐的是
    A. 对于PC和大屏设备,使用系统转场,页面转场采用淡入淡出的运动方式 【✓】推荐做法
    B. 对于淡入淡出的页面转场方式,动效曲线优先使用弹簧曲线 【✗】弹簧曲线适合弹性效果,淡入淡出应使用缓动曲线(如 ease-in-out)
    C. 对于手机和折叠屏设备,使用系统转场,页面转场采用左右位移的运动方式 【✓】推荐做法
    D. 对于左右位移的页面转场方式,单帧直接切换以保持动效的流畅性 【✗】单帧切换会破坏流畅性,应使用平滑动画过渡
    正确答案:D(D 是最明显的错误做法)

  13. 在ArkUI中,Length类型用于描述尺寸单位时,如果不指定像素单位,则默认单位是
    A. vp 【✓】正确。vp(虚拟像素)是默认单位,适配不同屏幕密度
    B. % 【✗】百分比需显式指定 % 符号
    C. px 【✗】px 是物理像素,非默认单位
    D. fp 【✗】fp 用于字体大小,非通用长度单位
    正确答案:A

  14. Tabs组件通过哪个属性设置工具栏
    A. toolbarConfiguration 【✓】正确。该属性用于配置 Tabs 的工具栏(如菜单、返回按钮)
    B. menus 【✗】是 Navigation 组件的属性
    C. navDestination 【✗】与导航目标相关,非工具栏配置
    D. backbuttonicon 【✗】用于设置返回按钮图标,非完整工具栏
    正确答案:A

  15. 下列NavPathStack的接口可以实现页面返回功能的是
    A. replace 【✗】替换当前页面,不返回
    B. push 【✗】前进到新页面
    C. pop 【✓】正确。pop() 从导航栈弹出当前页面,实现返回上一页
    D. removeByName 【✗】按名称移除页面,不一定是返回操作
    正确答案:C

  16. 通过divider属性的哪一个参数可以设置列表分隔线距离列表页侧边结束端的距离
    A. centerMargin 【✗】该参数不存在
    B. endMargin 【✓】正确。endMargin 设置分隔线距离结束端(右侧/底部)的距离
    C. startMargin 【✗】设置起始端(左侧/顶部)距离
    D. endsMargin 【✗】该参数不存在
    正确答案:B

  17. 在ArkUI框架中,如果需要封装一个复杂的UI组件,允许内部定义状态变量并管理组件的生命周期,应该使用哪个装饰器?
    A. @Trace 【✗】用于性能追踪,非组件定义
    B. @Component 【✓】正确。@Component 用于定义可复用 UI 组件,支持状态变量和生命周期管理
    C. @ObservedV2 【✗】用于装饰类使其可观察,非 UI 组件装饰器
    D. @Builder 【✗】仅用于抽象 UI 片段,不能定义状态变量和完整生命周期
    正确答案:B

  18. TabContent组件的宽度由什么决定?
    A. 通过TabContent的通用属性width值确定 【✗】TabContent 不支持直接设置 width
    B. 与TabBar组件的宽度保持一致 【✗】两者宽度无直接关联
    C. 由Tabs父组件宽度与TabBar组件宽度决定,其宽度默认撑满Tabs父组件 【✓】正确。TabContent 宽度默认撑满 Tabs 容器(扣除 TabBar 占用空间)
    D. 父组件Tabs宽度与TabBar组件宽度的差值 【✗】描述不准确,应为"撑满剩余空间"
    正确答案:C

  19. 以下哪个属性用于设置Navigation工具栏的显隐
    A. hideToolBar 【✓】正确。hideToolBar 控制底部工具栏显隐
    B. hideTitleBar 【✗】控制标题栏显隐
    C. hideMenus 【✗】控制菜单显隐
    D. hideNavBar 【✗】控制导航栏(返回/主页按钮区域)显隐
    正确答案:A

  20. List在懒加载场景下如果设置cachedCount为1,那么其布局内容为
    A. 布局List显示区域和前一个预加载区域的内容 【✗】仅前向预加载不完整
    B. 布局List显示区域和前后各一个预加载区域的内容 【✓】正确。cachedCount=1 表示预加载显示区域前后各 1 个 ListItem
    C. 仅布局List显示区域的内容 【✗】无预加载会导致滑动白块
    D. 布局List显示区域和后一个预加载区域的内容 【✗】仅后向预加载不完整
    正确答案:B

  21. opacity属性的取值范围是
    A. 0-255 【✗】这是 RGBA 颜色通道范围
    B. 0-100 【✗】百分比表示法,非标准
    C. 0-1 【✓】正确。0 完全透明,1 完全不透明,符合图形学标准
    D. 1-10 【✗】范围错误
    正确答案:C

  22. markAnchor属性在ArkUI中的作用是
    A. 设置元素在位置定位时的锚点 【✓】正确。用于滚动定位时指定参考位置(如顶部对齐)
    B. 设置组件的边框 【✗】边框通过 border 属性设置
    C. 设置组件的背景色 【✗】背景色通过 backgroundColor 设置
    D. 设置组件在水平方向的偏移量 【✗】偏移通过 translate/offset 设置
    正确答案:A

  23. 以下哪个生命周期回调适合在UIAbility中释放无用资源?
    A. onWindowStageWillDestroy() 【✗】仅窗口销毁,Ability 可能仍存活,不适合释放全部资源
    B. onForeground() 【✗】进入前台,应恢复资源而非释放
    C. onBackground() 【✗】进入后台,可释放 UI 资源,但 Ability 仍存活
    D. onDestroy() 【✓】正确。Ability 彻底销毁前的最后回调,适合释放所有资源(数据库、网络等)
    正确答案:D

  24. 以下对应用启动框架AppStartup,描述错误的是
    A. AppStartup提供了一种简单高效的应用启动方式,可以支持任务的异步启动 【✓】正确描述
    B. AppStartup可以通过在一个配置文件中统一设置多个启动任务的执行顺序以及依赖关系 【✓】正确描述
    C. 执行自动任务时直接执行,不需要在UIAbility创建完成后,被调用时执行 【✓】正确描述(自动模式特性)
    D. 启动框架支持以自动模式或手动模式执行启动任务,默认采用手动模式 【✗】错误。默认采用自动模式,非手动模式
    正确答案:D

  25. UIAbility类拥有自身的上下文信息,该信息为()类的实例
    A. BaseContext 【✗】是 Context 的基类,非 UIAbility 直接上下文
    B. ExtensionContext 【✗】用于 Extension 能力,非 UIAbility
    C. UIAbilityContext 【✓】正确。UIAbilityContext 是 UIAbility 的上下文实例,继承自 Context
    D. context 【✗】是变量名,非类名
    正确答案:C

  26. HarmonyOS应用程序包的Ability Module类型主要包括两大类,其中用于定义应用程序的基本信息和入口的是
    A. Feature Module 【✗】动态特性模块,非主模块
    B. Library Module 【✗】库模块,用于代码复用
    C. Entry Module 【✓】正确。Entry Module 定义应用基本信息(bundleName、version)和入口 Ability
    D. Service Module 【✗】无此分类
    正确答案:C

  27. app.json5配置文件的versionName属性标识向用户展示的应用版本号,下列关于versionName属性的命名规则错误的是
    A. 取值长度没有限制 【✗】错误。versionName 有长度限制(通常 ≤63 字符)
    B. 仅由数字和点构成 【✓】正确规则
    C. 该标签值不可省缺 【✗】可缺省,默认值为 "1.0.0"
    D. 推荐采用"A.B.C.D"四式的形式 【✓】推荐规则
    正确答案:A(A 明确违反规则,是最直接的"错误"描述)

  28. 根据系统中待匹配应用组件的匹配情况不同,使用隐式Want启动应用组件时,可能出现的情况的说法错误的是
    A. 如果匹配到多个满足条件的应用组件时,默认启动后已配置的应用组件 【✗】错误。匹配多个时弹出选择框让用户选择,非默认启动某一个
    B. 如果匹配到多个满足条件的应用组件时,弹出选择框让用户选择 【✓】正确行为
    C. 如果未匹配到满足条件的应用组件时,应用启动失败 【✓】正确行为
    D. 如果匹配到一个满足条件的应用组件时,直接启动该应用组件 【✓】正确行为
    正确答案:A

  29. 在EntryAbility中,调用startAbility()方法时,在want中增加哪个自定义参数可以用来区分不同的UIAbility实例
    A. wantAgent 【✗】用于延迟意图,非实例区分
    B. wantConstant 【✗】无此参数
    C. instanceKey 【✓】正确。在 parameters 中设置 instanceKey 用于 specified 模式区分实例
    D. dataUriUtils 【✗】工具类,非参数名
    正确答案:C

  30. 在SpecifiedAbility启动之前,会先进入对应的AbilityStage的哪个生命周期回调中,以获取该UIAbility实例的KeyValue
    A. onMemoryLevel 【✗】内存等级变化回调
    B. onCreate 【✗】AbilityStage 创建回调,时机过早
    C. onConfigurationUpdate 【✗】配置更新回调
    D. onAcceptWant 【✓】正确。specified 模式下,系统先进入 onAcceptWant() 让开发者返回 KeyValue
    正确答案:D

  31. 开发者可以在UIAbility的哪个回调中释放UI不可见时无用的资源,或者在此回调中执行较为耗时的操作
    A. onDestroy() 【✗】彻底销毁回调,应快速执行,不适合耗时操作
    B. onWindowStageWillDestroy() 【✗】窗口销毁回调,时机较晚
    C. onBackground() 【✓】正确。UI 完全不可见后触发,适合释放 UI 资源(如停止动画)或执行耗时操作(如状态保存)
    D. onForeground() 【✗】进入前台回调,应恢复资源
    正确答案:C

  32. 动态预览的特点是
    A. 只能查看静态界面 【✗】这是静态预览特点
    B. 只能在真机上运行 【✗】动态预览支持模拟器/预览器
    C. 支持组件拖拽 【✗】拖拽是低代码功能,非动态预览核心特点
    D. 允许进行界面交互 【✓】正确。动态预览支持点击、滑动等交互操作,实时响应组件状态变化
    正确答案:D

  33. Module是应用/元服务的基本功能单元,支持entry、feature、har、shared四种类型。如需在当前工程中添加一个har类型的Module,应该选择下列哪个Module模板?
    A. Empty Ability 【✗】创建 entry/feature 模块
    B. Shared Library 【✗】对应 shared 类型模块
    C. Native C++ 【✗】用于 Native 开发
    D. Static Library 【✓】正确。Static Library 模板对应 har(HarmonyOS Ability Resources)类型模块
    正确答案:D

  34. 下列关于自由流转的价值体现的说法错误的是
    A. 自由流转框架实现了流转过程。应用开发只需关注在业务数据本身的同步与恢复,简化了应用的处理逻辑,降低了应用开发跨端特性的复杂度 【✓】正确描述
    B. 自由流转提供了应用跨设备流转的能力。应用开发只需遵循框架并适配指定的API,就能实现设备之间的跨端迁移和多端协同 【✓】正确描述
    C. 自由流转的跨端迁移能力实现了时间上的并行交互。给用户带来了全新的交互体验 【✗】错误。跨端迁移是时间"连续"(如手机→平板接力);多端协同才是时间并行
    D. 自由流转将彻底改变应用分发模式。鸿蒙生态应用不再与传统应用那样,只能局限在单一设备上 【✓】正确描述(应用可跨设备运行)
    正确答案:C

  35. 多端协同是指运行在多个物理设备上的软件彼此协作完成一项任务,根据协同能力的不同,例如显示、交互、算力能力等,可以创造出丰富的协同模式。下列场景中哪个属于交互模式上的协同能力?
    A. 分布式游戏在手机/大屏上玩游戏时,利用周边设备(手机、平板等)协助完成游戏应用的计算任务(AI计算、图像渲染等),提升游戏帧率、画质 【✗】属于算力协同
    B. 通过智慧屏上网课时,在同华为账号的手机上进行手写答题或绘画 【✓】正确。智慧屏负责显示,手机提供手写交互能力,是典型的交互协同
    C. 文档编辑应用的文档内容和周边工具菜单可以分别显示在平板和手机上,在手机上快速编辑操作菜单,在平板上更清晰的查看编辑的效果 【✗】属于显示协同
    D. 在外时用手机玩游戏,到家后迁移到平板上继续玩游戏 【✗】属于跨端迁移,非协同
    正确答案:B

  36. 假设应用有两个UIAbility实例,即EntryAbility和SpecifiedAbility,EntryAbility以specified模式启动SpecifiedAbility。下列关于上述启动原理的说法正确的是
    A. 系统会根据获取的KeyValue来匹配UIAbility,如果无法匹配对应的UIAbility,则系统会返回错误,EntryAbility跳转失败 【✗】无法匹配时会创建新实例,非返回错误
    B. 系统会根据获取的KeyValue来匹配UIAbility,如果匹配到对应的UIAbility,则会启动该UIAbility实例,并进入onNewWant()生命周期回调 【✓】部分正确,但缺少关键前置步骤
    C. 系统在拉起SpecifiedAbility之前,会先进入SpecifiedAbility对应的AbilityStage的onAcceptWant()生命周期回调,获取用于标识目标UIAbility的KeyValue 【✓】正确。这是 specified 模式核心流程:先 onAcceptWant() 获取 KeyValue,再匹配/创建实例
    D. EntryAbility调用startAbility()方法,并在Want的parameters字段中设置唯一的KeyValue,用于标识SpecifiedAbility 【✗】EntryAbility 设置的是 instanceKey,KeyValue 由 onAcceptWant() 返回
    正确答案:C

多选题

  1. 响应式布局中将窗口宽度划分为不同的范围(即断点BreakPoint),可以包括以下哪些?
    A. md 【✓】正确。md(medium)是标准断点之一(520840vp)
    B. xxl 【✓】正确。xxl(extra extra large)是扩展断点(≥1440vp)
    C. lg 【✓】正确。lg(large)是标准断点之一(840
    1080vp)
    D. sm 【✓】正确。sm(small)是标准断点之一(320520vp)
    E. xs 【✓】正确。xs(extra small)是标准断点之一(<320vp)
    F. xl 【✓】正确。xl(extra large)是标准断点之一(1080
    1440vp)
    正确答案:A、B、C、D、E、F(全部正确,共6个断点)

  2. Promise是一种用于处理异步操作的对象,关于Promise的特点,以下哪些是正确的?
    A. 支持链式调用 【✓】正确。可通过 .then().catch() 实现链式调用
    B. 支持同步操作 【✗】错误。Promise 本质是异步机制,不支持同步操作
    C. 一旦完成,状态不可变 【✓】正确。状态从 pending 变为 fulfilled/rejected 后不可逆转
    D. 可以暂停执行 【✗】错误。Promise 一旦创建即执行,无法暂停
    正确答案:A、C

  3. DevEco Studio提供了类的代码自动生成功能,包括
    A. 快速重写父类 【✓】正确。可通过 Override Methods 快速重写父类方法
    B. 快速生成构造器 【✓】正确。Alt+Insert 可生成 constructor
    C. 快速生成get方法 【✓】正确。可生成 getter
    D. 快速生成set方法 【✓】正确。可生成 setter
    正确答案:A、B、C、D(全部正确)

  4. 下面哪些是HTTP的request接口中请求的可选参数的字段
    A. method 【✓】正确。请求方法(GET/POST 等)是可选参数
    B. page 【✗】错误。HTTP request 无 page 标准字段,分页通常通过 URL 参数实现
    C. extraData 【✓】正确。extraData 用于携带额外数据
    D. expectDataType 【✓】正确。用于指定期望的返回数据类型
    正确答案:A、C、D