鸿蒙OS试题

在ArkTS中,以下哪些声明类的方式是正确的。

class C1 {

value: number = 0;

}

class C2 {

value: number;

constructor(value: number) {

this.value = value;

}

}

class C3 {

constructor(value: number) {

this.value = value;

}

}

class C4 {

value: number;

}

A.C2

B.C1

C.C4

D.C3

hiAppEVent提供的Watcher 接口,订阅到的系统事件,哪些包含 HiLog 日志?

A.启动耗时事件

B.卡死事件

C.崩溃事件

D.CPU高负载事件

在开发过程中,我们可以将每个功能模块作为一个独立的 Module 进行开发。关于

Module,下列选项说法正确的是?

A.Shared Library: 动态共享库。HSP 中的代码和资源可以独立编译,运行时在一个进程

中代码也只会存在一份。

B.feature 类型的 Module: 应用的动态特性模块,编译后生成 feature 类型的 HAP。一个

应用中可以包含一个或多个 feature 类型的 HAP,也可以不包含

C.entry类型的 Module: 应用的主模块,包含应用的入口界面、入口图标和主功能特性

编译后生成entry 类型的 HAP。每一个应用分发到同一类型的设备上的应用程序包,可以

包含一个或多个entry类型的 HAP

D.Static Library: 静态共享库。HAR 中的代码和资源跟随使用方编译,如果有多个使用方

它们的编译产物中会存在多份相同拷贝。:静态共享库。HAR中的代码和资源跟随使用方编译,如果有多个使用方,它们的编译产物中会存在多份相同拷贝。

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

A.TaskPool不支持线程复用

B.TaskPool支持设置任务的优先级

C.Worker支持取消已发起的任务

D.Worker的任务执行时长上限是无限制

ArkTS对并发编程API和能力进行了增强,以下描述正确的是

A.CPU密集型任务场景中,当任务不需要长时间(3分钟)占据后台线程,而是一个个独立的任务时,推荐使用TaskPool进行开发。

B.默认情况下,Sendable数据在ArkTS并发实例间(包括主线程、TaskPool&Worker工作线程)传递的行为是拷贝传递。

C.在并发API的形式上,目前主要有两种:Worker和TaskPool。

D.单次I/O任务的开发场景中,必须使用TaskPool进行开发。

开发者小李正在使用DevEco Studio开发一款面向HarmonyOS的应用,该应用需要在多种设备上表现出一致的稳定性和优秀的用户体验。为了确保高质量的发布,小李意识到需要实施一套全面的测试策略,覆盖代码的自动化测试和手动测试,还需要衡量代码的测试覆盖率,以确定测试的充分性。在DevEco Studio的测试框架下,以下描述中,哪些是正确的

A.无论选择Instrument Test还是Local Test,DevEco Studio均内置了详尽的测试报告功能,实时显示测试进度,且直接在IDE中可查看代码覆盖率报告,无需外部工具。

B.Local Test:测试用例位于test目录,无需设备或模拟器环境,直接在本地执行,专注于ArkTS语言,推荐适用于API版本11及以上的Hvigor工程,目前特别限于Stage模型,并不涵盖C/C++方法。

C.DevEco Studio的测试框架提供测试用例执行能力,包含基础接口以编写和输出测试结果,鼓励用户创建易于维护的自动化测试脚本,并且统计代码覆盖率。

D.Instrument Test:测试用例存储于项目的ohosTest目录,要求在HarmonyOS设备或模拟器上执行,兼容ArkTS与JS语言编写。

在大型软件工程中,一般会伴随着多团队开发,各团队开发自己的业务模块,最后再由集成交付团队集成到一起,下面哪些是大型应用模块化开发最佳实践

A.

使用路由表进行模块间解耦。

B.

一次上架多端部署。

C.

若多个模块依赖了不同版本的HAR,使用OHPM的overrides机制配置指定使用哪个版本的HAR,以减少包大小。

D.

避免用户首次下载应用耗时过长,及过多占用用户空间,不常用功能做成按需加载

如下ABC 3处手势,有机会执行的是哪几处?

@Entry

@Component

