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

本来打算找到工作再整理高级的题库,但一直没什么面试机会。宅在家里也不知道干些什么。索性就把高级的题库整理出来了。也算有头有尾。高级的题库更新之后,专业性更强了,不是真正从事这一行的,很难做出来。本人就是个小菜鸡,有一些题,我也不想不明白。题目的答案我尽可能的找到出处,如果读者发现错误或有补充建议,欢迎评论或私信笔者。笔者这篇就当抛砖引玉,各位读者可以当作考试的一个参考

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


注:有读者反馈,题库的代码块比较多,打开文章时会卡死。所以笔者将题库拆分,以20道题为一组,题库目录如下,读者可以按需跳转。如果对您的阅读产生不便,笔者在这里向大家说声抱歉,请各位读者原谅。该题库已整理完毕,笔者不再更新。笔者连续考了三次,都过了,所以答案应该没什么太大问题。有需要题库文档的可以自取。祝各位读者好运(๑¯ω¯๑)。如果各位读者有什么内推的工作机会,也可以悄悄告诉笔者,笔者不胜受恩感激

序号目录:


题库文档链接(自取):https://pan.baidu.com/s/153tDk4dVv_MmLEyzOqW9hQ?pwd=xkgr


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

单选题题库 - 序号1


1、以下关于Taskpool和Worker的描述正确的是

​ A、Worker自行管理命周期,开发者无需关心任务负载高低

B、TaskPool支持任务延时执行

​ C、开发者需要自行管理taskpool的数量及生命周期

​ D、TaskPool和Worker的任务执行时长上限都是无限制

TaskPool和Worker的对比 (TaskPool和Worker)-使用多线程并发能力进行开发-并发-ArkTS(方舟编程语言)-应用框架 | 华为开发者联盟 (huawei.com)


2、以下哪个装饰器用来表示并发共享对象。

​ A、@State

B、@Sendable

​ C、@Shared

​ D、@Style

Sendable开发指导-附录-并发-ArkTS(方舟编程语言)-应用框架 | 华为开发者联盟 (huawei.com)


3、ArkTS支持以下哪些函数(不确定,Object类里都有这些方法)

A、Object.keys();

B、Object.getOwnPropertySymbols();

C、Object.isExtensible();

D、Object.isPrototypeOf();


4、以下哪些赋值语句在ArkTS中是合法。

class C {}

let value1: number = null; 
let value2: string | null = null;
let value3: string | undefined = null;
let value4: C = null

​ A、value1

B、value2

​ C、value3

​ D、value4


5、ArkTS支持以下哪个函数。(不确定,Object类里都有这些方法)

A、Object.values();

B、Object.getOwnPropertyDescriptors();

C、Object.getOwnPropertyDescriptor();

D、Object.hasOwnProperty();


6、下面哪种转场效果在入场动画时,表现为从透明度为0、相对于组件正常显示位置×方向平移100vp的状态,到默认的透明度为1、相对于组件不平移的状态,且透明度动画和平移动画的动画时长均为2000ms

​ A、TransitionEffect.asymmetric(TransitionEffect.OPACITY.animation({duration:2000}),TransitionEffect.translate({x:100}).animation({duration:2000}))

B、TransitionEffect.OPACITY.animation({duration:2000}).combine(TransitionEffect.translate({x:100}))

​ C、TransitionEffect.translate({x:100}).combine(TransitionEffect.OPACITY.animation({duration:2000}))

​ D、TransitionEffect.OPACITY.combine(TransitionEffect.translate({x:100}).animation({duration:2000}))

注:放到代码块里,方便查看

TransitionEffect.asymmetric(TransitionEffect.OPACITY.animation({duration:2000}),
TransitionEffect.translate({x:100}).animation({duration:2000}))
// 答案	=========================================
TransitionEffect.OPACITY
    .animation({duration:2000})
    .combine(TransitionEffect.translate({x:100}))
TransitionEffect
    .translate({x:100})
    .combine(TransitionEffect.OPACITY.animation({duration:2000}))
TransitionEffect.OPACITY
    .combine(TransitionEffect.translate({x:100}).animation({duration:2000}))

出现/消失转场-转场动画-使用动画-UI开发 (ArkTS声明式开发范式)-ArkUI(方舟UI框架)-应用框架 | 华为开发者联盟 (huawei.com)


