首页 > 其他分享 >鸿蒙OS高级应用开发试题

鸿蒙OS高级应用开发试题

时间:2024-08-26 11:21:36浏览次数:9  
标签:10 试题 鸿蒙 代码 number 1fr item colors OS

66.为了加快构建速度,提高开发效率,可以如何调整hvigor配置,从而优化构建速度

A.启用hvigor的incremental,在增量场景下检查任务是否可以跳过

B.启动hvigor的daemon模式,在增量场景下复用缓存

C.启用hvigor的parallel,在增量场景下进行并行编译处理

D.启用hvigor的typeCheck,在增量场景下进行对hvigorfile.ts进行类型检查

使用如下的代码去启动一个ability时,哪种skills定义的组件能够被匹配到:

let want = {

"uri" : "https://www.test.com:8080/query/books",

"type" : "text/plain"

}

context.startAbility(want).then((data))=> {

console.log(TAG + "startAbility success");

}).catch((err))=> {

console.log(TAG + "startAbility failed.");

}

A.

"skills": [

{

"uris":[

{

"scheme": "https",

"type" : "text/*"

}

]

}

]

B.

"skills": [

{

"uris":[

{

"scheme": "https",

"host": "www.test.com",

"type" : "text/plain"

}

]

}

]

C.

"skills": [

{

"uris":[

{

"scheme": "https",

"host": "www.test.com",

"pathStartWith" : "query/books",

"type" : "text/*"

}

]

}

]

D.

"skills": [

{

"uris":[

{

"scheme": "https",

"host": "www.test.com",

"pathStartWith" : "query/books",

"type" : "text/plain"

}

]

}

]

一个应用通常会包含多种功能,将不同的功能特性按模块来划分和管理是一种良好的设计方式。在开发过程中,我们可以将每个功能模块作为一个独立的Module进行开发,下面关于Module的说法正确的是

A.Ability类型的Module,用于实现应用的功能和特性,有两种类型,分别为entry和feature。

B.entry类型的Module,是应用的主模块,一个应用只能包含唯一一个entry类型的HAP。

C.feature类型的Module,应用的动态特性模块,一个应用中可以包含一个或多个feature类型的模块,也可以不包

D.Library类型的Module,用于实现代码和资源的共享,有两种类型,分别为Static Library和Shared Library两种类型。

当使用状态变量进行ArkUI组件间数据通信的时候,如果两个组件间没有直接的套关系(非父子和祖孙关系组件),但是他们又属于同一页面,最佳的装饰器应该选用哪个?

A. LocalStorage

B. AppStorage

C.@State+@Link

D.@Provide+@Consume

hiAppEvent提供的Watcher接口,()属性不配置,会导致编译报错,产生"ArkTSCompiler Error".

A. onReceive

B. triggerCondition

C. onTrigger

D.name

在ArkTs中以下哪些属性的声明是错误的

class c {}

let value1: number = null;

let value2: string lnull = null;

let value3:string undefined = null;

let value4:c= null

A. value4

B. value1

c. value3

D. value2

应用开发中使用的各类资源文件,需要放入特定子目录中存储管理,以下关于资源说法错误的是

A. stage模型多工程情况下,共有的资源文件放到AppScope下的resources目录。

B.resfile目录,应用安装后,resfile资源会被解压到应用沙箱路径,通过Context属性resourceDir获取

到resfile资源目录后,可通过文件路径访问。

C.rawfile目录,支持创建多层子目录,子目录名称可以自定义,文件夹内可以自由放置各类资源文件。目录中的资源文件会被编译成二进制文件,并赋予资源文件ID。

D.base目录是默认存在的目录,二级子目录element用于存放字符串、颜色、布尔值等基础元素,media、profile存放媒体、动画、布局等资源文件。

关于代码门禁理解正确的是

A.代码门禁是一项代码质量保障措施。目的是要求开发人员提交的代码必须满足一些要求才能合入代码仓库。门禁必须强制要求包括编译通过、单元测试覆盖率达标、代码静态检查无告警、全量功能测试用例、DFX专项测试都通过。

B.门禁级检查的范围和版本级检查的范围保持一致,尽可能多的在MR门禁阶段就拦截防护住问题,保障问题可以及时清理掉。

C. 构建是在代码合并后检查已提交代码的功能完整性,这种方法会导致代码合并到master后编译失败导致没有可用版本部署。通过提高滚动构建的频度就可以代替代码门禁,保障代码主干及时发现并解决问题。

