HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 单选题序号4

基础认证题库请移步:HarmonyOS应用开发者基础认证题库


注:有读者反馈,题库的代码块比较多,打开文章时会卡死。所以笔者将题库拆分,单选题20个为一组,多选题10个为一组,题库目录如下,读者可以按需跳转。如果对您的阅读产生不便,笔者在这里向大家说声抱歉,请各位读者原谅。完整的md文档,等读者把题库整理完,会将网盘链接发出。

序号目录:


注:题目是乱序,每次考试,选项的顺序都不同

单选题题库 - 序号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')

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

@ohos.hiviewdfx.hiAppEvent (应用事件打点)-ArkTS API-Performance Analysis Kit(性能分析服务)-调测调优-系统 | 华为开发者联盟 (huawei.com)


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、


76、


77、


78、


79、


80、


  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值