7、现有一个宽高分别为200px的XComponent组件,其绑定了一个XComponentController(xcController),依次进行如下操作:

(1)xcController.setXComponentSurfaceRect( {surfaceWidth: 150, surfaceHeight: 500})

(2)设置XComponent组件的padding为{ top: 5px, left: 10px, bottom: 15px, right: 20px }

(3)将XComponent组件大小改为300px * 300px

(4)给XComponent组件设置一个宽度为2px的边框

(5)xcController.setXComponentSurfaceRect( { offsetX: -20, offsetY: 50, surfaceWidth: 200, surfaceHeight: -100 } )之后,调用xcController.getXComponentSurfaceRect()的返回值为

A、{ offsetX: 81, offsetY: -89, surfaceWidth: 150, surfaceHeight: 500 }

B、{ offsetX: 81, offsetY: -89, surfaceWidth: 200, surfaceHeight: 0 }

C、{ offsetX: -20, offsetY: 50, surfaceWidth: 200, surfaceHeight: 500 }

D、{ offsetX: 75, offsetY: -100, surfaceWidth: 150, surfaceHeight: 500 }

不确定,把所有选项列出

XComponent-基础组件-基于ArkTS的声明式开发范式-ArkTS组件-ArkUI(方舟UI框架)-应用框架 | 华为开发者联盟 (huawei.com)


8、根据上面代码,以下解释正确的是

注:被注释的代码是额外加上的,用于测试,并非题目原本的

enum Mode {
  fullScreen,
  halfScreen
}

@Entry
@Component
struct Index {

  @State title: string = "";
  @State mode: Mode = Mode.fullScreen;

  isShowTitle(): boolean {
    if (this.mode == Mode.fullScreen) {
      this.title = "Title";

      return true;
    }else {
      this.title = "Section";
      return false;
    }
  }

  build() {
    Column(){
      if (this.isShowTitle()) {
        Text(`${this.title}`)
      } else {
        Text(`${this.title}`)
      }
      ChangeMode({ mode: this.mode})
    }
  }
}

@Component
struct ChangeMode {
  //@Link mode: Mode;
  @Prop mode: Mode;
  build() {
    Row({space: 20}) {
      Button('full screen').onClick(() => {
        this.mode = Mode.fullScreen
      })
      Button('half screen').onClick(() => {
        this.mode = Mode.halfScreen
      })
      //Text(this.mode.toString())
    }
  }
}

​ A、本例子可以运行起来,所以代码没有问题。

​ B、在ChangeMode里改变mode的值,会触发其父组件Page的Title内容的切换。

​ C、为了避免@Prop的拷贝,可以优化使用@Link,在该例子中行为和@Prop一样。

D、在自定义组件Page的build方法里改变状态变量是非法操作,可能导致未定义的异常UI行为。


9、已知下列代码PageOne页面为navigation中的某一子页面,依次点击PageOne页面中toPageTwo按钮,PageTwo页面中toPageOne按钮,此时点击get按钮获取全部名为name的NavDestination页面的位置索引为(不确定,把所有选项列出)

// PageOne.ets
@Component
export struct PageOneTmp {
  @Consume('pageInfos') pageInfos: NavPathStack;

  build() {
    NavDestination() {
      Column() {
        Button('toPageTwo', { stateEffect: true, type: ButtonType.Capsule })
          .width('80%')
          .height(40)
          .margin(20)
          .onClick(() => {
            this.pageInfos.pushPathByName('pageTwo',"")
          })
        Button('get', { stateEffect: true, type: ButtonType.Capsule })
          .width('80%')
          .height(40)
          .margin(20)
          .onClick(() => {
            console.log('获取全部名称为name的NavDestination页面的位置索引', JSON.stringify(this.pageInfos.getIndexByName('PageOne')))
          })
      }.width('100%').height('100%')
    }.title('pageOne')
    .onBackPressed(() => {
      const popDestinationInfo = this.pageInfos.pop()
      console.log('pop返回值' + JSON.stringify(popDestinationInfo))
      return true
    })
  }
}
// PageTwo.ets
export class Pages{
  names: string = ""
  values: NavPathStack | null = null
}

