HarmonyOS应用开发高级认证考试答案四--多选题

1.持续集成最佳实践:

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

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

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

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

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


2.Navigation组件说法正确的是(Navigation和Router):

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

②Navigation的页面显示模式有单页面、分栏和自适应三种显示模式


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

①feature类型的Module:应用的动态特性模块,编译后生成feature类型的HAP。一个应用中可以包含一个或多个feature类型的HAP,也可以不包含。

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

③Shared Library:动态共享库。HSP中的代码和资源可以独立编译,远行时在一个进程中代码也只众存在一份。


4.关于TaskPool和Worker的描述正确的是(多线程):

①TaskPool支持设置任务的优先级

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


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

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

B、createPurchase请求返回1001860001-内部错误时

C、应用启动时

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


6.以下哪几个代码段可以实现ArkWeb同层渲染能力(BC)

代码段A:

Web(...).enableNativeEmbedMode(true)

<object id="view" type="native/contents" width="100%" height="100%"style="background-color:red"/>

代码段B:

Web(...).enableNativeEmbedMode(true).registerNativeEmbedRule("native",test")

<object id="view" type="native/contents" width="100%" height="100%"style="background-color:red"/>

代码段C:

Web(...).enableNativeEmbedMode(true).registerNativeEmbedRule("object",test")

<object id="view" type="test/contents" width="100%" height="100%"style="background-color:red"/>

代码段D:

Web(...).enableNativeEmbedMode(true)

<embed id="view" type="native/contents" width="100%" height="100%"style="background-color:red"/>


7.下面关于混淆的描述正确的是哪几项(ABCD)

A、修改应用混淆配置,新配置需要重新全量编译应用才能生效

B、可以在HAR模块工程的build-profile.json5中的obfuscation.consumerFiles字段中配置导出的混淆配置,该配置仅在编译依赖该HAR的模块时生效。

C、在工程build-profile.json5中的obfuscation.ruleOptions.files字段中配置该工程的混淆配置,该配置仅在编译该工程时生效。

D、支持顶层作用域名称、属性名称、文件名称等多种混淆功能


8.以下代码片段哪几处违反了ArkTS语法规范(ACD)

function foo(value1: number,value2: number){

return value1 + value2;

}

A foo();

B foo(1,2);

C foo(1,2,3);

D foo(1,2,3,4);


9.在ArkTS中,以下哪些声明类的方式是正确的(AB)

A. class C1{ value: number =0;}

B. class C2{

 value:number;

constructor(value:number){

this.value=value;

}

}

C. class C3{

constructor(value:number){

this.value=value;

}

D. class C4{ value:number; }


10.下面代码块符合Node-API开发规范的是(CD)(Demo2 和 Demo3)

代码块A:

static napi_value Demo1(napi_env env, napi_callback_info info)

{size_t argc;napi_value argv[10]={nullptr};napi_get_cb_info(env,info,&argc, argv, nullptr, nullptr);return nullptr;}

代码块B:

static napi_value Demo4(napi_env env, napi_callback_info info)

{size_t argc=5;napi_value argv[3]={nullptr};napi_get_cb_info(env,info,&argc, argv, nullptr, nullptr);return nullptr;}

代码块C:

static napi_value Demo2(napi_env env, napi_callback_info info)

{size_t argc =0;

napi_get_cb_info(env,info,&argc, nullptr, nullptr, nullptr);

if(argc ==0){return nullptr;}

napi_value* argv = new napi value[argc];

napi_get_cb_info(env,info,&argc, argv, nullptr, nullptr);// 业务代码

return nullptr;}

代码块D:

static napi_value Demo3(napi_env env, napi_callback_info info)

{size_t argc =2;napi_value argv[2]={nullptr};

napi_get_cb_info(env,info, &argc, nullptr, nullptr, nullptr);

// 业务代码

return nullptr;}


11.以下数据类型中,哪些是Sendable数据。(ABC)

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

class c{}

interface I extends lang.ISendable {}

A. interface l

B. number

C. string

D. class C


12.项目组开发的Harmonyos应用工程,为了保护hap代码资产,如何在DevEcostudio中启用混淆的功能,并设置相应的混淆规则(CD)

A、在混淆规则配置文件consumer-rules.txt中进行混淆规则的配置

B、release模式下将buildOption/arkOptions/ruleOptions/enable设置为false

C、在混淆规则配置文件obfuscation-rules.txt中进行混淆规则的配置

D、release模式下将buildOption/arkOptions/ruleOptions/enable设置为true


13、使用如下的代码去启动一个ability时,下面哪种代码块中skills定义的组件能够被匹配到:(ABCD)

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","host":"www .test.com","pathstartwith" :"query/books","type”:"text/*”}

]}]

代码块B:

