1
头图

41、下列ArkTS代码中,违背高性能编程实践的是
0d9b4d0b3671dfc55f6da4950482bb9.png
答案:AC

避免使用稀疏数组
运行时在分配超过1024大小的数组或者针对稀疏数组,会采用hash表的方式来存储元素。在该模式下,相比于用偏移访问数组元素速度较慢。在代码开发时,应尽量避免数组变成稀疏数组。AC违背。

// 直接分配100000大小的数组,运行时会处理成用hash表来存储元素
let count = 100000;
let result: number[] = new Array(count);

// 创建数组后,直接在9999处赋值,会变成稀疏数组
let result: number[] = new Array();
result[9999] = 0;

避免使用联合类型数组
避免使用联合类型数组。避免在数值数组中混合使用整型数据和浮点型数据。
根据业务需要,将相同类型的数据放置在同一数组中。B正确

数值数组推荐使用TypedArray
如果是涉及纯数值计算的场合,推荐使用TypedArray数据结构。D正确。

知识点:ArkTS高性能编程实践

42、下面关于混淆的描述正确的是
801f8bf6ce8bdcdf0cc43c1c90d13b5.png

答案:ABCD
代码混淆简介

代码混淆目前只提供名称混淆的能力(因为其它混淆能力会劣化性能)。 开启代码混淆可以混淆以下名称:B对。
参数名和局部变量名
顶层作用域的名称
属性名称
导出名称
文件名称

配置混淆规则
混淆规则分为两种类型,一种是混淆选项,一种是保留选项;前者是提供顶层作用域名称、属性名称、文件名称等多种混淆功能配置开关,后者是提供各种混淆功能的白名单配置能力。
注意
若修改应用混淆配置,新配置需要重新全量编译应用才能生效。A对。

44、下列关于@ObservedV2装饰器的说法正确的是
b8d93aec0aa6b1c94b5577105fd2220.png

答案:CD

@ObservedV2装饰器和@Trace装饰器:类属性变化观测
@ObservedV2装饰器与@Trace装饰器用于装饰类以及类中的属性,使得被装饰的类和属性具有深度观测的能力

  • @ObservedV2装饰器与@Trace装饰器需要配合使用,单独使用@ObservedV2装饰器或@Trace装饰器没有任何作用。
  • 被@Trace装饰器装饰的属性property变化时,仅会通知property关联的组件进行刷新。
  • 在嵌套类中,嵌套类中的属性property被@Trace装饰且嵌套类被@ObservedV2装饰时,才具有触发UI刷新的能力。
  • 在继承类中,父类或子类中的属性property被@Trace装饰且该property所在类被@ObservedV2装饰时,才具有触发UI刷新的能力。
  • 未被@Trace装饰的属性用在UI中无法感知到变化,也无法触发UI刷新。
  • @ObservedV2的类实例目前不支持使用JSON.stringify进行序列化。

45、下列哪些变量支持父组件初始化

f4f0df7713a421d2b8c70d7989f4a54.png
答案:BD

@Prop变量的传递/访问规则说明
如果本地有初始化,则是可选的,初始化行为和@State保持一致。没有的话,则必选,支持父组件中的常规变量(常规变量对@Prop赋值,只是数值的初始化,常规变量的变化不会触发UI刷新。只有状态变量才能触发UI刷新)、@State、@Link、@Prop、@Provide、@Consume、@ObjectLink、@StorageLink、@StorageProp、@LocalStorageLink和@LocalStorageProp去初始化子组件中的@Prop变量。

@Link变量的传递/访问规则说明
必选。与父组件@State, @StorageLink和@Link 建立双向绑定。允许父组件中@State、@Link、@Prop、@Provide、@Consume、@ObjectLink、@StorageLink、@StorageProp、@LocalStorageLink和@LocalStorageProp装饰变量初始化子组件@Link。

从API version 9开始,@Link子组件从父组件初始化@State的语法为Comp({ aLink: this.aState })。同样Comp({aLink: $aState})也支持。

@LocalStorageProp变量的传递/访问规则说明
@LocalStorageProp不支持从父节点初始化,只能从LocalStorage中key对应的属性初始化,如果没有对应key的话,将使用本地默认值初始化。

@LocalStorageLink变量的传递/访问规则说明
@LocalStorageLink不支持从父节点初始化,只能从LocalStorage中key对应的属性初始化,如果没有对应key的话,将使用本地默认值初始化。

982f903365716ff7934c4aa148f9aa5.png

答案:BCD
初识ArkTS语言
程序性能
从程序稳定性和性能角度考虑,ArkTS将“null-safety”视为一个重要的特性。这就是为什么ArkTS强制进行严格null检查,在ArkTS中,上面的代码总是编译报错。作为交换,这样的代码可以给ArkTS引擎带来更多的信息和有关值的类型保证,这有助于更好地优化性能。
47、在ArkUI线性布局下,自适应布局实现方法的描述正确的是
13c8c841ed8d6484986353826bb07fc.png
自适应拉伸
在线性布局下,常用空白填充组件Blank,在容器主轴方向自动填充空白空间,达到自适应拉伸效果。Row和Column作为容器,只需要添加宽高为百分比,当屏幕宽高发生变化时,会产生自适应效果。
自适应延伸
自适应延伸是指在不同尺寸设备下,当页面的内容超出屏幕大小而无法完全显示时,可以通过滚动条进行拖动展示。这种方法适用于线性布局中内容无法一屏展示的场景。通常有以下两种实现方式。