D.代码门禁则是在代码合并之前就验证代码来保护主千分支的完整性。通过这种方式,可以保护主分支代码避免因合码导致的构建中断,以确保 master 分支代码始终是可部署的,并且不会因明显的错误而影响到你正在并行开发的同事工作。

一个应用项目工程中,模块依赖关系如下图所示,那么在最终编译结果.app文件中,存在的编译产物是:

A.A.hap + B.har + D.hsp

B.A.hap + B.har + C.har + D.hsp

C.A.hap + D.hsp + C.har

D.A.hap + D.hsp

应用程序开发调试过程中,经常需要安装新应用进行调测,下面安装应用操作错误的是

A. bm install -p ohosapp.hap

B. bm install-p /data/app/

C. bm install -p ohosapp.hap -r

D.hdc install-p ohosapp.hap

我们需要避免在逐帧调用的接口中执行耗时操作,下面哪个选项不属于上述的接口?

A. onTouch

B. aboutToReuse

C. onScroll

D.onAreaChange

一个应用有2个UIAbility组件,其module.json中abilities标签的配置如下方代码。

在手机设备上,执行如下操作后:

1.启动UIAbility1,然后back键返回销毁UIAbility1;

2.启动UIAbility2, 然后back键返回销毁UIAbility2;

3.启动UIAbility2, 然后back键返回销毁UIAbility2;

进入多任务列表,能看看到该应用的几个任务视图:

"abilities": [

{

"name": "UIAbility1",

"srcEntry": "./ets/entryability/Ability1.ets",

"description": "$string:EntryAbility_desc",

"icon": "$media:icon",

"label": "$string:Ability1_label",

"startWindowIcon": "$media:icon",

"startWindowBackground": "$color:start_window_background",

"exported": true,

"launchType": multiton

},

{

"name": "UIAbility2",

"srcEntry": "./ets/entryability/Ability2.ets",

"description": "$string:Ability2_desc",

"icon": "$media:icon",

"label": "$string:Ability2_label",

"startWindowIcon": "$media:icon",

"startWindowBackground": "$color:start_window_background",

"exported": true,

"launchType": singleton,

"removeMissionAfterTerminate":true

}

]

A.3个

B.0个

C.1个

D.2个

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

class C {}

let value1: number = null;

let value2: string | null = null;

let value3: string | undefined = null;

let value4: C = null

A.value2

B.value1

C.value4

D.value3

如何实现类似下图布局

A.

@Entry

@Component

struct Demo {

  // 忽略其他辅助代码

  dataSource: ItemDataSource = new ItemDataSource(100)

  itemHeightArray: number[] = []

  colors: number[] = [0xFFC0CB, 0xDA70D6, 0x6B8E23, 0x6A5ACD, 0x00FFFF, 0x00FF7F]

  scroller: Scroller = new Scroller()

  

  aboutToAppear() {

    this.getItemSizeArray()

  }

  build() {

    Scroll() {

      Column() {

        Grid() {

          GridItem() {

            Text('GoodsTypeList')

          }

          .backgroundColor(this.colors[0])

          GridItem() {

            Text('AppletService')

          }

          .backgroundColor(this.colors[1])

          GridItem() {

            Text('ReloadData')

          }

          .backgroundColor(this.colors[2])

        }

        .rowsGap(10)

        .columnsTemplate('1fr')

        .rowsTemplate('1fr 1fr 1fr')

        .width('100%')

        .height(100)

        .margin({

          top: 10,

          left: 5,

          bottom: 10,

          right: 5

        })

        Grid() {

          LazyForEach(this.datasource, (item: number) => {

            GridItem() {

              // 使用可复用自定义组件

              ReusableItem({ item: item })

            }

            .width('100%')

            .height(this.itemHeightArray[item % 100])

            .backgroundColor(this.colors[item % 5])

          }, (item: number) => '' + item + this.itemHeightArray[item % 100])

        }

        .columnsTemplate("1fr 1fr")

        .columnsGap(10)

        .rowsGap(5)

        .width('100%')

        .nestedScroll({

          scrollForward: NestedScrollMode.PARENT_FIRST,

          scrollBackward: NestedScrollMode.SELF_FIRST

        })

      }

    }

    .scrollBar(BarState.Off)

    .edgeEffect(EdgeEffect.None)

  }

}

B.

@Entry

@Component

struct Demo {

  // 忽略其他辅助代码

