**
鸿蒙高级开发者认证题库(留下的就是选项可自行搜索对应题目作答)
ps:此题目分数在90左右,如果有疑问的题目,请评论留言
如果觉得这里很乱看不清楚可以查看在线文档
**
1.作为应用开发者,你使用hiappevent订阅了崩溃事件。应用崩溃后,从onreceive接口返回的appeventinfo中()属性可以获取崩溃调用信息。
d. params
2.某个应用开发了一个uiabilitya,其启动模式是specified,并且对应的abilitystage的实现如下;
import abilitystage from ‘@ohos.app.ability.abilitystage’;
import type want from ‘@ohos.app.ability.want’;export default class myabilitystage extends abilitystage {this.instanceindex = 0;
onacceptwant(want: want):string {
if(want.abilityname === ‘uiabilitya’){
if(want.parameters && want.parameters.instancekey === ‘test’){return test instance + this.instanceindex++;} else {
依次调用如下方法4次启动uiabilitya,value分别是"test"“test”“testa”“testa”,则当前运行期uiabilifunction testspecified(context, value){
let want: want ={
d. 3个
3.通过aa工具拉起com.example.test的entryability,并传参给entryability,具体参数是number类型的[key1,1][key2,2]和string类型的[key3,teststring]
[key4,
那边下面那个aa 命令是正确的
“”
b.aa start -b com.example.test -a entryability --pi key1 1 --pi key2 2 --ps key3 teststring – psn key4
4一个应用的一个uiablity,其exported字段配置为false,以下哪个场景可以拉起这
个uiability.
d.caller应用在后台,申请了长时任务,有startinvisible_ability权限;
5.下面的配置存在有几处错误
module.json5配置文件:
'module":{
“name”: “entry”
“abilities”:[
{
“name”:“entryability”“srcentry”:./ets/entryability/entryability.ets"
.··“skills”:[
f
entities":["entity.system.home
,
“actions”:
"ohos.want.action.home
entities":
"entity.system.home
“actions”:[
"ohos.want.action.home
“metadata”:[
“name”:
“ohos.entry.shortcuts”
“resource”:
“
p
r
o
f
i
l
e
:
s
h
o
r
t
c
u
t
s
c
o
n
f
i
g
"
在
/
r
e
s
o
u
r
c
e
s
/
b
a
s
e
/
p
r
o
f
i
l
e
/
日录下配置
s
h
o
r
t
c
u
t
s
c
o
n
f
i
g
.
j
s
o
n
配置文件
:
s
h
o
r
t
c
u
t
s
"
:
[
′
s
h
o
r
t
c
u
t
i
d
"
:
"
l
a
b
e
l
"
:
"
s
h
o
r
t
c
u
t
l
a
b
e
l
"
i
c
o
n
"
:
"
profile:shortcuts_config" 在/resources/base/profile/日录下配置shortcuts_config.json配置文件: shortcuts":[ 'shortcutid": "label":"shortcutlabel"icon":"
profile:shortcutsconfig"在/resources/base/profile/日录下配置shortcutsconfig.json配置文件:shortcuts":[′shortcutid":"label":"shortcutlabel"icon":"media:shortcuticon”
“wants”:[
“bundlename”:“com.ohos.hello”
“modulename”:
“abilityname”:
entryability
d.1
6下面的配置存在有几处错误()
app.json5配置文件:
{
“app”: {
“bundlename”: “com.example.myapplication”,
“vendor”: “example”,
“versioncode”: 1000000,
“versionname”: “1.0.2”,
“icon”: “
m
e
d
i
a
:
a
p
p
i
c
o
n
"
,
"
l
a
b
e
l
"
:
"
media:app_icon", "label": "
media:appicon","label":"string:app_name”,
“bundletype”: “app”
}
}
module.json5配置文件:
{
“module”: {
“name”: “feature”,
// …
“atomicservice”: {
"preloads":[
{
"modulename":"feature"
}
]
}
}
}
d.2
5.在编译构建hap时,会从hap模块及依赖的模块中收集资源文件,如果不同模块下的资源文件出现重名冲突时,会按照优先级进行覆盖,现在有一个hap依赖了两个har,依赖配置如下所示:
// oh-package.json5
“dependencies”:
“dayjs”: “^1.10.4"
“lottie”:“^2.0.0’
在资源覆盖时,以下优先级排序正确的是()
c.appscope>hap包自身模块>dayjs模块>lottie模块
6.张工在使用deveco studio开发harmonyos应用时,遇到了代码编译警告和错误。为了提高开发效率,哪一项正确描述了张工如何利用devecostudio的quick rix功能来有效管理和修复代码中的问题?
c.张工通过双击shift键打开搜索框,输入"problems“打开问题工具面板,双击具体告警条目可直接跳转到问题代码行。接着,将光标置于告警位置,利用弹出的悬浮窗选择合适的修复建议或点击“more actions”以查看更多修复选项。
7.项目需要为不同的设备形态(如手机、智能手表)提供定制化构建。请说明如何在deveco studio中设置不同的构建配置,以生成针对不同设备的nap包?
d.在模块级别build-profile.json5定义多个target在每个target的config/devicetype中定义不同的设备类型
8.在开发harmonyos应用工程时,随着业务的发展,现在需要创建一个模块,关于在 deveco studio中创建module,下列选项哪种方式是错误的?
b.在hvigor目录下,单击鼠标右键,选择new>module…,创建新的module,此时module将创建在该文件目录下。
9.小李正在使用deveco studio进行harmony0s应用的开发工作,他需要对一个频繁被调用的函数calculatedata()进行重构,为了帮助小李高效地找到calculatedata()函数的所有引用位置,并确保重构时考虑周全,以下哪个步骤是正确的使用deveco studio的“find usages”功能的操作方法
d.小李只需将光标定位在calculatedata(函数名上,右键点击并选择“find usages”,或者直接使用快捷键alt+ f7(macos为option+f7),deveco studio会自动列出该函数在项目中的所有引用位直。
10.在使用deveco studio的profiler进行harmony0s应用性能优化的流程中,以下哪个步骤12最恰当地描述了开发者利用profiler工具进行性能问题识别、定位、优化及验证的完整过程
a.利用“realtime monitor”初步识别性能瓶颈,创建深度分析任务定位根因,根据分析结果优化代码再用“realtime monitor”验证优化效果
11.在使用deveco studio的profiler进行harmony0s应用或服务性能分析时,面对应用出现卡顿、加载慢等性能瓶颈问题,以下哪个描述最贴切地说明了“time场景分析任务”的功能及其对开发者优化流程的帮助
a.time场景分析任务展示热点区域内的cpu和进程级调用栈耗时情况,支持代码跳转,助力开发者快速定位并优化耗时较长的代码段
12.在一个包含多个模块(如entry、feature、service、library等)的大型harmony0s应用项目中,如果某个模块feature对另外一个公共库模块library有依赖,如何通过deveco studio正确配置项目依赖关系
a. 在feature的oh-package,json5文件的dependencies字段中配置library的依赖
13.开发者开发了一个应用,该应用只有一个hap包,其module.ison5中abilities的配置如下所示,包含1个uiability(无web组件)、1个formextensionability组件、
1个workschedulerextensionability组件,那么该应用在运行过程中,
最多会存在几个应用进程,
abilities":[
{
“entryability”“name”
“./etc/entryability/entr"srcentry’
“$string:entryability"description”
“exported”:ture
extensionabilities”:
“clockformextensionability’“name”:
“srcentrance”:”./ets/form/clockhorme
“type”:" form"
“name”:"tipworkschedulerextensionabi
c.3个
14.arkts支持以下哪些函数
b.object.keys();
15.可以通过下面那个接口拉起导航类的垂域面板.
d. startabilitybytype
16.har(harmony archive)是harmony0s提供的共享包,以下关于har的描述错误的是
a.har不支持使用page页面
17.在编译构建hap时,会从hap模块及依赖的模块中收集资源文件,如果不同模块下的资源文件出现重名冲突时,会按照优先级进行覆盖,现在有一个hap依赖了两个har,依赖配置如下所示:
// oh-package.json5
“dependencies”:
“dayjs”: “^1.10.4"
“lottie”:“^2.0.0’
在资源覆盖时,以下优先级排序正确的是()
c.appscope>hap包自身模块>dayjs模块>lottie模块
18.张工在使用deveco studio开发harmonyos应用时,遇到了代码编译警告和错误。为了提高开发效率,哪一项正确描述了张工如何利用devecostudio的quick rix功能来有效管理和修复代码中的问题?
c.张工通过双击shift键打开搜索框,输入"problems“打开问题工具面板,双击具体告警条目可直接跳转到问题代码行。接着,将光标置于告警位置,利用弹出的悬浮窗选择合适的修复建议或点击“more actions”以查看更多修复选项。
19.在一个包含多个模块(如entry、feature、har、hsp等)的大型harmony0s应用项目中,如果要对某个静态共享模块构建出静态构建包产物,如何通过deveco studio进行构建
a.选中har模块,点击build菜单栏make module’har
20.项目需要为不同的设备形态(如手机、智能手表)提供定制化构建。请说明如何在deveco studio中设置不同的构建配置,以生成针对不同设备的hap包?
d.在模块级别build-profile.json5定义多个target在每个target的config/devicetype中定义不同的设备类型
21.在开发harmonyos应用工程时,随着业务的发展,现在需要创建一个模块,关于在 deveco studio中创建module,下列选项哪种方式是错误的?
b.在hvigor目录下,单击鼠标右键,选择new>module…,创建新的module,此时module将创建在该文件目录下。
22.在一个包含多个模块(如entry、feature、service、library等)的大型harmony0s应用项目中,如果某个模块feature对另外一个公共库模块library有依赖,如何通过deveco studio正确配置项目依赖关系
a. 在feature的oh-package,json5文件的dependencies字段中配置library的依赖
23.项目中包含多个模块和数千行代码。随着开发的深入,项目中的arkts源代码文件逐渐积累了大量import语句,其中不乏未使用的import以及不规范的排序情况,关于deveco studio的编辑器的“optimize imports”,以下说法正确的是
c可以在菜单栏中依次点击“code”>“reformatcode”来达到优化import的目的,因为“optimizelmports”功能已整合进“reformat code”中。
24.使用promptaction.showtoast如何设置显示在其他应用之上?
d.toastshowmode,top moast
25.为了使isshow参数值与半模态界面的状态同步,可以使用下列那种方式双向绑定参数?
d. column() {
button(“transition modal 1”)
.onclick(() => {
this.isshow = true
})
.fontsize(20)
.margin(10)
.bindsheet($$this.isshow, this.mybuilder(), {height: this.sheetheight, dragbar: this.showdragbar, backgroundcolor: color.green, onappear: () => {console.log(“bindsheet onappear.”)}, ondisappear: () => {console.log(“bindsheet ondisappear.”)}})
}
.justifycontent(flexalign.center)
.width(‘100%’)
.height(‘100%’)
26.下面哪种转场效果在入场动画时,表现为从透明度为0、相对于组件正常显示位置x方向平移100vp的状态,到默认的透明度为1、相对于组件不平移的状态,且透明度动画和平移动画的动画时长均为2000ms
b.transitioneffect.opaclty.animation({duration.2000}).combine(transitioneffect.translate({x:100}))
27.在方舟字节码的函数调用规范中,前三个参数表示的含义分别是
b. 函数对象本身、new.target、this
28.下面关于方舟字节码格式pref_imm16_v8_v8描述正确的是
a. 16位前缀操作码,16位立即数,2个8位寄存器
29.下面关于方舟字节码格式imm16_id16_imm8描述正确的是
c.8位操作码,16位立即数,16位id,8位立即数
30.以下关于垂直滚动grid组件使用cachedcount属性的说明正确的是
d.设置cachedcount为1,则grid在显示范围上下各缓存1个gridltem
31.以下示例代码中可以进行动画的属性有哪些?
struct mycomponent {
@state compwidth: number = 100;
@state compheight: number = 100;
@state compradius: number = 32;
build() {
column() {
}
.backgroundcolor(“#ffcb3b3b”)
.width(this.compwidth) //1
.height(this.compheight) // 2
.animation({ curve: curve.ease, duration: 200 })
.borderradius(this.compradius) //3
.onclick(() => {
this.compwidth += 10;
this.compheight += 10;
this.compradius += 4;
showtoast(`宽度${this.compwidth}`+`高度${this.compheight}`+`圆角${this.compradius}`)
})
b. 1、2、3
32.arkts支持以下哪个函数?
d. object.values();
33.以下哪个装饰器用来表示并发共享对象。
d. @sendable
34.作为一个应用开发者,想搭建运维平台,想在应用内定时读取当前的内存信息,可以通过()接口来实现。
b. hidebug
35.以下哪些赋值语句在arkts中是合法。
class a {
v: number = 0;
}
class b extends a{
u: string =‘’;
}
class c {
v:number=0;
}
let a1: a= new c();
let a2:a= new b();
let a3:b= new a();
let a4:c= new b()
d a2
36.依次点击a、b、c、d四个按钮,其中不会触发ui刷新的是
button("c")
.onclick(() => {
this.namelist[0].name = "jim";
})
37.开发者小李遇到了一个复杂的问题,该问题仅在特定的代码执行路径上出现,且难以复现。他使用的是c++进行核心算法开发,代码的逻辑密集且对性能要求极高,deveco studio为c/c++开发者提供的高级调试能力,以下哪个能力可以帮助小李查看代码历史执行路径,回溯到关键的变量状态
d.反向调试能力:允许开发者在调试过程中回退回到之前的代码行或断点,不仅查看过去的堆栈信息,还能重现历史的全局、静态和局部变量状态,帮助深入理解代码历史行为,特鄙视对于复杂逻辑和难以浮现的bug定位至关重要
38.当前您在开发一个arkts、stage模型的harmony0s工程,关于当前arkts工程目录结构,下列选项说法错误的是?(这道题我选的b 我看有人说c)
b.entry>src>main>module.json5:stage模型模块配置文件,主要包含hap的配置信息、应用在具体设备上的配置信息以及应用的全局配置信息。
c.build-profile.json5:应用级编译构建任务脚本,
39.开发者张工想要高效地管理harmony0s设备中的文件,包括查看文件列表、进行文件搜索、新建及删除操作,以及在设备与pc间传输文件,而无需使用命令行工具。以下哪个选项最能准确概括张工能通过哪个工具直接在deveco studio界面完成上述所有操作
b.deveco studio的device file browser
40.在使用deveco studio进行混合语言开发时,开发者小李通过napi引用了native 接口的文件(例如d.ts文件)。他想要直接从这些接口跳转到其对应的c/c++函数实现处进行代码审查。请从以下选项中选择最合适的操作步骤来帮助小李实现这一目标
b.在声明或引用了native接口的文件中,比如d.ts文件,小李可以直接选中接口名称,右键点击并在弹出的菜单中选择“go to>implementation(s)”(转到>实现)。还可以使用快捷键ctrl+alt+b;如果是macos用户,则使用command+option+b,直接跳转到对应的c/c++函数实现位置。
41.当标记了@reuseable的自定义组件实现了组件复用后,这个组件的复用范围是什么?
a.标记了@reuseable的自定义组件的父组件范围内
42.下面持续集成描述哪项是错误的:
c.持续集成就是持续编译,二者异曲同工
43.arkui组件复用的作用机制是减少了什么时间从而降低了丢帧率?
c.组件节点和对象的创建时间
13哪些是持续部署最佳实践?
a. 灰度发布:先在小部分用户或区域进行部署,观察没问题后再全面推广
c.监控和回滚机制:实时监控部署后的应用状态,如有问题及时回滚,
d.环境一致性:保持开发、测试、生产等环境的高度一致性。
e.自动化部署流程:从代码提交到部署的整个流程应尽可能自动化。
11哪些是持续集成最佳实践?
a. 全面的测试套件:包括单元测试、集成测试、功能测试等,以提高代码质量。
b.自动化构建:确保构建过程是完全自动化的,减少人为错误。
d.频繁提交代码:鼓励开发人员经常提交小的代码更改,以便更快地发现问题。
e. 代码审查:在集成前进行代码审查,及时发现潜在问题。
f.快速反馈机制:让开发人员能迅速得知集成结果和测试状态,
44.want参数的entities匹配规则错误的是
则entities匹配成功。
b.调用方传入的want参数的entities为空,待匹配应用组件的skills配置中的entities不为空,则entities匹配失败。
45.从桌面冷启动如下应用,点击change按钮5次整个过程中,代码中的2条log依次出现的次数,最初和最后画面上显示【num=?】的数字是
a.2,4,1,2
46.harmony0s提供了多种包结构,每种包编译后的产物都不同,下面说法错误的是
a.hsp包编译后的产物是.hsp文件。
47.某业务团队发现用户对他们app的某个特性使用率并不高,为了节省用户首次下载安装包的体积,考虑将该特性做成按需加载,那么推荐该特性使用的工程模块类型是?
a.hap
b.hsp
48.navigation组件是路由导航的根视图容器 一般作为page页面的根容器使用,以下关
于navigation组件说法正确的是()
a.navigation的页面显示模式有单页面、分栏和自适应三种显示模式
c.navigation的子页面可以来自不同的module
49.在开发过程中,我们可以将每个功能模块作为一个独立的module进行开发。关于 module,下列选项说法正确的是?
a.shared library:动态共享库。hsp中的代码和资源可以独立编译,运行时在一个进程中代码也只会
存在一份。
c.static library:静态共享库。har中的代码和资源跟随使用方编译,如果有多个使用方,它们的编译产物中会存在多份相同拷贝。
d.feature类型的module:应用的动态特性模块,编译后生成feature类型的hap。一个应用中可以包
含一个或多个feature类型的hap,也可以不包含。
50.下面关于node-api数据类型描述正确的是
a. napi_status:是一个枚举数据类型,表示node-api接口返回的状态信息
b.napi_env:用于表示node-api执行时的上下文
arkts是鸿蒙生态的应用开发语言。下列说法正确的是
a.针对javascript(简称js) /ts并发能力支持有限的问题,arkts对并发编程api和能力进行了增强。
b. arkts在保持typescript(简称ts)基本语法风格的基础上,进一步通过规范强化静态检查和分析,
使得在程序运行之前的开发期能检测更多错误,提升代码健壮性,并实现更好的运行性能。
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;
}
b value4
c value1
d value3
54.应用开发的有些场景中,如果希望根据条件导入模块或者按需导入模块,可以使用动态导入代替静态导入,下面导入场景中适合使用动态import的是
a.当静态导入的模块很明显的降低了代码的加载速度且被使用的可能性很低,或者并不需要马上使用它。
b.当被导入的模块说明符,需要动态构建。
c.当被导入的模块,在加载时并不存在,需要异步获取。
d.当静态导入的模块很明显的占用了大量的系统内存且被使用的可能性很低。
55.下面关于混淆规则描述正确的是
a.-enable-export-obfuscation:开启直接导入或导出的类或对象的名称和属性名混淆
b. -disable-obfuscation:关闭所有混淆
56.arkts中不能使用以下哪些类型。
b. any
c. unknown
57某app有a、b、c、d四个团队分别负责modulea、moduleb、modulec和moduled四个业务模块,随着业务的发展,modulea需要跳转到moduleb、modulec的页面moduleb需要跳转到modulec、moduled的界面,modulec需要跳转到modulea的界面,moduled需要跳转到moduleb和modulec的界面。由于复杂的依赖关系,导致一旦有变化就需要知会各个团队,所以该团队的架构师想要解耦各个业务模块,以下哪些做法是不推荐的()
a. 采用静态import方式引入对应跳转的页面,
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
d.instructor
59.以下关于hap(harmony ability package).说法正确的是()
c.应用工程如果包含多个module,在应用市场上架时,会将多个.hap文件打包成一个.app文件。
60.以下对系统兼容性的理解正确的是
b.已发布的系统能力有可能会发生非兼容性变更,比如新增特性或修改问题导致的行为不兼容,这种情况下应用需要关注changelog并进行适配。
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
}
})
}
}
}
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;
})
}
}
b.在自定义组件page的build方法里改变状态变量是非法操作,可能导致未定义的异常ui行为。
63.以下关于arkui navdestination组件的生命周期执行顺序中正确的是
b.onwillappear->onappear->onwillshow->onshow->onwillhide->onhidden->onwilldisappear->ondisappear
64.用户购买商品后,你需要及时发放相关权益。但实际应用场景中,若出现异常将导致应用无法知道用户实际是否支付成功,从而无法及时发放权益,即出现掉单情况。为了确保权益发放,你需要在以下哪些场景检查用户是否存在已购未发货的商品:
a. 应用启动时
b.createpurchase请求返回1001860051-由于已经拥有该商品,购买失败时
c.createpurchase请求返回1001860001-内部错误时
65.在arkts中,以下代码片段正确的是
c.
function fn(x: string | number): string {
return 'value: ’ + x;
}
type functype = (ns: string) => string;
let func: functype = fn;
d.
function fn(x: string | number): string {
return 'value: ’ + x;
}
type functype = (ns: string | number) => string;
let func: functype = fn;
66.为了加快构建速度,提高开发效率,可以如何调整hvigor配置,从而优化构建速度
a.启用hvigor的incremental,在增量场景下检查任务是否可以跳过
b.启动hvigor的daemon模式,在增量场景下复用缓存
c.启用hvigor的parallel,在增量场景下进行并行编译处理
44使用如下的代码去启动一个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”
}
]
}
]
55一个应用通常会包含多种功能,将不同的功能特性按模块来划分和管理是一种良好的设计方式。在开发过程中,我们可以将每个功能模块作为一个独立的module进行开发,下面关于module的说法正确的是
a.ability类型的module,用于实现应用的功能和特性,有两种类型,分别为entry和feature。
c.feature类型的module,应用的动态特性模块,一个应用中可以包含一个或多个feature类型的模块,也可以不包
d.library类型的module,用于实现代码和资源的共享,有两种类型,分别为static library和shared library两种类型。
22当使用状态变量进行arkui组件间数据通信的时候,如果两个组件间没有直接的套关系(非父子和祖孙关系组件),但是他们又属于同一页面,最佳的装饰器应该选用哪个?
a. localstorage
11 hiappevent提供的watcher接口,()属性不配置,会导致编译报错,产生"arktscompiler error".
d.name
12在arkts中以下哪些属性的声明是错误的
class c {}
let value1: number = null;
let value2: string lnull = null;
let value3:string undefined = null;
let value4:c= null
d. value2
13应用开发中使用的各类资源文件,需要放入特定子目录中存储管理,以下关于资源说法错误的是
c.rawfile目录,支持创建多层子目录,子目录名称可以自定义,文件夹内可以自由放置各类资源文件。目录中的资源文件会被编译成二进制文件,并赋予资源文件id。
14关于代码门禁理解正确的是
d.代码门禁则是在代码合并之前就验证代码来保护主千分支的完整性。通过这种方式,可以保护主分支代码避免因合码导致的构建中断,以确保 master 分支代码始终是可部署的,并且不会因明显的错误而影响到你正在并行开发的同事工作。
15一个应用项目工程中,模块依赖关系如下图所示,那么在最终编译结果.app文件中,存在的编译产物是:
d.a.hap + d.hsp
16应用程序开发调试过程中,经常需要安装新应用进行调测,下面安装应用操作错误的是
d.hdc install-p ohosapp.hap
17我们需要避免在逐帧调用的接口中执行耗时操作,下面哪个选项不属于上述的接口?
b. abouttoreuse
18一个应用有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”: “
s
t
r
i
n
g
:
e
n
t
r
y
a
b
i
l
i
t
y
d
e
s
c
"
,
"
i
c
o
n
"
:
"
string:entryability_desc", "icon": "
string:entryabilitydesc","icon":"media:icon”,
“label”: “
s
t
r
i
n
g
:
a
b
i
l
i
t
y
1
l
a
b
e
l
"
,
"
s
t
a
r
t
w
i
n
d
o
w
i
c
o
n
"
:
"
string:ability1_label", "startwindowicon": "
string:ability1label","startwindowicon":"media:icon”,
“startwindowbackground”: “katex parse error: expected 'eof', got '}' at position 84: …e": multiton }̲, { "name…string:ability2_desc”,
“icon”: “
m
e
d
i
a
:
i
c
o
n
"
,
"
l
a
b
e
l
"
:
"
media:icon", "label": "
media:icon","label":"string:ability2_label”,
“startwindowicon”: “
m
e
d
i
a
:
i
c
o
n
"
,
"
s
t
a
r
t
w
i
n
d
o
w
b
a
c
k
g
r
o
u
n
d
"
:
"
media:icon", "startwindowbackground": "
media:icon","startwindowbackground":"color:start_window_background”,
“exported”: true,
“launchtype”: singleton,
“removemissionafterterminate”:true
}
]
a.3个
21以下哪些赋值语句在arkts中是合法。
class c {}
let value1: number = null;
let value2: string | null = null;
let value3: string | undefined = null;
let value4: c = null
a.value2
22如何实现类似下图布局
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 })
}
}
23关于静态检查描述错误的是:
a.静态检查 可以检测代码中的语法错误和潜在的逻辑错误,也支持检测代码在运行时现的错误,因此静态检查可以替代动态测试。
24一个复杂的项目,该项目不仅包含主入口模块(entry module), 还有多个特性的功能模块
(feature modules/hsp), 并且这些模块间存在着相互调用关系。为了确保在调试过程中能够完整地测试所有交互逻辑,需要将涉及到的所有模块的hap包都部署到目标设备上。请从以下选项中选择正确的操作步骤来配置deveco studio, 以便一次性部署和调试项目中的多个模块
c. 进入“run> edit configurations’菜单,
在“deploy multi hap"选项卡下,勾选“deploymulti hap packages",随后在列表中选择需要部署的模块。
26以下关于应用架构技术选型说法不正确的是()
b.随着业务的发展,应用功能会越来越多,某些功能可以做成动态加载,动态加载的模块采用har工程来构建,方便复用和共享。
27应用发生崩溃,()接口可以获取到崩溃时调用栈
d. hiappevent
28现有一个宽高分别为200px的xcomponent组件,其绑定了一个
xcomponentcontroller(xccontroller),依次进行如下操作:
(1)xccontroller.setxcomponentsurfacerect( {surfacewidth: 150,surfaceheight:500})
(2)设置xcomponent组件的padding为{ top:5px,left:10px,bottom:15px,right:20px}
(3)将xcomponent组件大小改为300pxx300px
(4)给xcomponent组件设置一个宽度为2px的边框
(5)xccontroller.setxcomponentsurfacerect({
offsetx: -20,offsety:50,surfacewidth:200,surfaceheight:-100})之后,调用xccontroller.getxcomponentsurfacerect()的返回值为
b. f offsetx: 75, offsety: -100, surfacewidth: 150, surfaceheight: 500 }
55在modulea(hap类型)中有一个图片名为image.png,在moduleb(har类型)也存在一个图片名为image.png,而modulea依赖于moduleb,那么在modulea的编译产物hap包中,image.png存在情况是:
a.仅存在modulea的image.png
52如下哪些方式可实现图片动态播放?
a.
@entry
@component
struct imageanimatorexample {
@state iterations: number = 1
build() {
column({ space: 10 }) {
imageanimator()
.images([
{
src: $r(‘app.media.img1’)
},
{
src: $r(‘app.media.img2’)
},
{
src: $r(‘app.media.img3’)
},
{
src: $r(‘app.media.img4’)
}
])
.duration(2000)
.fillmode(fillmode.none).iterations(this.iterations).width(340).height(240)
.margin({ top: 100 })
}.width(‘100%’).height(‘100%’)
}
}
c.
import {animationoptions, animateddrawabledescriptor} from ‘@ohos.arkui.drawabledescriptor’
import image from ‘@ohos.multimedia.image’
@entry
@component
struct imageexample {
pixelmaps: array = [];
options: animationoptions = {duration:2000, iterations:1};
@state animated: animateddrawabledescriptor | undefined = undefined;
async abouttoappear() {
this.pixelmaps = await this.getpixelmaps();
this.animated = new animateddrawabledescriptor(this.pixelmaps, this.options);
}
build() {
column() {
row() {
image(this.animated)
.width(‘500px’).height(‘280px’)
}.height(‘50%’)
row() {
button(‘once’).width(100).padding(5).onclick(() => {
this.options = {duration:2000, iterations:1};
this.animated = new animateddrawabledescriptor(this.pixelmaps, this.options);
}).margin(5)
}
}.width(‘50%’)
}
private async getpixmaplistfrommedia(resource: resource) {
let unit8array = await getcontext(this)?.resourcemanager?.getmediacontent({
bundlename: resource.bundlename,
modulename: resource.modulename,
id: resource.id
})
let imagesource = image.createimagesource(unit8array.buffer.slice(0, unit8array.buffer.bytelength))
let createpixelmap: array<image.pixelmap> = await imagesource.createpixelmaplist({
desiredpixelformat: image.pixelmapformat.rgba_8888
})
await imagesource.release()
return createpixelmap
}
private async getpixelmaps() {
let mypixelmaps:array = await this.getpixmaplistfrommedia($r(‘app.media.icon’))//对应资源图片名后缀为gif
return mypixelmaps;
}
}
d.
@entry
@component
struct imageexample {
build() {
column({ space: 10 }) {
image($r(‘app.media.earth’)) //对应资源图片名后缀为gif
.width(100)
.height(100)
}
}
}
52当前动态import支持导入的模块类型有哪些?
a.动态import支持加载ohpm模块
b.动态import支持加载本地har模块
c.动态import支持加载远程har模块
d.动态import支持加载hsp模块
33deveco studio提供harmonyos应用/服务的ui预览界面与源代码文件间的双向预览功能,支持ets文件与预览器界面的双向预览。关于双向预览,下列选项说法错误的是?
a.双向预览不支持通过组件的属性面板实时修改属性或样式。
44deveco studio提供的便捷功能来提高开发效率。他了解到,通过一个特定的操作流程,可以直接依据父类的模板生成子类中需要重写的方法代码,而无需手动编写完整方法体,在deveco studio中,如何正确使用0verride methods功能来快速生成子类需要重写的方法代码
c.将光标定位到子类的定义处,按下ctrl+0(或右键单击选择generate.>override methods),在弹出的对话框中选择要重写的方法,点击ok完成生成。
2以下关于localstorage的说法正确有哪些?
a.被@component装饰的组件最多可以访问一个localstorage实例和appstorage,未被@entry装饰的组件不可被独立分配localstorage实例,只能接受父组件的localstorage实例。
b.应用程序可以创建多个localstorage实例,localstorage实例可以在页面内共享,也可以通过getshared接口,获取在uiability里创建的getshared,实现跨页面、uiability内共享。
d.组件树的根节点,即被@entry装饰的@component,可以被分配一个localstorage实例,此组件的所有子组件实例将自动获得对该localstorage实例的访问权限。
2项目组开发的harmonyos应用工程,为了保护hap代码资产,如何在deveco studio中启用混淆的功能,并设置相应的混淆规则
a.
release模式下将buildoption/arkoptions/ruleoptions/enable设置为true
b.
在混淆规则配置文件obfuscation-rules.txt中进行混淆规则的配置
3以下哪些是可以在navigation中使用pushpathbyname接口传递的params的参数类型
a.arraybuffer
c.string
d.record<string,string>
31以下哪些实现方式可实现文本字号20的效果
b.
@entry
@component
struct spanexample {
build() {
flex({ direction: flexdirection.column, alignitems: itemalign.start, justifycontent: flexalign.spacebetween }) {
text() {
span(‘span letter spacing’)
.letterspacing(3)
.fontsize(20)
}.fontsize(30)
}.width(‘100%’).height(250).padding({ left: 35, right: 35, top: 35 })
}
}
c.
import { lengthmetrics, lengthunit } from ‘@ohos.arkui.node’
@entry
@component
struct index {
fontstyleattr: textstyle = new textstyle({fontsize:lengthmetrics.vp(20)});
mutablestyledstring: mutablestyledstring = new mutablestyledstring(“hello”, [{
start: 0,
length: 5,
styledkey: styledstringkey.font,
styledvalue: this.fontstyleattr
}]);
controller: textcontroller = new textcontroller();
async onpageshow() {
this.controller.setstyledstring(this.mutablestyledstring)
}
build() {
column() {
// 显示属性字符串
text(undefined, { controller: this.controller })
}.width(‘100%’)
}
}
d.
// xxx.ets
@entry
@component
struct index {
build() {
flex({ direction: flexdirection.column, alignitems: itemalign.start, justifycontent: flexalign.spacebetween }) {
// 文本水平方向对齐方式设置
// 单行文本
text(‘textalign set to center.’)
.textalign(textalign.center)
.fontsize(20)
.border({ width: 1 })
.padding(10)
.width(‘100%’)
}.height(600).width(350).padding({ left: 35, right: 35, top: 35 })
}
}
44list组件onscrollindex事件触发时机是
a.list组件列表滚动时每帧触发
b.list组件首次加载完成时触发
c.list组件显示区域内第一个子组件或最后一个子组件或中间位置子组件索引值变化时发
22下面代码符合node-api开发规范的是
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);
// 业务代码
delete argv;
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;
}
45以下代码片段哪几处违反了arkts语法规范
class point{
public x:number
public y:number
constructor(x:number,y:number) {
this.x=x
this.y=y
}
}
let p=new point(1.0,1.0)
delete p.x;
p.z=2.0;
p.x=‘hello’;
d.let p=new point(1.0,1.0)
66arkts是鸿蒙生态的应用开发语言。以下哪些选项是arkts的设计理念。
a.arkts保留了ts大部分的语法特性,帮助开发者更容易上手arkts。
c.通过规范强化静态检查和分析,减少运行时的类型检查,从而降低了运行时负载,提升执行性能。
d.通过规范强化静态检查和分析,使得许多错误在编译时可以被检测出来,降低代码运行错误的风险。
87使用arkui组件复用之后,还是没有显著提升列表滑动场景的性能,属于组件复用未生效可能的原因有?
a.页面嵌套了过多自定义组件
c.复用的自定义组件中使用if等条件渲染语句导致结构不相同,未使用reuseld标记。
d.在abouttoreuse回调函数中更新了冗余的状态变量
40在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
13hiappevent提供的watcher接口,订阅到的系统事件,哪些包含hilog日志?
b.卡死事件
c.崩溃事件
89在开发过程中,我们可以将每个功能模块作为一个独立的module进行开发。关于module,下列选项说法正确的是?
a.shared library:动态共享库。hsp中的代码和资源可以独立编译,运行时在一个进程中代码也只会存在一份。
b.feature类型的module:应用的动态特性模块,编译后生成feature类型的hap。一个应用中可以包含一个或多个feature类型的hap,也可以不包含。
d.static library:静态共享库。har中的代码和资源跟随使用方编译,如果有多个使用方,它们的编译产物中会存在多份相同拷贝。
76以下关于taskpool和worker的描述正确的是
b.taskpool支持设置任务的优先级
d.worker的任务执行时长上限是无限制
86arkts对并发编程api和能力进行了增强,以下描述正确的是
a.cpu密集型任务场景中,当任务不需要长时间(3分钟)占据后台线程,而是一个个独立的任务时,推荐使用taskpool进行开发。
c.在并发api的形式上,目前主要有两种:worker和taskpool。
67开发者小李正在使用deveco studio开发一款面向harmonyos的应用,该应用需要在多种设备上表现出一致的稳定性和优秀的用户体验。为了确保高质量的发布,小李意识到需要实施一套全面的测试策略,覆盖代码的自动化测试和手动测试,还需要衡量代码的测试覆盖率,以确定测试的充分性。在deveco studio的测试框架下,以下描述中,哪些是正确的
a.无论选择instrument test还是local test,deveco studio均内置了详尽的测试报告功能,实时显示测试进度,且直接在ide中可查看代码覆盖率报告,无需外部工具。
c.deveco studio的测试框架提供测试用例执行能力,包含基础接口以编写和输出测试结果,鼓励用户创建易于维护的自动化测试脚本,并且统计代码覆盖率。
d.instrument test:测试用例存储于项目的ohostest目录,要求在harmonyos设备或模拟器上执行,兼容arkts与js语言编写。
89在大型软件工程中,一般会伴随着多团队开发,各团队开发自己的业务模块,最后再由集成交付团队集成到一起,下面哪些是大型应用模块化开发最佳实践
a.
使用路由表进行模块间解耦。
b.
一次上架多端部署。
c.
若多个模块依赖了不同版本的har,使用ohpm的overrides机制配置指定使用哪个版本的har,以减少包大小。
d.
避免用户首次下载应用耗时过长,及过多占用用户空间,不常用功能做成按需加载
66如下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)
}
}
b.c
d.a
77下面关于混淆的描述正确的是
a.api 10及以上版本的stage模型、编译模式为release时,默认开启代码混淆功能;默认的混淆功能仅会混淆函数参数和局部变量的名称。
b.代码混淆已经被集成了到sdk中,可以在deveco studio中方便地使用。
c.混淆支持arkts/ts/js文件的混淆
d.针对工程源码的混淆可以降低工程被破解攻击的风险,缩短函数名、类名和属性名,减小应用的大小。
88以下数据类型中,哪些是sendable数据。
import { lang } from ‘@kit.arkts’;
class c {}
interface i extends lang.isendable {}
a.interface i
b.number
c.string
90下面关于混淆规则描述正确的是
b.-keep-file-name [,identifiers,.]:指定要保留的文件/文件夹的名称
d.-print-namecache filepath: 将名称缓存保存到指定的文件路径。
下面关于动态import描述正确的是
a.动态import根据入参是否为常量字符串分为常量动态import和变量动态import两种
c.har模块间只有变量动态import时可以进行模块解耦
d.动态导入import()是个异步接口,调用后将返回一个promise
74code linter针对arkts/ts代码进行最佳实践/编程规范方面的检查,最佳实践/编程规范方面的检查规则可以配置,针对codelinter的配置项一下哪些说法是正确的
a.ruleset:配置检查使用的规则集,规则集支持一次导入多条规则。
b.ignore:配置无需检查的文件目录,其指定的目录或文件需使用相对路径格式,相对于code-linter.json5所在工程根目录,例如:build/**/*。
d.files:配置待检查的文件名单,如未指定目录,规则适用于所有文件,例如:[“/*.ets”,”/.js”,”**/.ts”]
97依次点击a、b、c、d四个按钮,其中不会触发ui刷新的是:
@entry
@component
struct index {
@state count: number = 0;
@state @watch(‘onvaluechange’) value: number = 50;
onvaluechange() {
this.count = this.value;
}
build() {
column() {
text(${this.count}
)
button(“a”)
.onclick(() => {
this.count = 0;
})
button(“b”)
.onclick(() => {
for (let i = 0; i < 1000; i++) {
this.count = i;
}
for (let i = 1000; i > 0; i–) {
this.count = i;
}
this.count–;
})
button(“c”)
.onclick(() => {
this.value = 100;
})
button(“d”)
.onclick(() => {
setinterval(()=>{
this.count++;
}, 1000)
})
}
}
}
a.b
c.a
34在开发过程中,我们可以将每个功能模块作为一个独立的module进行开发。关于module,下列选项说法正确的是?
a.shared类型的module:动态共享库。hsp中的代码和资源可以独立编译,运行时在一个进程中代码也只会存在一份。
b.har类型的module:静态共享库。har中的代码和资源跟随使用方编译,如果有多个使用方,它们的编译产物中会存在多份相同拷贝。
c.feature类型的module:应用的动态特性模块,编译后生成feature类型的hap。一个应用中可以包含一个或多个feature类型的hap,也可以不包含。
76处于安全因素考虑,arkts不支持以下哪些语法。
a.
with()
b.
eval()
43下面关于混淆的描述正确的是
b.支持顶层作用域名称、属性名称、文件名称等多种混淆功能
d.修改应用混淆配置,新配置需要重新全量编译应用才能生效
21以下哪些方式可以实现arkweb同层渲染能力 ()
a.
web(…).enablenativeembedmode(true).registernativeembedrule(“object”, “test”)
d.
web(…).enablenativeembedmode(true)
67下面代码符合arkts编程规范的是
b.
if(condition) {
console.log(‘success’);}
c.
let maxcount =1qy
let iscompleted =false;
let pointx = 0;
let pointy = 0;
98在使用deveco studio的profiler进行harmony0s应用或服务内存管理优化时,以下哪个描述最准确地概述了“allocation insight"功能在识别和解决内存问题中的作用
a.allocation insight通过分析应用服务运行时的内存分配及使用情况,辅助定位内存泄漏、内存抖动和溢出问题,支持优化内存使用
77关于自动化测试描述正确的是:
c.xts子系统是认证测试套件的集合,当前包括acts(application compatibility test suite)应用兼容性测试套件,后续会拓展dcts(device compatibility test suite)设备兼容性测试套件等。
66下面关于方舟字节码文件格式描述正确的是
b.方舟字节码文件中数据类型uint16_t表示16-bit无符号整数,采用小端字节序
d.方舟字节码文件是arkts/ts/js编译后的二进制产物
45在基于stage模型开发的应用项目代码下,每个模块都存在一个module.json5配置文件,用于配置模块的基本信息,以下module.json5配置文件正确的是
a.
{
“module”: {
“name”: “aname”,
“type”: “har”,
“devicetypes”: [
“default”, “tablet” ]
}
}
c.
{
“module”: {
“name”: “bname”,
“type”: “shared”,
“devicetypes”: [
“default”,
“tablet”
],
“deliverywithinstall”: true,
“pages”: “$profile:main_pages”
}
}
d.
{
“module”: {
“name”: “application”,
“type”: “feature”,
“description”: “
s
t
r
i
n
g
:
m
o
d
u
l
e
d
e
s
c
"
,
"
m
a
i
n
e
l
e
m
e
n
t
"
:
"
a
p
p
l
i
c
a
t
i
o
n
a
b
i
l
i
t
y
"
,
"
d
e
v
i
c
e
t
y
p
e
s
"
:
[
"
d
e
f
a
u
l
t
"
,
"
t
a
b
l
e
t
"
]
,
"
d
e
l
i
v
e
r
y
w
i
t
h
i
n
s
t
a
l
l
"
:
t
r
u
e
,
"
i
n
s
t
a
l
l
a
t
i
o
n
f
r
e
e
"
:
f
a
l
s
e
,
"
p
a
g
e
s
"
:
"
string:module_desc", "mainelement": "applicationability", "devicetypes": [ "default", "tablet" ], "deliverywithinstall": true, "installationfree": false, "pages": "
string:moduledesc","mainelement":"applicationability","devicetypes":["default","tablet"],"deliverywithinstall":true,"installationfree":false,"pages":"profile:main_pages”,
“abilities”: [
{
“name”: “applicationability”,
“srcentry”: “./ets/applicationability/applicationability.ets”,
“description”: “
s
t
r
i
n
g
:
a
p
p
l
i
c
a
t
i
o
n
a
b
i
l
i
t
y
d
e
s
c
"
,
"
i
c
o
n
"
:
"
string:applicationability_desc", "icon": "
string:applicationabilitydesc","icon":"media:icon”,
“label”: “
s
t
r
i
n
g
:
a
p
p
l
i
c
a
t
i
o
n
a
b
i
l
i
t
y
l
a
b
e
l
"
,
"
s
t
a
r
t
w
i
n
d
o
w
i
c
o
n
"
:
"
string:applicationability_label", "startwindowicon": "
string:applicationabilitylabel","startwindowicon":"media:starticon”,
“startwindowbackground”: “$color:start_window_background”,
“exported”: true
}
]
}
}
43以下关于arkts线程实例间传输实现方式描述正确的是
import { taskpool, worker } from ‘@kit.arkts’;
@sendable
class a {}
let a: a = new a();
@concurrent
function foo(a: a) {}
let task: taskpool.task = new taskpool.task(foo, a)
let w = new worker.threadworker(“entry/ets/workers/worker.ets”)
taskpool.execute(task).then(() => {});
w.postmessagewithsharedsendable(a);
task.setclonelist([a]);
taskpool.execute(task).then(() => {});
w.postmessage(a);
a.
taskpool.execute(task).then(() => {});,taskpool 共享传输实现方式
d.w.postmessagewithsharedsendable(a);,worker 共享传输实现方式
21 image组件以下哪些方式可显示图片?
a.
@entry
@component
struct imageexample {
build() {
column({ space: 10 }) {
image($r(‘app.media.earth’))
.width(100)
.height(100)
}
}
}
b.
@entry
@component
struct imageexample {
build() {
column({ space: 10 }) {
image(“https://www.example.com/xxx.png”)
.width(100)
.height(100)
}
}
}
c.
import image from ‘@ohos.multimedia.image’
@entry
@component
struct imageexample {
@state imagepixelmap: image.pixelmap | undefined = undefined
async abouttoappear() {
this.imagepixelmap = await this.getpixmapfrommedia($r(‘app.media.app_icon’))
}
build() {
column() {
image(this.imagepixelmap)
.width(200)
.height(200)
}
}
private async getpixmapfrommedia(resource: resource) {
let unit8array = await getcontext(this)?.resourcemanager?.getmediacontent({
bundlename: resource.bundlename,
modulename: resource.modulename,
id: resource.id
})
let imagesource = image.createimagesource(unit8array.buffer.slice(0, unit8array.buffer.bytelength))
let createpixelmap: image.pixelmap = await imagesource.createpixelmap({
desiredpixelformat: image.pixelmapformat.rgba_8888
})
await imagesource.release()
return createpixelmap
}
}
d.
import { drawabledescriptor } from ‘@ohos.arkui.drawabledescriptor’
@entry
@component
struct imageexample {
private resmanager = getcontext().resourcemanager
build() {
row() {
column() {
image((this.resmanager.getdrawabledescriptor($r(‘app.media.drawable’).id) as drawabledescriptor))
}.height(‘50%’)
}.width(‘50%’)
}
}
45在基于stage模型开发的应用项目代码下,都存在一个app.json5配置文件,用于配置应用的全局信息,以下app.json5配置文件错误的是
a.
{
“app”: {
“bundlename”: “com.example.myapplication”,
“vendor”: “example”,
“versioncode”: 1000000,
“versionname”: “1.0.2”,
“icon”: “$media:app_icon”,
“label”: “app_name”,
“bundletype”: “app”
}
}
d.
{
“app”: {
“bundlename”: “com.example.myapplication”,
“vendor”: “example”, “versioncode”: 1000000,
“icon”: “
m
e
d
i
a
:
a
p
p
i
c
o
n
"
,
"
l
a
b
e
l
"
:
"
media:app_icon", "label": "
media:appicon","label":"string:app_name”,
“bundletype”: “app”
}
}
47某个应用的启动框架配置文件详细信息如下,以下说法正确的是:
{
“startuptasks”: [
{
"name": "startuptask_001",
"srcentry": "./ets/startup/startuptask_001.ets",
"dependencies": [
"startuptask_002",
"startuptask_003"
],
"runonthread": "taskpool",
"waitonmainthread": false
},
{
"name": "startuptask_002",
"srcentry": "./ets/startup/startuptask_002.ets",
"dependencies": [
"startuptask_004"
],
"runonthread": "taskpool",
"waitonmainthread": false
},
{
"name": "startuptask_003",
"srcentry": "./ets/startup/startuptask_003.ets",
"runonthread": "taskpool",
"waitonmainthread": false
},
{
"name": "startuptask_004",
"srcentry": "./ets/startup/startuptask_004.ets",
"runonthread": "taskpool",
"waitonmainthread": false
},
{
"name": "startuptask_005",
"srcentry": "./ets/startup/startuptask_005.ets",
"runonthread": "mainthread",
"waitonmainthread": true
},
{
"name": "startuptask_006",
"srcentry": "./ets/startup/startuptask_006.ets",
"runonthread": "mainthread",
"waitonmainthread": false,
"excludefromautostart": true
}
],
“configentry”: “./ets/startup/startupconfig.ets”
}
a.
startuptask_006会在abilitystage的oncreate前初始化完成
b.
startuptask_005会在主线程执行
c.
startuptask_001会在startuptask_004之后执行;
48grid() {
foreach(this.numbers, (day: string) => {
foreach(this.numbers, (day: string) => {
griditem() {
text(day)
.fontsize(16)
.backgroundcolor(0xf9cf93)
.width(‘100%’)
.height(80)
.textalign(textalign.center)
}
}, (day: string) => day)
}, (day: string) => day)
}
.columnstemplate('1fr '.repeat(this.columns))
.columnsgap(10)
.rowsgap(10)
.width(‘90%’)
.scrollbar(barstate.off)
.backgroundcolor(0xfaeee0)
.height(‘100%’)
.cachedcount(3)
// 切换列数item位置重排动画
.animation({
duration: 300,
curve: curve.smooth
})
.xxxx?(
pinchgesture()
.onactionend((event: gestureevent) => {
console.info(‘end scale:’ + event.scale)
// 手指分开,减少列数以放大item,触发阈值可以自定义,示例为2
if (event.scale > 2) {
this.columns–
} else if (event.scale < 0.6) {
this.columns++
}
// 可以根据设备屏幕宽度设定最大和最小列数,此处以最小1列最大4列为例
this.columns = math.min(4, math.max(1, this.columns));
appstorage.setorcreate(‘columnscount’, this.columns)
})
)
如果想让grid上的捏合手势手势生效,而不跟grid上的滚动手势形成冲突,.xxxx?手势接口应该怎么配置?
a.
parallelgesture
b.
gesture
c.
prioritygesture
55通过如下openlink的接口启动,如下哪些配置的uiability不可能被拉起
import { hilog } from ‘@kit.performanceanalysiskit’;
import { uiability, common, openlinkoptions } from ‘@kit.abilitykit’;
import { businesserror } from ‘@kit.basicserviceskit’;
export default class myability extends uiability {
onforeground() {
let link: string = “https://www.example.com”
let openlinkoptions: openlinkoptions = {
applinkingonly: true,
parameters: {demo_key: “demo_value”}
};
try {
this.context.openlink(
link,
openlinkoptions,
(err, result) => {
hilog.error(domain, tag, ‘openlink callback error.code:’ + json.stringify(err));
}
).then(()=>{
hilog.info(domain, tag, ‘open link success.’);
}).catch((err: businesserror)=>{
hilog.error(domain, tag, 'open link failed, errcode ’ + json.stringify(err.code));
})
}
catch (e) {
hilog.error(domain, tag, 'exception occured, errcode ’ + json.stringify(e.code));
}
}
}
b.
{
“name”: “targetability”,
“skills”: [
{
“actions”:[
“ohos.want.action.senddata”,
],
“entities”:[
“entity.system.browsable”,
],
“uris”:[
{
“scheme”: “https”,
“host”: “www.test.com”,
“port”: “8080”,
“path”: “path”,
“autoverify”: ture
}
]
}
]
}
c.
{
“name”: “targetability”,
“skills”: [
{
“actions”:[
“ohos.want.action.viedata”,
],
“entities”:[
“entity.system.browsable”,
],
“uris”:[
{
“scheme”: “http”,
“host”: “www.test.com”,
“port”: “8080”,
“path”: “path”
}
]
}
]
}
d.
{
“name”: “targetability”,
“skills”: [
{
“actions”:[
“ohos.want.action.senddata”,
],
“entities”:[
“entity.system.browsable”,
],
“uris”:[
{
“scheme”: “http”,
“host”: “www.test.com”,
“port”: “8080”,
“path”: “path”,
“autoverify”: ture
}
]
}
]
}
51下面持续交付&持续部署描述哪个是正确的:
c.在持续交付实践中,要考虑处理故障回滚和紧急修复,以确保系统在出现问题时能够快速恢复和修复。
54harmonyos应用开发者小张,正在利用deveco studio进行一款复杂应用的ui界面调试。小张了解到arkui inspector是deveco studio内置的一项强大工具,能够显著提升ui调试效率。基于arkui inspector的特性描述,下列哪些描述是正确的
b.
ui效果查看:开发者能够查看连接真机上运行的应用程序的ui显示效果,页面组件树结构,以及选中组件的属性信息
d.
ui快照管理:支持导出应用的ui界面为快照图片,并允许这些快照被导入回arkui inspector中,便于离线分析或分享讨论ui设计方案
53小华正在使用deveco studio开发一个复杂的harmonyos应用,他意识到代码中有一段逻辑被多次重复使用,为了优化代码结构和减少冗余,他决定将这段逻辑提取出来作为一个独立的方法。同时,他也注意到有些常用的硬编码值可以抽象为常量,以提高代码的可读性和维护性。小华希望利用deveco studio的代码重构功能来高效完成这些任务,通过以下哪些操作来实现代码重构,以提升编码效率
a.
选中需要重构的代码块,右键点击选择“refactor”,然后选择“extract method”来将代码块转换为一个新的函数/方法
b.
为了简化复杂类型的多次书写,小华可以选择特定类型字面量,通过“refactor”菜单下的“extract type alias”来创建类型别名
c.
如果小华识别到一组相关的对象字面值可以抽象为一个接口,他可以直接通过“refactor”菜单中的“extract interface”功能实现
d.
若需要将局部变量提升为类成员变量,小华只需简单选中变量名,右键选择“refactor” -> “promote local variable”
52项目需要同时进行应用和元服务的开发,并针对当前项目工程中的代码可以分别构建出应用和元服务的包,如何在deveco studio中设置不同的构建配置,达成这个目的
c. 在工程级别build-profile.json5定义两个product,将两个product的bundletype分网设置戏app和atomicservice
51关于代理提醒开发使用的接口是
b.使用publishreminder发布一个提醒类通知,使用cancelreminder取消一个指定的提醒类通知
56下面代码符合arkts编程规范的是
a.
if (flag) {
//…
}else {
//…
}
b.
function fight(): void {
console.log(‘swooosh!’);
}
c.
const arr = [1, 2, 3];
d.
if(isjedi) {
fight();
}
78arkts对并发编程api和能力进行了增强,以下描述正确的是
c.在并发api的形式上,目前主要有两种:worker和taskpool
d.cpu密集型任务场景中,当任务不需要长时间(3分钟)占据后台线程,而是一个个独立的任务时,推荐使用taskpool进行开发。
79在harmony0s应用开发中,当开发者遇到需要分析release版本应用的崩溃或异常堆栈信息时,为了准确地将堆栈追踪信息对应到源代码的具体位置,以下哪个描述是正确的做法或理解
a.deveco studio提供的release应用堆栈解析功能,要求开发者在遇到问题时,需上传构建产物中的特定文件(如s0、source map、namecache等)到指定工具或界面,借助这些文件辅助解析堆栈信息,实现从release堆栈到源码的映射,便于快速定位问题
61在开发harmony0s应用的多元化测试环境中,deveco studio引入了本地模拟器(local emulator)作为重要工具,旨在帮助开发者在个人开发机器上高效模拟harmony0s环境,进行应用或服务的快速运行与细致调试。请根据本地模拟器的实际应用场景与系统要求,选出所有正确的描述选项
a.deveco studio的本地模拟器允许开发者在个人电脑上模拟harmonyos环境,便于应用或服务的运行与调试。
b.mac计算机配置方面,为了确保本地模拟器的稳定运行,推荐至少配备8gb ram.
d.为了保证流畅的运行和调试体验,本地模拟器推荐macos系统版本至少为12.5以上。
64websocket连接开发步骤描述错误的是
f.调用session.start方法开启metadata数据输出
46下面关于方舟字节码指令含义说明正确的是
c.
假设寄存器v0存放了对象a, 累加器(acc)存放了对象b,那么执行指令"lda v0"后,v0存放对象a,acc存放对象a
d.
假设寄存器v0存放了对象a, 寄存器v1存放了对象b,那么执行指令"mov v0, v1"后,v0存放对象b, v1存放对象b
57关于长时任务开发使用的接口是
c.使用startbackgroundrunning申请任务,使用stopbackgroundrunning取消任务
88关于短时任务开发使用的接口是
a.使用requestsuspenddelay申请任务,使用getremainingdelaytime获取任务剩余时间
发表评论