鸿蒙开发者认证-题库(二)

前言

鸿蒙开发者证书说重要也重要,说不重要也不重要。但是鉴于目前招聘鸿蒙开发者的公司都要求有证书,所以,你懂的

这里我搜集了一些新版的题目供大家学习参考

题目

1. (@Sendable)装饰器用来表示并发共享对象

Sendable对象简介:developer.huawei.com/consumer/cn...

Sendable使用场景:developer.huawei.com/consumer/cn...

2. 在方舟字节码的函数调用规范中,前三个参数表示的含义分别是(函数对象本身、new.Target、this)

函数调用规范:developer.huawei.com/consumer/cn...

3. 方舟字节码格式PREF_IMM16_V8_V8表示(16位前缀操作码,16位立即数,2个8位寄存器)

字节码格式说明:developer.huawei.com/consumer/cn...

4. Taskpool和worker的对比如下

TaskPool简介:developer.huawei.com/consumer/cn...

Worker简介:developer.huawei.com/consumer/cn...

实现特点对比:developer.huawei.com/consumer/cn...

实现 TaskPool Worker
内存模型 线程间隔离,内存不共享。 线程间隔离,内存不共享。
参数传递机制 采用标准的结构化克隆算法(Structured Clone)进行序列化、反序列化,完成参数传递。支持ArrayBuffer转移和SharedArrayBuffer共享。 采用标准的结构化克隆算法(Structured Clone)进行序列化、反序列化,完成参数传递。支持ArrayBuffer转移和SharedArrayBuffer共享。
参数传递 直接传递,无需封装,默认进行transfer。 消息对象唯一参数,需要自己封装。
方法调用 直接将方法传入调用。 在Worker线程中进行消息解析并调用对应方法。
返回值 异步调用后默认返回。 主动发送消息,需在onmessage解析赋值。
生命周期 TaskPool自行管理生命周期,无需关心任务负载高低。 开发者自行管理Worker的数量及生命周期。
任务池个数上限 自动管理,无需配置。 同个进程下,最多支持同时开启64个Worker线程,实际数量由进程内存决定。
任务执行时长上限 3分钟(不包含Promise和async/await异步调用的耗时,例如网络下载、文件读写等I/O任务的耗时),长时任务无执行时长上限。 无限制。
设置任务的优先级 支持配置任务优先级。 不支持。
执行任务的取消 支持取消已经发起的任务。 不支持。
线程复用 支持。 不支持。
任务延时执行 支持。 不支持。
设置任务依赖关系 支持。 不支持。
串行队列 支持。 不支持。
任务组 支持。 不支持。

5. 方舟字节码格式IMM16_ID16_IMM8表示(8位操作码,16位立即数,16位id,8位立即数)

字节码格式说明:developer.huawei.com/consumer/cn...

6. 如果要实现Row组件内的子元素均匀排列,且第一个元素与行首对齐,最后一个元素与行尾对齐,需要使用justifyContent的(SpaceBetween)

Row容器内子元素在水平方向上的排列: developer.huawei.com/consumer/cn...

