鸿蒙OS应用试题

41.当标记了@Reuseable的自定义组件实现了组件复用后,这个组件的复用范围是什么?

A.标记了@Reuseable的自定义组件的父组件范围内

B.整个应用内都可以复用

C.标记了@Reuseable的自定义组件的外层容器节点范围内

D.整个页面都可以复用

42.下面持续集成描述哪项是错误的:

A.持续集成(CI,Continuous Intergation): 指频繁的,一天多次将代码集成到主干。

B.Martin Fowler说过,"持续集成并不能消除Bug,而是让它们非常容易发现和改正。”

C.持续集成就是持续编译,二者异曲同工

D.持续集成在大型项目(有几十个项目组)也能应用,即便是项目组开发进度不统一也没问题

43.ArkUI组件复用的作用机制是减少了什么时间从而降低了丢帧率?

A.组件节点渲染时间

B.组件销毁时间

C.组件节点和对象的创建时间

D.数据挂载时间

哪些是持续部署最佳实践?

A. 灰度发布:先在小部分用户或区域进行部署,观察没问题后再全面推广

B.手工部署:持续部署可以采用手工部署的方式发布软件: 1、有一份非常详尽的文档,该文档描述了执行步骤及每个步骤中易出错的地方; 2、以手工测试来确认该应用程序是否运行正确; 3、在发布时,常常会修正一些在发布过程中发现的问题。

C.监控和回滚机制:实时监控部署后的应用状态,如有问题及时回滚,

D.环境一致性:保持开发、测试、生产等环境的高度一致性。

E.自动化部署流程:从代码提交到部署的整个流程应尽可能自动化。

F.开发完成之后再向类生产环境部署:当软件被第一次部署到类生产环境(比如试运行环境)时,就是大 部分开发工作完成时,至少是开发团队认为“该软件开发完成了”。

G. 手工配置管理 1、直接修改生产环境上的配置来改变系统配置; 2、集群中各节点的行为有所不同; 3、靠人手堂恢复环境。手动记载配置包括操作系统、应用服务器、关系型数据库管理系统、Web服务器或其他基础设施设置。

哪些是持续集成最佳实践?

A. 全面的测试套件:包括单元测试、集成测试、功能测试等,以提高代码质量。

B.自动化构建:确保构建过程是完全自动化的,减少人为错误。

C.构建相同代码的 Pipeline 运行多次,得到结果不同。比如,基于同一代码基线,一条 pipeine 构建了5次,只要最后一次通过即可。

D.频繁提交代码:鼓励开发人员经常提交小的代码更改,以便更快地发现问题。

E. 代码审查:在集成前进行代码审查,及时发现潜在问题。

F.快速反馈机制:让开发人员能迅速得知集成结果和测试状态,

G.通常项目上会有一个专职 0ps,在项目可以发布的时候手动触发部署流程,或者需要传递很多参数,让 Pipeline 运行起来。

44.want参数的entities匹配规则错误的是

A.调用方传入的want参数的entities为空,待匹配应用组件的skills配置中的entities为空,则entities匹配成功。

B.调用方传入的want参数的entities为空,待匹配应用组件的skills配置中的entities不为空,则entities匹配失败。

C.调用方传入的want参数的entities不为空,待匹配应用组件的skills配置中的entities为空,则entities

匹配失败。

D.调用方传入的want参数的entities不为空,待匹配应用组件的skills配置中的entities不为空且包含调

用方传入的want参数的entities,则entities匹配成功。

45.从桌面冷启动如下应用,点击change按钮5次整个过程中,代码中的2条log依次出现的次数,最初和最后画面上显示【num=?】的数字是

A.2,4,1,2

B.0,6,16

C.2,4,1,6

D.1,5,1,6

46.Harmony0S提供了多种包结构,每种包编译后的产物都不同,下面说法错误的是

A.hsp包编译后的产物是.hsp文件。

B.hap包编译后的产物是.hap文件

C.har包编译后的产物是.har文件。

D.app包编译后的产物是.app文件

47.某业务团队发现用户对他们App的某个特性使用率并不高,为了节省用户首次下载安装包的体积,考虑将该特性做成按需加载,那么推荐该特性使用的工程模块类型是?

  1.  hap 
  2.  B. hsp
  3.  C. app
  4.  D. har