@Builder
export function pageTwoTmp(info: Pages){
  NavDestination() {
    Column(){
      Button('toPageOne', { stateEffect: true, type: ButtonType.Capsule })
        .width('80%')
        .height(40)
        .margin(20)
        .onClick(() => {
          (info.values as NavPathStack).pushPathByName('pageOne', null)
        })
    }.width('100%').height('100%')
  }.title('pageTwo')
  .onBackPressed(() => {
    (info.values as NavPathStack).pop()
    return true
  })
}

A:[1,2]

B:[2,1]

C:[0,2]

D:[0,1]


10、以下示例代码中可以进行动画的属性有哪些?

@Component
struct MyComponent {
  @State compWidth: number = 100;
  @State compHeight: number = 100;
  @State compRadius: number = 32;
  build() {
    Column(){

    }
    //.backgroundColor(Color.Red)
    .width(this.compWidth)  //  1
    .height(this.compHeight)  //  2
    .animation({ curve: Curve.Ease, duration: 200 })
    .borderRadius(this.compRadius)  //  3
    .onClick(() => {
      this.compWidth += 10;
      this.compHeight += 10;
      this.compRadius += 4;
    })
  }
}

/*
@Entry
@Component
struct Index {
  build() {
    Column(){
      MyComponent()
    }
  }
}
*/

​ A、2、3

​ B、1、3

​ C、1、2、3

D、1、2

属性动画接口说明-属性动画-使用动画-UI开发 (ArkTS声明式开发范式)-ArkUI(方舟UI框架)-应用框架 | 华为开发者联盟 (huawei.com)


11、依次点击A、B、C、D四个按钮,其中不会触发UI刷新的是:

class Info{
  name: string;

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

@Entry
@Component
struct Index {
  @State nameList: Info[] = [new Info("Tom"), new Info("Bob"), new Info("John")]

  build() {
    Column() {
      ForEach(this.nameList, (item: Info) => {
        Text(`${item.name}`)
      })
      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")]

        })
    }
  }
}

​ A、A

​ B、B

C、C

​ D、D


12、从桌面冷启动如下应用,点击Change按钮5次,整个过程中,代码中的2条log依次出现的次数,最初和最后画面上显示的【num = ?】的数字是(不确定,题目代码出错)

// ERROR 题目出错

A、0,6,1,6

B、1,5,1,6

C、2,4,1,6

D、2,4,1,2


13、使用promptAction.showToast如何设置显示在其他应用之上?

​ A、ToastShowMode.DEFAULT

​ B、ToastShowMode.SYSTEM_TOP_MOST

C、ToastShowMode.TOP_MOAST

​ D、无需配置,默认显示在其他应用之上

@ohos.promptAction (弹窗)-UI界面-ArkTS API-ArkUI(方舟UI框架)-应用框架 | 华为开发者联盟 (huawei.com)


14、在使用DevEco Studio的Profiler进行HarmonyOS应用性能优化的流程中,以下哪个步骤最恰当地描述了开发者利用Profiler工具进行性能问题识别、定位、优化及验证的完整过程

​ A、仅通过创建深度分析任务,利用perf数据详细分析性能瓶颈,修改代码后,不需再进行验证直接发布应用

​ B、首先使用"Realtime Monitor"实时监控,观察应用资源消耗,一旦发现CPU或内存异常,直接修改代码并重新编译

C、利用"Realtime Monitor"初步识别性能瓶颈,创建深度分析任务定位根因,根据分析结果优化代码,再用"Realtime Monitor"验证优化效果

​ D、在发现应用性能不佳时,直接查看代码逻辑,凭经验修改后,利用Profiler的"Realtime Monitor"确认资源消耗是否降低

性能优化过程简介-使用Profiler进行性能调优-性能分析-DevEco Studio | 华为开发者联盟 (huawei.com)


15、DevEco Studio提供HarmonyOS应用/服务的UI预览界面与源代码文件间的双向预览功能,支持ets文件与预览器界面的双向预览。关于双向预览,下列选项说法错误的是?

​ A、选中预览器UI界面中的组件,则组件树上对应的组件将被选中,同时代码编辑器中的布局文件中对应的代码块高亮显示。

B、双向预览不支持通过组件的属性面板实时修改属性或样式。

​ C、选中布局文件中的代码块,则在UI界面会高亮显示,组件树上的组件节点也会呈现被选中的状态。

​ D、选中组件树中的组件,则对应的代码块和U界面也会高亮显示。