  dataSource: ItemDataSource = new ItemDataSource(100)

  itemHeightArray: number[] = []

  colors: number[] = [0xFFC0CB, 0xDA70D6, 0x6B8E23, 0x6A5ACD, 0x00FFFF, 0x00FF7F]

  scroller: Scroller = new Scroller()

  @State sections: WaterFlowSections = new WaterFlowSections()

  sectionMargin: Margin = { top: 10, left: 5, bottom: 10, right: 5 }

  oneColumnSection: SectionOptions = {

    itemsCount: 3,

    crossCount: 1,

    rowsGap: 10,

    margin: this.sectionMargin,

    onGetItemMainSizeByIndex: (index: number) => {

      return this.itemHeightArray[index % 100]

    }

  }

  lastSection: SectionOptions = {

    itemsCount: 97,

    crossCount: 2,

    margin: this.sectionMargin,

    onGetItemMainSizeByIndex: (index: number) => {

      return this.itemHeightArray[index % 100]

    }

  }

  aboutToAppear() {

    this.setItemSizeArray()

    // 初始化瀑布流分组信息

    let sectionOptions: SectionOptions[] = []

    sectionOptions.push(this.oneColumnSection)

    sectionOptions.push(this.lastSection)

    this.sections.splice(0, 0, sectionOptions)

  }

  build() {

      WaterFlow({ scroller: this.scroller, sections: this.sections }) {

        LazyForEach(this.dataSource, (item: number) => {

          FlowItem() {

            ReusableFlowItem({ item: item })

          }

          .width('100%')

          .backgroundColor(this.colors[item % 5])

        }, (item: string) => item)

      }

      .columnsGap(10)

      .rowsGap(5)

      .backgroundColor(0xFAEEE0)

      .width('100%')

      .height('100%')

  }

}

C.

@Entry

@Component

struct Demo {

  // 忽略其他辅助代码

  dataSource: ItemDataSource = new ItemDataSource(100)

  itemHeightArray: number[] = []

  colors: number[] = [0xFFC0CB, 0xDA70D6, 0x6B8E23, 0x6A5ACD, 0x00FFFF, 0x00FF7F]

  scroller: Scroller = new Scroller()

  aboutToAppear() {

    this.getItemSizeArray()

  }

  build() {

    Column() {

      List({ scroller: this.scroller, space: 10 }) {

        ListItem() {

          Grid() {

            GridItem() {

              Text('GoodsTypeList')

            }.backgroundColor(this.colors[0])

            GridItem() {

              Text('AppletService')

            }.backgroundColor(this.colors[1])

            GridItem() {

              Text('ReloadData')

            }.backgroundColor(this.colors[2])

          }

          .rowsGap(10)

          .columnsTemplate('1fr')

          .rowsTemplate('1fr 1fr 1fr')

          .width('100%')

          .height(100)

        }

        ListItem() {

          WaterFlow() {

            LazyForEach(this.datasource, (item: number, index: number) => {

              FlowItem() {

                // 使用可复用自定义组件

                ReusableItem({ item: item + index })

              }

              .width('100%')

              .height(this.itemHeightArray[item % 100])

              .backgroundColor(this.colors[item % 5])

            }, (item: number) => '' + item + this.itemHeightArray[item % 100])

          }

          .id('waterflow')

          .columnsTemplate("1fr 1fr")

          .columnsGap(10)

          .rowsGap(5)

          .width('100%')

          .height('100%')

          .nestedScroll({

            scrollForward: NestedScrollMode.PARENT_FIRST,

            scrollBackward: NestedScrollMode.SELF_FIRST

          })

        }

      }

      .scrollBar(BarState.Off)

      .edgeEffect(EdgeEffect.None)

    }

    .width('100%')

    .padding({ left: 10, right: 10 })

  }

}

关于静态检查描述错误的是:

A.静态检查 可以检测代码中的语法错误和潜在的逻辑错误,也支持检测代码在运行时现的错误,因此静态检查可以替代动态测试。

B.静态检查 是指使用静态代码分析工具对软件的“静态"(不运行的)代码进行分析的一种方法,找出代码中潜在的漏洞。静态代码分析器检查源代码,找出特定的漏洞,并检查代码是否符合各种编码标准。

C.静态分析工 具也在不断改进和升级。使用高级的静态分析工具可以提高代码检测的准确性和效率。例如,一些静态分析工具可以检测代码中的内存泄漏、死锁问题,从而提高代码的质量和可靠性。