48.Navigation组件是路由导航的根视图容器 一般作为Page页面的根容器使用,以下关

于Navigation组件说法正确的是()

  1.  Navigation的页面显示模式有单页面、分栏和自适应三种显示模式
  2.  Navigation子页面的根容器可以采用如Colunm、Row这些容器组件。

C.Navigation的子页面可以来自不同的Module

D.Navigation只能在entry类型的Module中使用

49.在开发过程中,我们可以将每个功能模块作为一个独立的Module进行开发。关于 Module,下列选项说法正确的是?

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

存在一份

B. entry类型的Module:应用的主模块,包含应用的入口界面、入口图标和主功能特性,编译后生成entry类型的HAP。每一个应用分发到同一类型的设备上的应用程序包,可以包含一个或多个entry类型的HAP。

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

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

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

50.下面关于Node-API数据类型描述正确的是

A. napi_status:是一个枚举数据类型,表示Node-API接口返回的状态信息

B.napi_env:用于表示Node-API执行时的上下文

C. napi_threadsafe_function_release_mode:该枚举类型定义了两个 常量,用于指定线程安全函数的调用模式

D. napi_threadsafe_function_call_mode:该枚举类型定义了两个常量,用于指定在何时释放线程安全函数的回调函数

ArkTS是鸿蒙生态的应用开发语言。下列说法正确的是

A.针对JavaScript(简称JS) /TS并发能力支持有限的问题,ArkTS对并发编程API和能力进行了增强。

B. ArkTS在保持TypeScript(简称TS)基本语法风格的基础上,进一步通过规范强化静态检查和分析,

使得在程序运行之前的开发期能检测更多错误,提升代码健壮性,并实现更好的运行性能。

C.TS/JS代码支持import ArkTS代码。

D.ArkTS提供了声明式UI范式、状态管理支持等相应的能力,让开发者可以以更简洁、更自然的方式开

发应用。

51.下面关于ArkTS中export用法,正确的是

A.export{ export1 } from "ets file name";

B.export { export1 as alias1 } from "ets file name";

C.export * from "ets file name"

D.export* as name from "ets file name"

53在ArkTS中,以下哪些属性的声明是正确的。

class c{

value1: number =0;

value2?: number= null;

value3: number | undefined = undefined;

value4?: number;

}

A value2

B value4

C value1

D value3

54.应用开发的有些场景中,如果希望根据条件导入模块或者按需导入模块,可以使用动态导入代替静态导入,下面导入场景中适合使用动态import的是

A.当静态导入的模块很明显的降低了代码的加载速度且被使用的可能性很低,或者并不需要马上使用它。

B.当被导入的模块说明符,需要动态构建。

C.当被导入的模块,在加载时并不存在,需要异步获取。

D.当静态导入的模块很明显的占用了大量的系统内存且被使用的可能性很低。

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

A.-enable-export-obfuscation:开启直接导入或导出的类或对象的名称和属性名混淆

B. -disable-obfuscation:关闭所有混淆

C.-enable-toplevel-obfuscation:开启属性混淆

D.-enable-property-obfuscation:开启顶层作用域名称混淆

56.ArkTS中不能使用以下哪些类型。

A.tuple type

B. any

C. unknown

D. union type

57某App有A、B、C、D四个团队分别负责ModuleA、ModuleB、ModuleC和ModuleD四个业务模块,随着业务的发展,ModuleA需要跳转到ModuleB、ModuleC的页面ModuleB需要跳转到ModuleC、ModuleD的界面,Modulec需要跳转到ModuleA的界面,ModuleD需要跳转到ModuleB和ModuleC的界面。由于复杂的依赖关系,导致一旦有变化就需要知会各个团队,所以该团队的架构师想要解耦各个业务模块,以下哪些做法是不推荐的()

A. 采用静态import方式引入对应跳转的页面,

B. 采用RouterModule作为中介者并用动态import解耦各个业务模块。

C. 在RouterModule中采用路由表方式解耦各个业务模块。

D.可以采用Navigation作为页面导航根容器,将其放在entry中,其他Module的页面作为Navigation的子页面。

58.以下代码片段哪几个class/interface违反了ArkTS语法规范

class Person {}

class Student extends Person {}

class Instructor implements Person {}

interface Shape {}