7. (TransitionEffect.OPACITY.animation({duration:2000}).combine(TransitionEffect.translate({x:100}))转场效果在入场动画时,表现为从透明度为0、相对于组件正常显示位置x方向平移100vp的状态,到默认的透明度为1、相对于组件不平移的状态,且透明度东海和平移动画的动画时长均为2000ms

出现/消失转场:developer.huawei.com/consumer/cn...

组件内转场:developer.huawei.com/consumer/cn...

8. 如果想让outer button响应事件,inner stack的hitTestBehavior属性需要配置为(HitTestMode.Transparent)

arkts 复制代码
@Entry
@Component
export struct HitTestBehaviorExample {
  build() {
    // outer stack
    Stack() {
      Button('outer button')
        .onClick(() => {
          console.log('click事件触发++++2')
        })
      // inner stack
      Stack() {
        Button('inner button')
          .onClick(() => {
            console.log('click事件触发++++1')
          })
      }
      // .hitTestBehavior()
      .width(300)
      .height(300)
    }
  }
}

触摸测试控制:developer.huawei.com/consumer/cn...

这道题的代码其实有问题,hitTestBehavior只是影响触摸测试,并不影响谁被响应。将inner stack的hitTestBehavior设置为HitTestMode.Transparent之后,虽然outer button和inner button都可以接收到HitTest方法,但实际上由于inner button在响应链的顶端,所以实际还是inner button响应。

正确的代码应该如下,并且选择HitTestMode.None

arkts 复制代码
@Entry
@Component
export struct HitTestBehaviorExample {
  build() {
    Stack() {
      Button('outer button')
        .onClick(() => {
          console.log('click事件触发++++2')
        })

      Button('inner button')
        .onClick(() => {
          console.log('click事件触发++++1')
        })
        .hitTestBehavior(HitTestMode.None)
    }
  }
}

9. 下面代码,点击(C)按钮不会触发UI刷新

arkts 复制代码
class Info {
  name: string

  constructor(name: string) {
    this.name = name
  }
}

@Component
export struct Demo01 {
  @State nameList: Info[] = [new Info('Tom'), new Info('Tom1'), new Info('Tom2')]

  build() {
    Column() {
      Button('A')
        .onClick(() => {
          this.nameList.push(new Info('Lucy'))
        })
      Button('B')
        .onClick(() => {
          this.nameList[0] = new Info('Eric')
        })
      Button('C')
        .onClick(() => {
          this.nameList[0].name = 'Jim'
        })
      Button('D')
        .onClick(() => {
          this.nameList = [new Info('Barry'), new Info('Cindy'), new Info('David')]
        })
      ForEach(this.nameList, (item: Info) => {
        Text(item.name)
      })
    }
  }
}

@State状态管理:developer.huawei.com/consumer/cn...

C按钮操作的是数组第一项的属性,@State只能观测到[0]这个位置的添加、删除以及整个重新赋值,无法观测到[0]这个对象的属性的变化

10. 设置promptAction.showToast的showMode属性为(ToastShowMode.TOP_MOST)可以显示在其他应用之上

ToastShowMode:developer.huawei.com/consumer/cn...

组件导航:developer.huawei.com/consumer/cn...

12. 开发者小李遇到了一个复杂的问题,该问题仅在特定的代码执行路径上出现且难以复现。他使用的是C++进行核心算法开发,代码的逻辑密集且对性能要求极高,DevEco Studio为C/C++开发者提供的高级调试能力(反向调试能力:允许开发者在调试过程中回退,回到之前的代码行或断点,不仅查看过去的堆栈信息,还能重现历史的全局、静态和局部变量状态,帮助深入理解代码历史行为,特别是对于复杂逻辑和难以复现的bug定位至关重要)可以帮助小李查看代码历史执行路径,回溯关键的变量状态

反向调试:developer.huawei.com/consumer/cn...

13. 小李正在使用DevEco Studio进行HarmonyOS应用的开发工作,他需要对一个频繁被调用的函数calculateData()进行重构,(将光标置于calculateData()函数的名称上,按下Ctrl+Shift+F(macOS为Command+Shift+F)全局搜索该函数名,然后再在搜索结果中筛选出真正的调用位置)可以帮助小李高效的找到calculateData()函数的所有引用位置,并确保重构时考虑周全

代码重构:developer.huawei.com/consumer/cn...

14. 当前您在开发一个ArkTS、Stage模型的HarmonyOS工程,关于当前ArkTS工程目录结构有一些说法

构建ArkTS应用:developer.huawei.com/consumer/cn...

应用配置文件描述:developer.huawei.com/consumer/cn...

15. DevEco Studio提供HarmonyOS应用/服务的UI预览界面与源代码文件间的双向预览功能,支持ets文件与预览器界面的双向预览

Inspector双向预览:developer.huawei.com/consumer/cn...

16. 项目中包含多个模块和数千行代码。随着开发的深入,项目中的ArkTS源代码文件逐渐积累了大量import语句,其中不乏未使用的import以及不规范的排序情况,关于DevEco Studio的编辑器的"Optimize Imports"描述

Optimize Imports功能:developer.huawei.com/consumer/cn...

17. 在组件中,经常需要使用字符串、图片等资源。HSP中的组件需要使用资源时,一般将其所用资源放在HSP包内,而非放在HSP的使用处,以符合高内聚低耦合的原则

资源分类与访问:developer.huawei.com/consumer/cn...

HSP:developer.huawei.com/consumer/cn...

18. 关于Har包的描述

HAR:developer.huawei.com/consumer/cn...

19. want参数entities匹配规则

Want匹配规则:developer.huawei.com/consumer/cn...

20. 作为一个应用开发者,想搭建运维平台在应用内定时读取当前的内存信息,可以通过(hiDebug)接口实现

Performance Analysis简介:developer.huawei.com/consumer/cn...

参考资料

  1. 【【2025最新】一天拿证!华为鸿蒙HarmonyOS应用开发者认证教程(基础+高级)_超详细答案解析+电子题库,手把手教你轻松通过华为鸿蒙开发者认证!】www.bilibili.com/video/BV1TW...
  2. 鸿蒙开发 指南
  3. 鸿蒙开发 API参考
相关推荐
星释15 分钟前
鸿蒙Flutter实战:17-无痛上架审核指南
flutter·华为·harmonyos
jikuaidi6yuan2 小时前
鸿蒙操作系统的安全架构
华为·harmonyos·安全架构
轻口味6 小时前
HarmonyOS Next 最强AI智能辅助编程工具 CodeGenie介绍
人工智能·华为·harmonyos·deveco-studio·harmonyos-next·codegenie
jikuaidi6yuan7 小时前
除了基本的事件绑定,鸿蒙的ArkUI
华为·harmonyos
GY-937 小时前
Flutter中PlatformView在鸿蒙中的使用
flutter·harmonyos
小鱼仙官10 小时前
鸿蒙系统 将工程HarmonyOS变成OpenHarmony
华为·harmonyos
塞尔维亚大汉21 小时前
OpenHarmony(鸿蒙南向开发)——Combo解决方案之W800芯片移植案例
操作系统·harmonyos
拥有一颗学徒的心21 小时前
鸿蒙开发中的骨架图:提升用户体验的关键一环
华为·信息可视化·人机交互·harmonyos·ux·sketch
可可鸭~1 天前
鸿蒙学习构建视图的基本语法(二)
android·学习·harmonyos