D. HarmonyOS应用可以采用ARKTS静态检查工具

标签:10,试题,鸿蒙,代码,number,1fr,item,colors,OS
From: https://blog.csdn.net/SSRppIG/article/details/141537185

相关文章

  • golang 标准库(os)
    os标准库实现了平台(操作系统)无关的编程接口。1.创建文件packagemainimport( "fmt" "os")//创建文件funcCreatFile(FileNamestring){ f,err:=os.Create(FileName) iferr!=nil{ fmt.Println("err:",err) }else{ fmt.Printf("创建文件%v成......
  • 2024年智能革命:HarmonyOS NEXT与盘古大模型5.0的颠覆性融合
    引言2024年,这一年注定在全球智能设备市场的历史上写下浓墨重彩的一笔。作为全球科技巨头,华为再次以其前瞻性的布局,推动了技术与应用的深度融合。在这个充满变革的时代,华为通过不断扩展的鸿蒙生态系统,重新定义了操作系统与AI技术的结合方式。你是否已经感受到这场变革的力量?在全......
  • Linux环境下的Mysql数据库入门-基于Centos系统
    关系型数据库:oracle===》收钱,大型的公司msyql===》开源的免费的sqlserver===>微软非关系型数据库:hbase===>大数据‘Redismangdb下载mysql:yuminstallmysqlyuminstallmysql-serverrpm-qa|grep-imysql===》查看数据库有没有安装好servicemysqld......
  • Authentication scenarios and recommendations MSAL vs Microsoft.Identity.Web
    AuthenticationscenariosandrecommendationsIfyouhaveawebapporanAPIrunninginAzureAppService,youcanrestrictaccesstoitbasedontheidentityoftheusersorapplicationsthatrequestit.AppServiceoffersseveralauthenticationsolution......
  • Redis入门篇 - CentOS 7下载、安装Redis实操演示
    文章记录了在CentOS7上,通过源码的形式,下载安装Redis的操作过程进入要安装Redis的目录cd/usr/local下载源码压缩包wgethttps://download.redis.io/redis-stable.tar.gz#不同版本可能地址不同下载完成后,使用ll命令检查,可以看到下载的压缩包:下载完成后,解压......
  • 鸿蒙DevEco Studio 快捷键
    window版快捷键 相关说明Ctrl+Q 查看API说明⽂档(官方神器)Ctrl+F 查找Ctrl+shift+F 全局查找Ctrl+R 替换Ctrl+shift+R 全局替换Ctrl+Z 撤销Ctrl+D 当前行+1Ctrl+Y 删除当行Ctrl+Enter 光标后面换行Ctrl+G 跳转至某一行Ctrl+Alt+L 格式化Ctrl+N 快速打......
  • ROS机器人入门系列(二)实现HelloWorld(c++/python)
    一、实现流程1、创建工作空间2、创建功能包3、编辑源文件4、编辑配置文件5、编译并执行其中,c++和python的差异仅体现在3,4两部,其他流程基本一致。二、创建工作空间和创建功能包的实现2.1 创建工作空间并初始化(1)创建工作空间mkdir-p自定义工作空间名称/src这里......
  • FreeRTOS 快速入门(八)之任务通知
    目录一、任务通知1、基本概念2、优势及限制3、通知状态和通知值二、任务通知的使用1、xTaskNotifyGive/ulTaskNotifyTake2、xTaskNotify/xTaskNotifyWait3、xTaskNotifyAndQuery一、任务通知1、基本概念FreeRTOS从V8.2.0版本开始提供任务通知这个功能,每个任务......
  • Centos7(最小化安装)系统源代码安装mysql5.7.44版本
    官网下载mysql源代码安装包步骤(旧档案-版本下载方式)-CSDN博客下载cmake操作步骤-CSDN博客下载ncurses操作步骤-CSDN博客下载bison操作步骤-CSDN博客下载boost操作步骤-CSDN博客安装之前由于是最小化安装centos7安装一些开发环境和工具包文章使用国内阿里源cd/etc/yum.r......
  • 线程池相关面试题
    一、JDK自带的线程池有那些?1.Executors.newCachedThreadPool()创建一个可缓存线程的线程池,若线程池长度超出需要,可回收线程,若没有可回收,则新建线程2.Executors.newFixedThreadPool()创建定长线程池,可控制线程最大并发数,超出的线程在队列中等待3.Executors.newScheduled......