高级的题库更新之后,专业性更强了,不是真正从事这一行的,很难做出来。本人就是个小菜鸡,有一些题,我也不想不明白。题目的答案我尽可能的找到出处,如果读者发现错误或有补充建议,欢迎评论或私信笔者。笔者这篇就当抛砖引玉,各位读者可以当作考试的一个参考
基础认证题库请移步:HarmonyOS应用开发者基础认证题库
注:有读者反馈,题库的代码块比较多,打开文章时会卡死。所以笔者将题库拆分,以20道题为一组,题库目录如下,读者可以按需跳转。如果对您的阅读产生不便,笔者在这里向大家说声抱歉,请各位读者原谅。该题库已整理完毕,笔者不再更新。笔者连续考了三次,都过了,所以答案应该没什么太大问题。有需要题库文档的可以自取。祝各位读者好运(๑¯ω¯๑)。
序号目录:
- 单选题
HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 单选题序号1
HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 单选题序号2
HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 单选题序号3
HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 单选题序号4
HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 单选题序号5 - 多选题
HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 多选题序号1
HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 多选题序号2
HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 多选题序号3 - 答案纯享版
HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 答案纯享版
题库文档链接(自取):https://pan.baidu.com/s/153tDk4dVv_MmLEyzOqW9hQ?pwd=xkgr
注:题目是乱序,每次考试,选项的顺序都不同
单选题题库 - 序号4
61、当使用状态变量进行ArkUI组件间数据通信的时候,如果两个组件间没有直接的嵌套关系(非父子和祖孙关系组件),但是他们又属于同一页面,最佳的装饰器应该选用哪个?
A、@Provide+@Consume
B、AppStorage
C、LocalStorage
D、@State+@Link
LocalStorage:页面级UI状态存储-管理应用拥有的状态-状态管理(V1稳定版)-状态管理-学习ArkTS语言-基础入门 | 华为开发者联盟 (huawei.com)
62、某App依赖了3个ohpm库,这3个库占用的体积都比较大。在App的技术架构中,有多个hap和多个hsp均依赖这3个库,为了减少app的首包大小,以下哪些做法是无效的?
A、将某些特性做成按需加载模块,若这3个ohpm仅在按需加载模块里面使用,则将其打包在按需加载模块中。
B、将3个ohpm库分 别封装成3个hsp,并对外提供必要的接口。
C、将3个ohpm库封装成1个hsp,并对外提供必要的接口。
D、将这3个ohpm库封装到har包中,并对外提供必要的接口。
HAR-应用程序包开发与使用-应用程序包基础知识-开发基础知识-基础入门 | 华为开发者联盟 (huawei.com)
63、以下关于应用架构技术选型说法不正确的是()
A、对于初始版本的应用,功能比较简单,可以考虑采用单HAP加上多个HAR工程构建代码工程。
B、一些应用的扩展能力,比如备份、服务卡片,可以采用ExtensionAbility做成单独的feature HAP包,独立分发。
C、元服务和应用可以共用一个代码工程,采用多目标产物构建方式,构建出应用和元服务两个产物,用于上架。
D、随着业务的发展,应用功能会越来越多,某些功能可以做成动态加载,动态加载的模块采用HAR工程来构建,方便复用和共享。
HAR-应用程序包开发与使用-应用程序包基础知识-开发基础知识-基础入门 | 华为开发者联盟 (huawei.com)
64、关于短时任务开发使用的接口是
A、使用startWork申请任务, 使用stopWork取消任务,使用getWorkStatus获取任务状态
B、使用startBackgroundRunning申请任务 ,使用stopBackgroundRunning取消任务
C、使用requestSuspendDelay申请任务, 使用getRemainingDelayTime获取任务剩余时间
D、使用publishReminder发布一 个提醒类通知,使用cancelReminder取消一个指定的提醒类通知
短时任务-Background Tasks Kit(后台任务开发服务)-应用框架 | 华为开发者联盟 (huawei.com)
65、以下关于ArkUI NavDestination组件的生命周期执行顺序中正确的是
A、onWillappear->onWillhow->onShow->onAppear->onWillHide->onHidden->onWillDisappear->onDisappear
B、onWillappear->onAppear->onWillShow->onShow->onWillHide->onWillDisappear->onHidden->onDisappear
C、onWillappear->onAppear->onWillShow->onShow->onWillDisappear->onWillHide->onHidden->onDisappear
D、onWillappear->onAppear->onWillShow->onShow->onWillHide->onHidden->onWillDisappear->onDisappear
组件导航 (Navigation) (推荐)-设置组件导航和页面路由-UI开发 (ArkTS声明式开发范式)-ArkUI(方舟UI框架)-应用框架 | 华为开发者联盟 (huawei.com)
66、为了使isShow参数值与半模态界面的状态同步,可以使用下列那种方式双向绑定isShow参数?
// A
@Entry
@Component
struct SheetTransitionExample {
@State isShow:boolean = false
@State isShow2:boolean = false
@State sheetHeight:number = 300;
@Builder myBuilder() {
Column() {
Button("change height")
.margin(10)
.fontSize(20)
.onClick(()=>{
this.sheetHeight = 500;
})
}
.width('100%')
.height('100%')
}
build() {
Column() {
Button("transition modal 1")
.onClick(() => {
this.isShow = true
})
.fontSize(20)
.margin(10)
.bindSheet(this.isShow, this.myBuilder(), {
height: this.sheetHeight,
})
}
.justifyContent(FlexAlign.Center)
.width('100%')
.height('100%')
}
}
// B
@Entry
@Component
struct SheetTransitionExample {
@State isShow:boolean = false
@State isShow2:boolean = false
@State sheetHeight:number = 300;
@Builder myBuilder() {
Column() {
Button("change height")
.margin(10)
.fontSize(20)
.onClick(()=>{
this.sheetHeight = 500;
})
}
.width('100%')
.height('100%')
}
build() {
Column() {
Button("transition modal 1")
.onClick(() => {
this.isShow = true
})
.fontSize(20)
.margin(10)
.bindSheet(&&this.isShow, this.myBuilder(), {
height: this.sheetHeight,
})
}
.justifyContent(FlexAlign.Center)
.width('100%')
.height('100%')
}
}
// C
@Entry
@Component
struct SheetTransitionExample {
@State isShow:boolean = false
@State isShow2:boolean = false
@State sheetHeight:number = 300;
@Builder myBuilder() {
Column() {
Button("change height")
.margin(10)
.fontSize(20)
.onClick(()=>{
this.sheetHeight = 500;
})
}
.width('100%')
.height('100%')
}
build() {
Column() {
Button("transition modal 1")
.onClick(() => {
this.isShow = true
})
.fontSize(20)
.margin(10)
.bindSheet(@@this.isShow, this.myBuilder(), {
height: this.sheetHeight,
})
}
.justifyContent(FlexAlign.Center)
.width('100%')
.height('100%')
}
}
// D
@Entry
@Component
struct SheetTransitionExample {
@State isShow:boolean = false
@State isShow2:boolean = false
@State sheetHeight:number = 300;
@Builder myBuilder() {
Column() {
Button("change height")
.margin(10)
.fontSize(20)
.onClick(()=>{
this.sheetHeight = 500;
})
}
.width('100%')
.height('100%')
}
build() {
Column() {
Button("transition modal 1")
.onClick(() => {
this.isShow = true
})
.fontSize(20)
.margin(10)
.bindSheet($$this.isShow, this.myBuilder(), {
height: this.sheetHeight,
})
}
.justifyContent(FlexAlign.Center)
.width('100%')
.height('100%')
}
}
A、A
B、B
C、C
D、D
67、张工正在使用DevEco Studio进行一个复杂项目的开发工作,项目中包含了成千上万行代码且涉及众多模块。在重构代码的过程中,他意识到需要对一个核心类名进行更改,考虑到这个类在整个项目中被广泛引用,手动修改不仅耗时且容易出错。基于DevEco Studio提供的代码编辑功能,以下哪个描述最准确地概述了张工如何高效且安全地完成对类名的更改,同时确保整个项目中所有相关引用同步更新?
A、张工只需简单选中需要更名的类名,按下Delete键删除后直接输入新名称,DevEco Studio会自动识别并更新所有引用。
B、张工需打开项目搜索功能,输入旧类名找到所有匹配项,逐一进行替换,完成更名操作。
C、张工选中 需要更名的类名,使用快捷键Shift+F6或右键菜单Refactor -> Rename,在弹出框中输入新名称并选择替换范围 后,点击“Refactor”完成更名操作,确保所有相关引用自动更新。
D、张工在代码编辑器中右键点击该类名,选择“Find Usage”,手动浏览所有引用位置并逐一修改为新名称。
68、开发者小张正在使用DevEco Studio开发一款HarmonyOS应用,他遇到了一个仅在应用实际运行环境中出现的问题,需要调试己部署在设备上的应用以定位问题根源,为了能够在应用已经运行的情况下介入调试,小张应该采用哪种调试方法
A、使用“Profile”功能,因为这同样能提供对运行时应用的监控与调试能力。
B、Attach Debugger to Process,这允许他连接到正在运行的应用进程进行调试。
C、Run without Debugging,先让应用自由运行,随后手动附加调试器。
D、使用Debug功能, 将应用重新推包运行调试
attach启动调试-ArkTS代码调试-代码调试-应用/服务调试-DevEco Studio | 华为开发者联盟 (huawei.com)
69、在组件中,经常需要使用字符串、图片等资源。HSP中的组件需要使用资源时,一般将其所用资源放在HSP包内,而非放在HSP的使用方处,以符合高内聚低耦合的原则。下面访问HSP资源错误的是
A、跨包访问HSP内资源时,推荐实现一个资源管理类,以封装对外导出的资源。将需要对外提供的资源封装为一个资源管理类:
// library/src/main/ets/ResManager.ets
export class ResManager{
static getPic(): Resource{
return $r('app.media.pic');
}
static getDesc(): Resource{
return $r('app.string.shared_ desc');
}
}
// 对外暴露的接口,需要在入口文件index.ets中声明:
// library/index.ets
export { ResManager } from './src/main/ets/ResManager';
B、使用相对路径的方式,访问HSP中的资源。
Image("../../resources/base/media/example.png")
.id('example')
.borderRadius('48px')
C、通过$r访问HSP中的资源。
Image($r('app.media.example'))
.id('example')
.borderRadius('48px')
HSP-应用程序包开发与使用-应用程序包基础知识-开发基础知识-基础入门 | 华为开发者联盟 (huawei.com)
70、可以通过下面那个接口拉起导航类的垂域面板
A、startAbilityByType
B、startAbilityByCall
C、startAbility
D、startAbilityForResult
通过startAbilityByType拉起垂类应用-通用意图跳转-应用间跳转-Stage模型开发指导-Ability Kit(程序框架服务)-应用框架 | 华为开发者联盟 (huawei.com)
71、作为应用开发者,你使用hiAppEvent订阅了崩溃事件。应用崩溃后,从onReceive接口返回的AppEventInfo中()属性可以获取崩溃调用栈信息。
A、name
B、domain
C、params
D、eventType
72、下面持续交付&持续部署描述哪个是正确的:
A、持续部署是将代码库中的任何更改都应该自动且快速地投入生产环境。持续部署等同于持续交付。
B、在持续交付实践中,要考虑处理故障回滚和紧急修复,以确保系统在出现问题时能够快速恢复和修复。
C、持续交付(CD,Continuous Delivery): 指的是,频繁的将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。它强调的是,不管怎么更新,软件是随时随地可以交付的。
D、持续交付可以随时随地部署到生产环境
73、某业务团队的架构师发现某个特性用的频率比较少,但是这个特性占用空间资源还是比较大的。为了减少首包下载体积,准备将该特性解耦出来,并对外提供API方便主模块调用。以下说法正确的是()
A、将该特性做成动态加载的har包,暴露接口给主模块使用。
B、将该特性做成H5模块,通过web组件加载远程资源使用。
C、将该特性做成hap包, 通过Ability组件暴露出来给主app使用。
D、将该特性做成按需加载的hsp包,暴露接口给主模块使用。
HSP-应用程序包开发与使用-应用程序包基础知识-开发基础知识-基础入门 | 华为开发者联盟 (huawei.com)
74、以下关于动态import说法正确的是()
A、动态import和静态import相比, 灵活性更好,性能更好。
B、动态import支持懒加载, 所以不能用于提升页面的加载速度。
C、动态import支持加载HSP模块、HAR模块、OHPM包、Native库
D、动态import不支持导 入SDK的API,如@ohos.*
动态import-应用程序包开发与使用-应用程序包基础知识-开发基础知识-基础入门 | 华为开发者联盟 (huawei.com)
75、如果想让outer button响应事件,hitTestBehavior该怎么配
import promptAction from '@ohos.promptAction';
// xxx. ets
@Entry
@Component
struct HitTestBehaviorExample {
build() {
// outer stack
Stack() {
Button('outer button')
.onClick((event) => {
promptAction.showToast({ message: `click事件触发-----++++2` });
})
// inner stack
Stack() {
Button('inner button')
.onTouch((event) => {
promptAction.showToast({ message: `click事件触发------1` });
})
}
.width("100%").height("100%")
.hitTestBehavior(?)
.onTouch((event) => {
console.info('stack touched type: ' + (event as TouchEvent).type)
})
}.width(300).height(300)
}
}
A、HitTestMode. Block
B、HitTestMode.Transparent
C、HitTestMode.None
D、HitTestMode. Default
76、在使用DevEco Studio进行混合语言开发时,开发者小李通过Napi引用了Native 接口的文件(例如d.ts文件)。他想要直接从这些接口跳转到其对应的C/C++函数实现处进行代码审查。请从以下选项中选择最合适的操作步骤来帮助小李实现这一目标
A、在声明或引用 了Native接口的文件中,比如d.ts文件,小李可以直接选中接口名称,右键点击并在弹出的菜单中选择“Go To > Implementation(s)”(转到 > 实现)。还可以使用快捷键CtrI+Alt+B;如果是macOS用户,则使用Command+Option+B,直接跳转到对应的C/C++函数实现位置。
B、为了查看C/C++函数实现,小李必须先切换到DevEco Studio的C/C++开发环境视图,之后在项目的资源管理器中找到对应的C/C++源文件手动打开,才能查看函数代码
C、小李应该打开包含TypeScript接口声明的文件,然后手动在项目中搜索相应的C/C++源文件, 逐个检查以找到匹配的函数实现。
D、小李可以将鼠标光标置于想要查看实现的接口名称上,按下鼠标右键,在出现的上下文菜单中寻找并点击“Find Usages”(查找用法),在结果中筛选出C/C++的实现。
77、HarmonyOS提供了多种包结构,每种包编译后的产物都不同,下面说法错误的是
A、app包编译后的产物是.app文件。
B、hap包编译后的产物是.hap文件。
C、hsp包编译后的产物是.hsp文件。
D、har包编译后的产物是.har文件。
78、下面持续集成描述哪项是错误的:(不确定,把所有选项列出)
A、Martin Fowler说过,”持续集成并不能消除Bug,而是让它们非常容易发现和改正”。
B、持续集成在大型项目(有几十个项目组)也能应用,即便是项目组开发进度不统一也没问题
C、持续集成就是持续编译, 二者异曲同工
D、持续集成(CI, Continuous Intergation):指频繁的, 一天多次将代码集成到主干。
79、关于延迟任务开发使用的接口是
A、使用startBackgroundRunning申请任务,使用stopBackgroundRunning取消任务
B、使用publishReminder发布一个提醒类通知,使用cancelReminder取消一个指定的提醒类通知
C、使用startWork申请任务,使用stopWork取消任务,使用getWorkStatus获取任务状态
D、使用requestSuspendDelay申 请任务,使用getRemainingDelayTime获取任务剩余时间
延迟任务-Background Tasks Kit(后台任务开发服务)-应用框架 | 华为开发者联盟 (huawei.com)
80、开发者张工想要高效地管理HarmonyOS设备中的文件,包括查看文件列表、进行文件搜索、新建及删除操作,以及在设备与PC间传输文件,而无需使用命令行工具。以下哪个选项最能准确概括张工能通过哪个工具直接在DevEco Studio界面完成上述所有操作
A、DevEco Studio的Log面板
B、DevEco Studio的Project Explorer
C、DevEco Studio的Terminal面板
D、DevEco Studio的Device File Browser
查看设备文件-应用/服务调试-DevEco Studio | 华为开发者联盟 (huawei.com)