"skills":[ {

"uris":[ {

"scheme": "https","type” :"text/*"}]}]

代码块C:

"skills":[ {

"uris":[ {

"scheme":"https","host":"www .test.com","pathstartwith" :"query/books","type" :"text/plain"

}]}]

代码块D:

"skills":[ {

"uris":[ {

"scheme":"https","host":"www .test.com","type" :"text/plain"

}]}]


14、出于安全因素考虑,ArkTs不支持以下哪些语法?(ACD)

A.new Function('a' , 'b', 'return a + b')

B.Object.entries()

C.eval()

D.with()


15、ArkTs对并发编程API和能力进行了增强,以下描述正确的是?(AD)

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

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

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

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


16、下面代码符合ArkTS编程规范的是? (ABCD)

A.const arr =[1,2,3];

B.if(flag){//..}else {//..}

C.function fight(): void {console.log("Swooosh!");}

D.if(isJedi){fight();}


17、以下ABCD代码片段哪几处违反了ArkTS语法规范? (BCD)

class Point {

public x: number;public y: number;

constructor(x:number,y:number){

this.x = x

this.y = y

}}

代码A:let p=new Point(1.0,1.0);

代码B:delete p.x;

代码C:p.z=2.0;

代码D:p.x='He11o!';


18、关于混淆的描述正确的是:(ABCD)

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

B、混淆支持ArkTS/TS/JS文件的混淆

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

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


19、在ArkTS中,以下A、B、C、D个代码片段正确的是   

function fn(x: string | number): string {

return 'value: ’ + x;

}

type funcType = (ns: string) => string;

let func: funcType = fn;

function fn(x: string | number): string {

return 'value: ’ + x;

}

type funcType = (ns: string | number) => string;

let func: funcType = fn;


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

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

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

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

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


21、方舟字节码文件格式,描述正确的是:

①方舟字节码文件中数据类型uint16_t表示16-bit无符号整数,采用小端字节序

②方舟字节码文件是ArkTS/TS/JS编译后的二进制产物


22、以下4个代码片段哪几个函数违反了ArkTS语法规范:(foo1、foo4)

function foo1(value1?: number, value2: number){

if(value1 == undefined){

return value2;}

return value1 + value2;}

function foo4( ...array: number[],value: number){

return value;

}

function foo2(value1: number, value2?: number){

if(value2 == undefined){

return value1;}

return value1 + value2;}

function foo3(value: number, ...array: number[]){return value}


23、ArkTS中,哪些属性声明是正确的:

短的两个1、4


24、ArkTS中的import用法,正确的是: ABCD

A.import { export1 } from "ets file name"

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

C.import * as name from "ets file name"

D.import defaultExport from "ets file name"


25、 Image组件以下哪些方式可显示图片?(ABCD)

A. @Entry

@Component

struct ImageExample {

  build() {

    Column({space:10}){

      Image($r('app.media.earth'))

        .width(100)

        .height(100)

    }

  }

}

B. import { DrawableDescriptor } from '@ohos.arkui.drawableDescriptor'

@Entry

@Component

struct ImageExample {

  private resManager=getContext().resourceManager

  build() {

    Column({space:10}){

    Row(){

      Column(){

        Image(this.resManager.getDrawableDescriptor(($r('app.media.drawable')).id) as DrawableDescriptor)

      }.height('50%')

    }.width('50%')

    }

  }

}

C. 待录入

D. @Entry

@Component

struct ImageExample {

build() {

    Column({space:10}){

    Row(){

      Column(){

        Image("https://www.example.com/xxx.png")

      }.height(100)

    }.width(100)}

    }


26、以下ABC 3处手势,有机会执行的是哪几处?     选A C两个

 A .gesture(

  TapGesture({ count: 2 })

   .onAction((event: GestureEvent) => {

   if (event) {

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

   }) )

C .parallelGesture(…………)


27、以下哪些方式可以实现文本字号20的效果  ACD

A. 包含Text(undefined.{controller:this.controller})

B. 包含Text('This is text').minFontSize(20)

C. 包含Text(){ Span('span letter spacing').fontSize(20) }.fontSize(30)

D. 包含Text('TextAlign set to center').fontSize(20)


28、依次点击ABCD四个按钮,其中不会触发ui刷新的是 

①ButtonA的this.count = 0

②ButtonB的for循环


29、小华正在使用DevEco Studio开发一个复杂的HarmonyOS应用,他意识到代码中有一段逻辑被多次重复使用,为了优化代码结构和减少冗余,他决定将这段逻辑提取出来作为一个独立的方法。同时,他也注意到有些常用的硬编码值可以抽象为常量,以提高代码的可读性和维护性。小华希望利用DevEco Studio的代码重构功能来高效完成这些任务,通过以下哪些操作来实现代码重构,以提升编码效率

①选中需要重构的代码块,右键点击选择“Refactor”,然后选择“Extract Method”来将代码块转换为一个新的函数/方法

②为了简化复杂类型的多次书写,小华可以选择特定类型字面量,通过“Refactor”菜单下的“Extract Type Alias”来创建类型别名

③如果小华识别到一组相关的对象字面值可以抽象为一个接口,他可以直接通过“Refactor”菜单中的“Extract Interface”功能实现

④若需要将局部变量提升为类成员变量,小华只需简单选中变量名,右键选择“Refactor” -> “Promote Local Variable”


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

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

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

③一次上架多端部署

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


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值