16、项目中包含多个模块和数千行代码。随着开发的深入,项目中的ArkTS源代码文件逐渐积累了大量import语句,其中不乏未使用的import以及不规范的排序情况,关于DevEco Studio的编辑器的"Optimize Imports",以下说法正确的是(不确定,CD都可以清理import语句。)

A、应该手动遍历每个ArkTS文件,逐一检查并删除未使用的import语句,然后按照字母顺序手动排序剩余的import。

B、在DevEco Studio中,没有直接的"Optimize Imports"功能,需要安装第三方插件来实现这个需求。

C、为了快速清理未使用的import,可以选中项目根目录,按下快捷键Ctrl+Alt+O(在macOS上为Control+Option+O),让DevEco Studio自动识别并移除所有未使用的import,并自动按照预设规则排序和合并import。

D、可以在菜单栏中依次点击"Code">"Reformat Code"来达到优化import的目的,因为"Optimize Imports"功能已整合进"Reformat Code"中。

代码阅读-代码编辑-DevEco Studio | 华为开发者联盟 (huawei.com)


17、在使用DevEco Studio的Profiler进行HarmonyOS应用或服务内存管理优化时,以下哪个描述最准确地概述了"Allocation Insight"功能在识别和解决内存问题中的作用

​ A、Allocation Insight详细展示应用运行时的每条语句柄分配记录,便于开发者逐一检查内存使用,但不提供内存泄漏的自动识别功能

​ B、Allocation Insight仅提供内存分配总量的概览,帮助开发者宏观了解内存使用趋势,但对于具体泄漏或抖动问题无能为力

C、Allocation Insight通过分析应用服务运行时的内存分配及使用情况,辅助定位内存泄漏、内存抖动和溢出问题,支持优化内存使用

​ D、Allocation Insight主要关注于内存碎片整理,减少内存分配的不连续性问题,对内存泄漏和溢出问题的检测不是其主要功能

内存分析及优化-基础内存分析:Allocation分析-性能分析-DevEco Studio | 华为开发者联盟 (huawei.com)


18、项目需要同时进行应用和元服务的开发,并针对当前项目工程中的代码可以分别构建出应用和元服务的包,如何在DevEco Studio中设置不同的构建配置,达成这个目的 (不确定,把所有选项列出)

A、 在工程级别build-profile.json5定义两个product,将两个product的bundleType分别设置成app和atomicService

B、修改工程级别的AppScope/app.json5中的bundleType值为atomicService

C、在模块级别build-profile.json5定义两个target,将两个target的bundleType分别设置成app和atomicService

D、修改工程级别的AppScope/app.json5中的bundleType值为app

元服务概述-指南 | 华为开发者联盟 (huawei.com)


19、HarmonyOS应用开发团队正着手优化一款面向全球市场的在线教育应用,该应用在特定课程直播环节出现了性能波动和响应延迟的问题,严重影响用户体验。打算利用DevEco Profiler来进行性能优化。DevEco Profiler其设计核心和主要优势是什么

​ A、DevEco Profiler采用Bottom-Up设计原则,从底层代码细节开始逐步构建性能模型

​ B、DevEco Profiler专注于用户界面设计的美化,使开发者操作更为直观

C、DevEco Profiler依据Top-Down设计理念,通过高度整合的数据展示范式,提供从宏观到微观的性能数据分析,加速开发者定位和解决问题的过程

​ D、DevEco Profiler主要是一个自动化修复工具,能自动检测并解决所有HarmonyOS应用的性能问题

Profiler工具简介-性能分析-DevEco Studio | 华为开发者联盟 (huawei.com)


20、使用DevEco Studio进行复杂的跨设备功能开发与调试工作,期间频繁依赖本地模拟器来模拟多样化的设备环境。在这样的背景下,以下关于DevEco Studio本地模拟器所支持的规格与功能,哪一项描述是准确的

​ A、本地模拟器当前不支持单元测试框架和UI测试框架的运行

​ B、本地模拟器和真机的能力没有任何差异,真机上可以支持的能力在模拟器上都可以

C、本地模拟器上运行的应用无需进行签名,简化了调试过程。

​ D、本地模拟器当前不支持查看HiLog以及FaultLog

模拟器与真机的差异-概述-使用模拟器运行应用/服务-应用/服务运行-DevEco Studio | 华为开发者联盟 (huawei.com)


  • 64
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 25
    评论
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值