在List中添加滚动条:当List子项过多一屏放不下时,可以将每一项子元素放置在不同的组件中,通过滚动条进行拖动展示。可以通过scrollBar属性设置滚动条的常驻状态,edgeEffect属性设置拖动到内容最末端的回弹效果。

使用Scroll组件:在线性布局中,开发者可以进行垂直方向或者水平方向的布局。当一屏无法完全显示时,可以在Column或Row组件的外层包裹一个可滚动的容器组件Scroll来实现可滑动的线性布局。
48、以下关于布局元素的组成部分的描述正确的是
587ec2b9ce79356c268b0bcbd270f36.png
答案:ACD

布局元素的组成

  • 组件区域(蓝区方块):组件区域表示组件的大小,width、height属性用于设置组件区域的大小。
  • 组件内容区(黄色方块):组件内容区大小为组件区域大小减去组件的border值,组件内容区大小会作为组件内容(或者子组件)进行大小测算时的布局测算限制。
  • 组件内容(绿色方块):组件内容本身占用的大小,比如文本内容占用的大小。组件内容和组件内容区不一定匹配,比如设置了固定的width和height,此时组件内容的大小就是设置的width和height减去padding和border值,但文本内容则是通过文本布局引擎测算后得到的大小,可能出现文本真实大小小于设置的组件内容区大小。当组件内容和组件内容区大小不一致时,align属性生效,定义组件内容在组件内容区的对齐方式,如居中对齐。
  • 组件布局边界(虚线部分):组件通过margin属性设置外边距时,组件布局边界就是组件区域加上margin的大小。

49、下列关于@Builder自定义构建函数的说法正确的是
a1879323b71cd36cdb6dc12d9716bf0.png

答案:CD

按值传递参数
调用@Builder装饰的函数默认按值传递。当传递的参数为状态变量时,状态变量的改变不会引起@Builder方法内的UI刷新。所以当使用状态变量的时候,推荐使用按引用传递。

限制条件

@Builder装饰的函数内部,不允许修改参数值,否则框架会抛出运行时错误。

装饰器使用说明

  • 允许在自定义组件内定义一个或多个@Builder方法,该方法被认为是该组件的私有、特殊类型的成员函数。
  • 私有自定义构建函数允许在自定义组件内、build方法和其他自定义构建函数中调用。
  • 在自定义函数体中,this指代当前所属组件,组件的状态变量可以在自定义构建函数内访问。建议通过this访问自定义组件的状态变量而不是参数传递。
  • 如果不涉及组件状态变化,建议使用全局的自定义构建方法。
  • 全局自定义构建函数允许在build方法和其他自定义构建函数中调用。

51、开发者小张在开发鸿蒙应用项目时,首先需要涉及当前的工程结构,工程项目结构方案设计时,了解HarmonyOS工程有Stage和FA两种工程模型,经过一系列调研,决定采纳stage模型的原因?
d4237d4dc4fcfd64f7b175174657bef.png

答案:ADC
通过对比认识FA模型与Stage模型

FA模型 通过导出匿名对象、固定入口文件的方式指定应用组件。开发者无法进行派生,不利于扩展能力。

Stage模型采用面向对象的方式,将应用组件以类接口的形式开放给开发者,可以进行派生,利于扩展能力。

53、应用程序包可以通过以下哪些方式进行更新?
1464f44fe5d113e26b6c52a45359934.png

答案:BD

应用程序包的更新

对于开发者,应用程序包的更新和安装流程是一样的。对于终端设备用户,可以通过以下两种方式更新应用程序包:

  • 应用市场内更新:新版本应用通过应用市场上架后,应用市场通知终端用户该应用有新版本,终端用户可以根据通知到应用市场(客户端)进行应用升级。
  • 应用内检测升级:终端用户启动应用时,应用市场检测到该应用有新版本会通知终端用户,可以到应用市场进行应用的下载更新。

60、下列哪些时Per
df5ebf7fc7cf4d354a05a87f8a5d433.png

答案:ABCD

能力范围

  • HiLog流水日志,提供开发者记录和获取流水日志能力。
  • HiTraceMeter和HiTraceChain跟踪,提供开发者Trace度量和跨线程跨进程分布式跟踪的能力。
  • HiAppEvent应用事件,提供开发者记录故障、行为、安全、统计事件的能力,并订阅系统事件,设置数据处理者完成数据上传。
  • FaultLogger故障日志管理,提供开发者主动查询故障日志的通道。
  • HiDebug资源采集,提供开发者获取应用、系统资源的使用情况。

金刚鹦鹉
4.8k 声望257 粉丝