struct ListTest {

scroller: Scroller = new Scroller()

scroller2: Scroller = new Scroller()

scroller3: Scroller = new Scroller()

private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

private childRecognizer: GestureRecognizer = new GestureRecognizer()

private currentRecognizer: GestureRecognizer = new GestureRecognizer()

private lastOffset: number = 0

build() {

Stack({ alignContent: Alignment.TopStart }) {

Scroll(this.scroller) {

Column() {

Text("Scroll Area")

.width('90%')

.height(150)

.backgroundColor(0xFFFFFF)

.borderRadius(15)

.fontSize(16)

.textAlign(TextAlign.Center)

.margin({ top: 10 })

List({ space: 20, initialIndex: 0 }) {

ForEach(this.arr, (item: number) => {

ListItem() {

Text('' + item)

.width('100%').height(100).fontSize(16)

.backgroundColor(Color.Blue)

.textAlign(TextAlign.Center).borderRadius(10)

}

}, (item: string) => item)

}

.listDirection(Axis.Vertical) // 排列方向

.scrollBar(BarState.Off)

.friction(0.6)

.divider({ strokeWidth: 2, color: 0xFFFFFF, startMargin: 20, endMargin: 20 }) // 每行之间的分界线

.edgeEffect(EdgeEffect.None) // 边缘效果设置为Spring

.height(1000)

.width('90%')

.id("inner")

}.width('100%')

}

.id("outer")

.height(600)

.scrollable(ScrollDirection.Vertical) // 滚动方向纵向

.scrollBar(BarState.On) // 滚动条常驻显示

.scrollBarColor(Color.Gray) // 滚动条颜色

.scrollBarWidth(10) // 滚动条宽度

.edgeEffect(EdgeEffect.None)

.onScroll((xOffset: number, yOffset: number) => {

console.info(xOffset + ' ' + yOffset)

})

.onScrollEdge((side: Edge) => {

console.info('To the edge')

})

.onScrollStop(() => {

console.info('Scroll Stop')

})

A .gesture(

TapGesture({ count: 2 })

.onAction((event: GestureEvent) => {

if (event) {

this.value = JSON.stringify(event.fingerList[0])

}

})

)

B .gesture(

PanGesture({PanDirection.Vertical})

.onActionUpdate((event: GestureEvent)=>{

console.log("zcb onActionUpdate event offsetY " + event.offsetY + " this.lastOffset " + this.lastOffset + " this.childRecognizer.getGestureState() " + this.childRecognizer.getState())

})

)

C .parallelGesture(

PanGesture({PanDirection.Vertical})

.onActionUpdate((event: GestureEvent)=>{

console.log("zcb onActionUpdate event offsetY " + event.offsetY + " this.lastOffset " + this.lastOffset + " this.childRecognizer.getGestureState() " + this.childRecognizer.getState())

})

)

}.width('100%').height('100%').backgroundColor(0xDCDCDC)

}

}

A.NA

B.C

C.B

D.A

下面关于混淆的描述正确的是

A.API 10及以上版本的Stage模型、编译模式为release时,默认开启代码混淆功能;默认的混淆功能仅会混淆函数参数和局部变量的名称。

B.代码混淆已经被集成了到SDK中,可以在DevEco Studio中方便地使用。

C.混淆支持ArkTS/TS/JS文件的混淆

D.针对工程源码的混淆可以降低工程被破解攻击的风险,缩短函数名、类名和属性名,减小应用的大小。

以下数据类型中,哪些是Sendable数据。

import { lang } from '@kit.ArkTS';

class C {}

interface I extends lang.ISendable {}

A.interface I

B.number

C.string

D.class C

下面关于混淆规则描述正确的是

A.-keep-global-name [,identifiers,.]:指定想保留的属性名

B.-keep-file-name [,identifiers,.]:指定要保留的文件/文件夹的名称

C.-keep-property-name [,identifiers,]:指定要保留的顶层作用域的名称

D.-print-namecache filepath: 将名称缓存保存到指定的文件路径。

下面关于动态import描述正确的是

A.动态import根据入参是否为常量字符串分为常量动态import和变量动态import两种

B.常量动态import也必须配置runtimeOnly选项

C.HAR模块间只有变量动态import时可以进行模块解耦

D.动态导入import()是个异步接口,调用后将返回一个promise

Code Linter针对ArkTS/TS代码进行最佳实践/编程规范方面的检查,最佳实践/编程规范方面的检查规则可以配置,针对codelinter的配置项一下哪些说法是正确的

A.ruleSet:配置检查使用的规则集,规则集支持一次导入多条规则。

B.ignore:配置无需检查的文件目录,其指定的目录或文件需使用相对路径格式,相对于code-linter.json5所在工程根目录,例如:build/**/*。

C.rules:可以基于ruleSet配置的规则集,新增额外规则项,但是无法修改ruleSet中规则默认配置

D.files:配置待检查的文件名单,如未指定目录,规则适用于所有文件,例如:[“**/*.ets”,”**/*.js”,”**/*.ts”]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星宇工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值