前言
鸿蒙开发者证书说重要也重要,说不重要也不重要。但是鉴于目前招聘鸿蒙开发者的公司都要求有证书,所以,你懂的
这里我搜集了一些新版的题目供大家学习参考
题目
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...
11. ArkUI NavDestination的生命周期执行顺序是(onWillAppear->onAppear->onWillShow->onShown->onWillHide->onHidden->onWillDisappear->onDisappear)
组件导航: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...
参考资料
- 【【2025最新】一天拿证!华为鸿蒙HarmonyOS应用开发者认证教程(基础+高级)_超详细答案解析+电子题库,手把手教你轻松通过华为鸿蒙开发者认证!】www.bilibili.com/video/BV1TW...
- 鸿蒙开发 指南
- 鸿蒙开发 API参考