interface Circle implements Shape {)

class Square implements Shape {}

A.Circle

B.Square

C.Student

D.Instructor

59.以下关于HAP(Harmony Ability Package).说法正确的是()

  1.  HAP是应用安装和运行的基本单位,在DevEo co Studio工程目录中,一个HAP对应一个Module。应用打包时,所有的Module都只能生成.hap文件。
  2.  应用工程编出的app文件中,只能包含一个hap文件。

C.应用工程如果包含多个Module,在应用市场上架时,会将多个.hap文件打包成一个.app文件。

D. DevEco Studio会在编译构建时,不需要对HAP进行一致性校验。

60.以下对系统兼容性的理解正确的是

A系统能力都会保持绝对的兼容性,不能因为任何非非兼容性的修改而导致开发者成本上升

B.已发布的系统能力有可能会发生非兼容性变更,比如新增特性或修改问题导致的行为不兼容,这种情况下应用需要关注changelog并进行适配。

C.安全法律法规等不可控因素会导致系统非兼容性变更,开发者需要积极适配

D.应用不需要关注系统的兼容性变化,那都是系统开开发人员需要关注的事情

61.从桌面冷启动如下应用代码,点击Change按钮5次,整个过程中,代码中的2条log依次出现的次数是:

class Data {

num: number

type: string

constructor(num: number,type:string)

{this.num = num;

this.type = type;}

}

@Reusable

@Component

struct Item {

@State data: Data |undefined = undefined;

aboutToAppear(): void {

console.log("Demo log1")

}

aboutToReuse(params: ESObject): void {

console.log("Demo log2");

this.data=params.data

}

build() {

Text("num="+this.data?.num+",type="+this.data?.type)

}

}

@Entry

@Component

struct Test1Page {

data1:Data=new Data(1,"type1")

data2:Data=new Data(2,"type2")

@State data:Data=this.data1

build() {

Column(){

if (this.data.type=="type1"){

Item({data:this.data}).reuseId(this.data.type)

}else {

Item({data:this.data}).reuseId(this.data.type)

}

Button('Change').onClick(()=>{

if (this.data===this.data1) {

this.data=this.data2

}else{

this.data=this.data1

}

})

}

}

}

A.2,4

B.6,0

C1,5

D1,0

62.根据上面代码,以下解释正确的是

@State title: string ="";

@State mode: Mode = Mode.fullScreen;

isShownTitle(): boolean {

if (this.mode == Mode.fullScreen) {

this.title = "Title";

return true;

} else {

this.title = "section";

return false;

}

}

build(){

Column(){

if (this.isShownTitle()){

Text(`${this.title}`)

}

}

}

}

struct changeMode {

@Prop mode: Mode;

build(){

Row({space: 20}) {

Button('full screen').onClick(() => {

this.mode = Mode.fullScreen;

})

Button('half screen').onClick(() => {

this.mode = Mode.halfScreen;

})

}

}

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

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

C.本例子可以运行起来,所以代码没有问题。

)D.在ChangeMode里改变mode的值,会触发其父组件Page的Title内容的切换

63.以下关于ArkUI NavDestination组件的生命周期执行顺序中正确的是

A.onWilappear->onWillShow->onShow->onAppear->onWillHide->onHidden->onWillDisappear->onDisappear

B.onWillappear->onAppear->onWillShow->onShow->onWillHide->onHidden->onWillDisappear->onDisappear

C.onWillappear->onAppear->onWillShow->onShow->onWillDisappear->onWillHide->onHidden->onDisappear

O D.

onWillappear->onAppear->onWillShow->onShow->onWillHide->onWillDisappear->onHidden->onDisappear

64.用户购买商品后,你需要及时发放相关权益。但实际应用场景中,若出现异常将导致应用无法知道用户实际是否支付成功,从而无法及时发放权益,即出现掉单情况。为了确保权益发放,你需要在以下哪些场景检查用户是否存在已购未发货的商品:

A. 应用启动时

B.createPurchase请求返回1001860051-由于已经拥有该商品,购买失败时

C.createPurchase请求返回1001860001-内部错误时

D.finishPurchase请求返回1001860052-由于未拥有该商品,发货失败时

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

星宇工作室

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

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

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

打赏作者

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

抵扣说明:

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

余额充值