注意事项:切记在考试之外的设备上打开题库进行搜索,防止切屏三次考试自动结束,题目是乱序,每次考试,选项的顺序都不同
新版题库:单选题40题 多选题20题 注意选项答案顺序不一样,大家记得看选项后面的值是否一样
考试链接地址:华为开发者学堂
基本介绍
博主一共多次过了鸿蒙高级认证,今年下半年官方认证题库突然改了,博主从新考了一次,把最新题库整理出来了
单选题
1、以下哪个装饰器用来表示并发共享对象 (D)
A@Shared
B@State
C@Style
D@Sendable
2、以下关于Taskpool和Worker的描述正确的是 (C)
A TaskPool和Worker的任务执行时长上限都是无限制
B Worker自行管理生命周期,开发者无需关心任务负载高低
C TaskPool支持任务延时执行
D 开发者需要自行管理taskpool的数量及生命周期
3、ArkTS支持以下哪些函数 (D)
A Object.isExtensible();
B Object.isPrototypeOf();
C Object.getOwnPropertySymbols();
D Object.keys();
4、以下哪些赋值语句在ArkTS中是合法 (A)
A value2
B value3
C value1
D value4
5、下面关于方舟字节码格式IMM16_ID16_IMM8描述正确的是 (A)
A.8位操作码,16位立即数,16位id,8位立即数
B.16位前缀操作码,16位立即数,8位寄存器
C.8位操作码,16位立即数,16位id,8位寄存器
D.8位操作码,16位立即数,2个8位寄存器
6、从桌面冷启动如下应用,点击Change按钮5次,整个过程中,代码中的2条log依次出现的次数,最初和最后画面上显示的【num = ?】的数字是 (B)
A 1,5,1,6
B 2,4,1,2
C 2,4,1,6
D 0,6,1,6
7、以下关于ArkUI NavDestination组件的生命周期执行顺序中正确的是 (C)
AonWillappear->onAppear->onWillShow->onShow->onWillDisappear->onWillHide->onHidden->onDisappear
B onWillappear->onWillShow->onShow->onAppear->onWillHide->onHidden->onWillDisappear->onDisappear
C onWillappear->onAppear->onWillShow->onShow->onWillHide->onHidden->onWillDisappear->onDisappear
D onWillappear->onAppear->onWillShow->onShow->onWillHide->onWillDisappear->onHidden->onDisappear
8、已知下列代码PageOne页面为navigation中的某一子页面,依次点击PageOne页面中toPageTwo按钮,PageTwo页面中toPageOne按钮,此时点击get按钮获取全部名为name的NavDestination页面的位置索引为 (C)
A[0,1]
B[2,1]
C[0,2]
D[1,2]
9、一个复杂的项目,该项目不仅包含主入口模块(Entry Module),还有多个特性的功能模块(Feature Modules/HSP),并且这些模块间存在着相互调用关系。为了确保在调试过程中能够完整地测试所有交互逻辑,需要将涉及到的所有模块的HAP包都部署到目标设备上。请从以下选项中选择正确的操作步骤来配置DevEco Studio,以便一次性部署和调试项目中的多个模块 (A)
A 进入“Run > Edit Configurations”菜单,在“Deploy Multi Hap”选项卡下,勾选“Deploy Multi Hap Packages”,随后在列表中选择需要部署的模块。
B 无需特殊配置,DevEco Studio会自动检测到项目中的所有模块依赖,并在每次调试运行时自动部署所有相关HAP包。
C 在项目结构界面手动选择每个模块,单独编译并逐一将生成的HAP包通过HDC命令推送到设备上。
D 直接点击运行按钮,DevEco Studio会弹出对话框询问需要部署哪些模块,从中选择需要的模块后开始调试。
10、张工正在使用DevEco Studio进行一个复杂项目的开发工作,项目中包含了成千上万行代码且涉及众多模块。在重构代码的过程中,他意识到需要对一个核心类名进行更改,考虑到这个类在整个项目中被广泛引用,手动修改不仅耗时且容易出错。 基于DevEco Studio提供的代码编辑功能,以下哪个描述最准确地概述了张工如何高效且安全地完成对类名的更改,同时确保整个项目中所有相关引用同步更新?(B)
A 张工需打开项目搜索功能,输入旧类名找到所有匹配项,逐一进行替换,完成更名操作。
B 张工选中需要更名的类名,使用快捷键Shift+F6或右键菜单Refactor -> Rename,在弹出框中输入新名称并选择替换范围后,点击“Refactor”完成更名操作,确保所有相关引用自动更新。
C 张工只需简单选中需要更名的类名,按下Delete键删除后直接输入新名称,DevEco Studio会自动识别并更新所有引用。
D 张工在代码编辑器中右键点击该类名,选择“Find Usage”,手动浏览所有引用位置并逐一修改为新名称。
11、在开发HarmonyOS应用工程时,随着业务的发展,现在需要创建一个模块,关于在DevEco Studio中创建Module,下列选项哪种方式是错误的?(D)
A 鼠标移到工程目录顶部,单击鼠标右键,选择New > Module…,开始创建新的Module,此时该module将创建在工程根目录下。
B 选中工程目录中任意文件,然后在菜单栏选择File > New > Module…,开始创建新的Module,此时该module将创建在工程根目录下。
C 在工程根目录下创建一个新的Directory,可在该目录下单击鼠标右键,选择New > Module…,创建新的Module,此时module将创建在该文件目录下。
D 在hvigor目录下,单击鼠标右键,选择New > Module…,创建新的Module,此时module将创建在该文件目录下。
12、DevEco Studio提供HarmonyOS应用/服务的UI预览界面与源代码文件间的双向预览功能,支持ets文件与预览器界面的双向预览。关于双向预览,下列选项说法错误的是?(C)
A 选中预览器UI界面中的组件,则组件树上对应的组件将被选中,同时代码编辑器中的布局文件中对应的代码块高亮显示。
B 选中布局文件中的代码块,则在UI界面会高亮显示,组件树上的组件节点也会呈现被选中的状态。
C 双向预览不支持通过组件的属性面板实时修改属性或样式。
D 选中组件树中的组件,则对应的代码块和UI界面也会高亮显示。
13、在使用DevEco Studio的Profiler进行HarmonyOS应用或服务内存管理优化时,以下哪个描述最准确地概述了“Allocation Insight”功能在识别和解决内存问题中的作用 (C)
A Allocation Insight仅提供内存分配总量的概览,帮助开发者宏观了解内存使用趋势,但对于具体泄漏或抖动问题无能为力
B Allocation Insight详细展示应用运行时的每条语句柄分配记录,便于开发者逐一检查内存使用,但不提供内存泄漏的自动识别功能
C Allocation Insight通过分析应用服务运行时的内存分配及使用情况,辅助定位内存泄漏、内存抖动和溢出问题,支持优化内存使用
D Allocation Insight主要关注于内存碎片整理,减少内存分配的不连续性问题,对内存泄漏
14、HarmonyOS应用开发团队正着手优化一款面向全球市场的在线教育应用,该应用在特定课程直播环节出现了性能波动和响应延迟的问题,严重影响用户体验。打算利用DevEco Profiler来进行性能优化。DevEco Profiler其设计核心和主要优势是什么 (A)
A DevEco Profiler依据Top-Down设计理念,通过高度整合的数据展示范式,提供从宏观到微观的性能数据分析,加速开发者定位和解决问题的过程
B DevEco Profiler主要是一个自动化修复工具,能自动检测并解决所有HarmonyOS应用的性能问题
C DevEco Profiler专注于用户界面设计的美化,使开发者操作更为直观
D DevEco Profiler采用Bottom-Up设计原则,从底层代码细节开始逐步构建性能模型
15、应用开发中使用的各类资源文件,需要放入特定子目录中存储管理,以下关于资源说法错误的是 (D)
A base目录是默认存在的目录,二级子目录element用于存放字符串、颜色、布尔值等基础元素,media、profile存放媒体、动画、布局等资源文件。
B stage模型多工程情况下,共有的资源文件放到AppScope下的resources目录。
C resfile目录,应用安装后,resfile资源会被解压到应用沙箱路径,通过Context属性resourceDir获取到resfile资源目录后,可通过文件路径访问。
D rawfile目录,支持创建多层子目录,子目录名称可以自定义,文件夹内可以自由放置各类资源文件。目录中的资源文件会被编译成二进制文件,并赋予资源文件ID。
16、在组件中,经常需要使用字符串、图片等资源。HSP中的组件需要使用资源时,一般将其所用资源放在HSP包内,而非放在HSP的使用方处,以符合高内聚低耦合的原则。下面访问HSP资源错误的是 (B)
B 使用相对路径的方式,访问HSP中的资源。Image(“…/…/resources/base/media/example.png”) .id(‘example’) .borderRadius(‘48px’)
17、HarmonyOS提供了多种包结构,每种包编译后的产物都不同,下面说法错误的是 (C)
A hap包编译后的产物是.hap文件。
B hsp包编译后的产物是.hsp文件。
C app包编译后的产物是.app文件。
D har包编译后的产物是.har文件。
18、一个应用的一个UIAblity,其exported字段配置为false,以下哪个场景可以拉起这个UIAbility (A)
A caller应用在后台,申请了长时任务,有STARTINVISIBLE ABILITY权限
B caller应用在后台,申请了长时任务,有START ABILITY FROM BACKGROUND权限
C caller应用在后台,有STARTINVISIBLE ABILITY权限
D caller应用在后台,有START ABILITY FROM BACKGROUND权限
19、singleton模式的UIAbility,在冷启动时生命周期的执行顺序是:(D)
A onCreate->onForeground->onWindowStageCreate
B onCreate->onBackground->onForeground
C onCreate->onBackground->onWindowStageCreate
D onCreate->onWindowStageCreate->onForeground
20、可以通过下面那个接口拉起导航类的垂域面板 (C)
A startAbility
B startAbilityForResult
C startAbilityByType
D startAbilityByCall
21、下面的配置存在有几处错误 app.json5配置文件:(A)
A.1
B.4
C.2
D.3
22、当使用状态变量进行ArkUI组件间数据通信的时候,如果两个组件间没有直接的嵌套关系(非父子和祖孙关系组件),但是他们又属于同一页面,最佳的装饰器应该选用哪个?(D)
A @Provide+@Consume
B AppStorage
C @State+@Link
D LocalStorage
23、ArkUI组件复用的作用机制是减少了什么时间从而降低了丢帧率?(B)
A数据挂载时间
B组件节点和对象的创建时间
C组件销毁时间
D组件节点渲染时间
24、为了提高性能,所以List组件支持懒加载,可以通过配置cachedCount属性设置缓存列表项的数量。当我们不设置List的属性cachedCount时,该属性的默认值是?(A)
A 1
B 3
C 2
D 0
25、作为应用开发者,你使用hiAppEvent订阅了崩溃事件。应用崩溃后,从onReceive接口返回的AppEventInfo中()属性可以获取崩溃调用栈信息。(D)
A domain
B eventType
C name
D params
26、以下关于动态import说法正确的是(B)
A 动态import支持懒加载,所以不能用于提升页面的加载速度。
B 动态import支持加载HSP模块、HAR模块、OHPM包、Native库。
C 动态import和静态import相比,灵活性更好,性能更好。
D 动态import不支持导入SDK的API,如@ohos.*
27、以下对系统兼容性的理解正确的是 (C)
A.应用不需要关注系统的兼容性变化,那都是系统开发人员需要关注的事情
B.已发布的系统能力有可能会发生非兼容性变更,比如新增特性或修改问题导致的行为不兼容,这种情况下应用需要关注changelog并进行适配。
C.安全法律法规等不可控因素会导致系统非兼容性变更,开发者需要积极适配
D.系统能力都会保持绝对的兼容性,不能因为任何非兼容性的修改而导致开发者成本上升
28、关于静态检查描述错误的是 (D)
A.静态分析工具也在不断改进和升级。使用高级的静态分析工具可以提高代码检测的准确性和效率。例如,一些静态分析工具可以检测代码中的内存泄漏、死锁问题,从而提高代码的质量和可靠性。
B.静态检查是指使用静态代码分析工具对软件的“静态”(不运行的) 代码进行分析的一种方法,找出代码中潜在的漏洞。静态代码分析器检查源代码,找出特定的漏洞,并检查代码是否符合各种编码标准。
C.HarmonyOS应用可以采用ARKTS静态检查工具Codelinter或者CodeArts工具来做静态代码分析。
D.静态检查可以检测代码中的语法错误和潜在的逻辑错误,也支持检测代码在运行时现的错误,因此静态检查可以替代动态测试。
29、以下关于应用架构技术选型说法不正确的是 (D)
A 元服务和应用可以共用一个代码工程,采用多目标产物构建方式,构建出应用和元服务两个产物,用于上架。
B 对于初始版本的应用,功能比较简单,可以考虑采用单HAP加上多个HAR工程构建代码工程。
C 一些应用的扩展能力,比如备份、服务卡片,可以采用ExtensionAbility做成单独的feature HAP包,独立分发。
D 随着业务的发展,应用功能会越来越多,某些功能可以做成动态加载,动态加载的模块采用HAR工程来构建,方便复用和共享。
30、依次点击A、B、C、D四个按钮,其中不会触发UI刷新的是 (C)
A A
B B
C C
D D
31、使用promptAction.showToast如何设置显示在其他应用之上?(B)
A ToastShowMode.DEFAULT
B ToastShowMode.TOP_MOST
C 无需配置,默认显示在其他应用之上
D ToastShowMode.SYSTEM_TOP_MOST
32、为了使isShow参数值与半模态界面的状态同步,可以使用下列那种方式双向绑定isShow参数?
选择这个 $$this.isShow
=== 双【$】符号修饰
33、以下关于垂直滚动Grid组件使用cachedCount属性的说明正确的是 (A)
A 设置cachedCount为1,则Grid在显示范围上下各缓存1行GridItem
B 设置cachedCount为1,则Grid在显示范围下方缓存1行GridItem
C 设置cachedCount为1,则Grid在显示范围下方缓存1个GridItem
D 设置cachedCount为1,则Grid在显示范围上下各缓存1个GridItem
34、如果要实现Row组件内的子元素均匀排列,且第一个元素与行首对齐,最后一个元素与行尾对齐,需要使用justifyContent的哪个枚举值 (A)
A SpaceBetween
B Start
C End
D SpaceEvenly
35、项目需要为不同的设备形态(如手机、智能手表)提供定制化构建。请说明如何在DevEco Studio中设置不同的构建配置,以生成针对不同设备的hap包?(B)
A 在工程级别build-profile.json5定义多个product,在每个product的config/deviceType中定义不同的设备类型
B 在模块级别build-profile.json5定义多个target,在每个target的config/deviceType中定义不同的设备类型
C 在工程级别build-profile.json5定义多个product,在每个product的config/distributionFilter中定义不同的设备类型
D 在模块级别build-profile.json5定义多个target,在每个target的config/distributionFilter中定义不同的设备类型
36、开发者小林正在使用DevEco Studio开发一款HarmonyOS应用,并在真机上进行调试。他在运行应用的过程中突然发现一处UI布局需要微调,希望在不中断当前应用运行的情况下看到调整效果,基于DevEco Studio提供的Hot Reload(热重载)能力,以下哪一种做法能让小林最有效地实现他的需求 (B)
A 立即停止应用,修改代码后重新编译并部署到真机上
B 在不关闭应用的情况下,直接修改代码并保存,借助Hot Reload功能在真机上实时查看布局调整的效果
C 继续运行应用,手动重启应用后检查布局是否符合预期
D 使用模拟器替代真机进行调试,因为Hot Reload仅在模拟器上支持代码改动的即时生效
37、hiAppEvent提供的Watcher接口,()属性不配置,会导致编译报错,产生"ArkTS Compiler Error" (B)
A onTrigger
B name
C onReceive
D triggerCondition
38、一个应用项目工程中,模块依赖关系如下图所示,那么在最终编译结果.app文件中,存在的编译产物是:(A)
A A.hap + D.hsp
B A.hap + B.har + D.hsp
C A.hap + B.har + C.har + D.hsp
D A.hap + D.hsp + C.har
39、WebSocket连接开发步骤描述错误的是 (E)
A 订阅WebSocket的打开、消息接收、关闭、Error事件
B 创建一个WebSocket连接,返回一个WebSocket对象
C 导入需要的webSocket模块
D 使用完WebSocket连接之后,主动断开连接
E 调用Session.start方法开启metadata数据输出
F 根据URL地址,发起WebSocket连接
40、下面哪种转场效果在入场动画时,表现为从透明度为0、相对于组件正常显示位置×方向平移100vp的状态,到默认的透明度为1、相对于组件不平移的状态,且透明度动画和平移动画的动画时长均为2000ms
正确答案如下(从代码块找到如下代码)
TransitionEffect.OPACITY.animation({duration:2000}).combine(TransitionEffect.translate({x:100}))
41、以下示例代码中可以进行动画的属性有哪些? (D)
A 1、3
B 2、3
C 1、2、3
D 1、2
42、在使用DevEco Studio的Profiler进行HarmonyOS应用性能优化的流程中,以下哪个步骤最恰当地描述了开发者利用Profiler工具进行性能问题识别、定位、优化及验证的完整过程 (A)
A 利用“Realtime Monitor”初步识别性能瓶颈,创建深度分析任务定位根因,根据分析结果优化代码,再用“Realtime Monitor”验证优化效果
B 首先使用“Realtime Monitor”实时监控,观察应用资源消耗,一旦发现CPU或内存异常,直接修改代码并重新编译
C 仅通过创建深度分析任务,利用perf数据详细分析性能瓶颈,修改代码后,不需再进行验证直接发布应用
D 在发现应用性能不佳时,直接查看代码逻辑,凭经验修改后,利用Profiler的“Realtime Monitor”确认资源消耗是否降低
43、项目中包含多个模块和数千行代码。随着开发的深入,项目中的ArkTS源代码文件逐渐积累了大量import语句,其中不乏未使用的import以及不规范的排序情况,关于DevEco Studio的编辑器的“Optimize Imports”,以下说法正确的是 (B)
A 可以在菜单栏中依次点击“Code” > “Reformat Code”来达到优化import的目的,因为“Optimize Imports”功能已整合进“Reformat Code”中。
B 为了快速清理未使用的import,可以选中项目根目录,按下快捷键Ctrl+Alt+O(在macOS上为Control+Option+O),让DevEco Studio自动识别并移除所有未使用的import,并自动按照预设规则排序和合并import。
C 应该手动遍历每个ArkTS文件,逐一检查并删除未使用的import语句,然后按照字母顺序手动排序剩余的import。
D 在DevEco Studio中,没有直接的“Optimize Imports”功能,需要安装第三方插件来实现这个需求。
44、在使用DevEco Studio的Profiler进行HarmonyOS应用或服务内存管理优化时,以下哪个描述最准确地概述了“Allocation Insight”功能在识别和解决内存问题中的作用 (C)
A Allocation Insight仅提供内存分配总量的概览,帮助开发者宏观了解内存使用趋势,但对于具体泄漏或抖动问题无能为力
B Allocation Insight详细展示应用运行时的每条语句柄分配记录,便于开发者逐一检查内存使用,但不提供内存泄漏的自动识别功能
C Allocation Insight通过分析应用服务运行时的内存分配及使用情况,辅助定位内存泄漏、内存抖动和溢出问题,支持优化内存使用
D Allocation Insight主要关注于内存碎片整理,减少内存分配的不连续性问题,对内存泄漏
45、项目需要同时进行应用和元服务的开发,并针对当前项目工程中的代码可以分别构建出应用和元服务的包,如何在DevEco Studio中设置不同的构建配置,达成这个目的 (B)
A 修改工程级别的AppScope/app.json5中的bundleType值为app
B 在工程级别build-profile.json5定义两个product,将两个product的bundleType分别设置成app和atomicService
C 在模块级别build-profile.json5定义两个target,将两个target的bundleType分别设置成app和atomicService
D 修改工程级别的AppScope/app.json5中的bundleType值为atomicService
46、使用DevEco Studio进行复杂的跨设备功能开发与调试工作,期间频繁依赖本地模拟器来模拟多样化的设备环境。在这样的背景下,以下关于DevEco Studio本地模拟器所支持的规格与功能,哪一项描述是准确的 (B)
A 本地模拟器当前不支持查看HiLog以及FaultLog
B 本地模拟器上运行的应用无需进行签名,简化了调试过程。
C 本地模拟器当前不支持单元测试框架和UI测试框架的运行
D 本地模拟器和真机的能力没有任何差异,真机上可以支持的能力在模拟器上都可以
47、在一个包含多个模块(如entry、feature、service、library等)的大型HarmonyOS应用项目中,如果某个模块feature对另外一个公共库模块library有依赖,如何通过DevEco Studio正确配置项目依赖关系 (D)
A 在feature的build-profile.json5文件的dependencies字段中配置library的依赖
B 无需配置,直接在代码中编写import xxx from ‘library’
C 在library的oh-package.json5文件的dependencies字段中配置feature的依赖
D 在feature的oh-package.json5文件的dependencies字段中配置library的依赖
48、want参数的entities匹配规则错误的是 (A)
A 调用方传入的want参数的entities为空,待匹配应用组件的skills配置中的entities不为空,则entities匹配失败。
B 调用方传入的want参数的entities不为空,待匹配应用组件的skills配置中的entities不为空且包含调用方传入的want参数的entities,则entities匹配成功。
C 调用方传入的want参数的entities为空,待匹配应用组件的skills配置中的entities为空,则entities匹配成功。
D 调用方传入的want参数的entities不为空,待匹配应用组件的skills配置中的entities为空,则entities匹配失败。
49、HAR(Harmony Archive)是HarmonyOS提供的共享包,以下关于HAR的描述错误的是 (A)
A HAR不支持使用page页面
B HAR不支持在设备上单独安装/运行,只能作为应用模块的依赖项被引用
C HAR不支持引用AppScope目录中的资源。在编译构建时,AppScope中的内容不会打包到HAR中,因此会导致HAR资源引用失败
D HAR可以作为二方库和三方库提供给其他应用使用,如果需要对代码资产进行保护时,建议开启混淆能力
50、应用程序开发调试过程中,经常需要安装新应用进行调测,下面安装应用操作错误的是B
A bm install -p ohosapp.hap -r
B hdc install -p ohosapp.hap
C bm install -p /data/app/
D bm install -p ohosapp.hap
51、一个应用有2个UIAbility组件,其module.json中abilities标签的配置如下方代码。在手机设备上,执行如下操作后:
1.启动UIAbility1, 然后back键返回销毁UIAbility1;
2.启动UIAbility2, 然后back键返回销毁UIAbility2;
3.启动UIAbility2, 然后back键返回销毁UIAbility2;
进入多任务列表,能看看到该应用的几个任务视图:(A)
A 1个
B 0个
C 3个
D 2个
52、某个应用开发了一个UIAbilityA,其启动模式是specified,并且对应的AbilityStage的实现如下:(D)
A 2个
B 4个
C 1个
D 3个
53、通过aa工具拉起com.example.test的EntryAbility,并传参给EntryAbility,具体参数是number类型的[key1, 1] [key2,2] 和string类型的[key3, testString] [key4,''],那边下面那个aa 命令是正确的:(D)
A aa start -b com.example.test -a EntryAbility --pi key1 1 --pi key2 2 --ps key3 testString --ps key4
B aa start -b com.example.test -a EntryAbility --pi key1 1 --pi key2 2 --ps key3 testString --psn key4”
C aa start -b com.example.test -a EntryAbility --pi key1 1 key2 2 --ps key3 testString --psn key4
D aa start -b com.example.test -a EntryAbility --pi key1 1 --pi key2 2 --ps key3 testString --psn key4
54、应用发生崩溃,()接口可以获取到崩溃时调用栈 (A)
A hiAppEvent
B hiLog
C hiDebug
D hiTraceMeter
55、我们需要避免在逐帧调用的接口中执行耗时操作,下面哪个选项不属于上述的接口 (D)
A. onTouch
B. onAreaChange
C. onScroll
D. aboutToReuse
56、关于ArkUI的ForEach和LazyForEach,下列说法错误的是?(C)
A LazyForEach需要配合cachedCount和组件复用一起使用,以达到性能的最优表现。
B ForEach和LazyForEach会根据定义的键值生成规则为数据源的每个数组项生成唯一键值,并创建相应的组件。
C 长列表滚动场景,优先使用ForEach。
D 当在滚动容器中使用了LazyForEach,框架会根据滚动容器可视区域按需创建组件,当组件滑出可视区域外时,框架会进行组件销毁回收以降低内存占用。
57、关于自动化测试描述正确的是:(A)
A XTS子系统是认证测试套件的集合,当前包括acts(application compatibility test suite)应用兼容性测试套件,后续会拓展dcts(device compatibility test suite)设备兼容性测试套件等。
B DT(开发者测试)就是UT,可看护的范围包括边界值问题、空指针或赋值错误,内部业务逻辑问题等等。
C 自动化测试因提高效率,减少重复工作的特性而被广泛采用;自动化测可以替代手动测试在处理复杂、难以预测的用户交互或特殊边界条件。
D Fuzz测试就是通过构造不规则的输入,从而触发程序的某种bug;Fuzz测试属于白盒测试。Fuzz测试也叫做模糊测试,通过输入非法字段,并观察软件是否异常来实现。一方面可以通过向软件输入非法字段,另一方面也可以通过向网络服务发送异常报文。
58、以下关于HAP(Harmony Ability Package)说法正确的是(B)
A 应用工程编出的app文件中,只能包含一个hap文件。
B 应用工程如果包含多个Module,在应用市场上架时,会将多个.hap文件打包成一个.app文件。
C HAP是应用安装和运行的基本单位,在DevEco Studio工程目录中,一个HAP对应一个Module。应用打包时,所有的Module都只能生成.hap文件。
D DevEco Studio会在编译构建时,不需要对HAP进行一致性校验。
59、某App有A、B、C、D四个团队分别负责ModuleA、ModuleB、ModuleC和ModuleD四个业务模块,随着业务的发展,ModuleA需要跳转到ModuleB、ModuleC的页面,ModuleB需要跳转到ModuleC、ModuleD的界面,ModuleC需要跳转到ModuleA的界面,ModuleD需要跳转到ModuleB和ModuleC的界面。由于复杂的依赖关系,导致一旦有变化就需要知会各个团队,所以该团队的架构师想要解耦各个业务模块,以下哪些做法是不推荐的(C)
A 在RouterModule中采用路由表方式解耦各个业务模块。
B 采用RouterModule作为中介者并用动态import解耦各个业务模块。
C 采用静态import方式引入对应跳转的页面。
D 可以采用Navigation作为页面导航根容器,将其放在entry中,其他Module的页面作为Navigation的子页面
60、在moduleA(HAP类型)中有一个图片名为image.png,在moduleB(HAR类型)也存在一个图片名为image.png,而moduleA依赖于moduleB,那么在moduleA的编译产物hap包中,image.png存在情况是:(B)
A 仅存在moduleB的image.png
B 仅存在moduleA的image.png
C 两者都存在
D 两者都不存在
61、关于代理提醒开发使用的接口是 (C)
A 使用startWork申请任务,使用stopwork取消任务,使用getWorkStatus获取任务状态
B 使用startBackgroundRunning申请任务,使用stopBackcroundRunning取消任务
C 使用publishReminder发布,个提醒类通知,使用cancelReminder取消一个指定的提醒类通知
D 使用requestSuspendDelay电请任务,使用getRemainngDelayTime获取任多剩余时间
62、在方舟字节码的函数调用规范中,前三个参数表示的含义分别是 (C)
A this、函数对象本身、new.Target
B new.Target、函数对象本身、this
C 函数对象本身、new.Target、this
D new.Target、this、函数对象本身
63、从桌面冷启动如下应用代码,点击Change按钮5次,整个过程中,代码中的2条log依次出现的次数是:(C)
A 6,0
B 2,4
C 1,0
D 1,5
64、以下哪份代码可以实现下图Grid布局
正确答案:通过GridLayoutOptions
65、在HarmonyOS应用开发中,当开发者遇到需要分析Release版本应用的崩溃或异常堆栈信息时,为了准确地将堆栈追踪信息对应到源代码的具体位置,以下哪个描述是正确的做法或理解(B)
A 开发者需手动将Release构建生成的so文件与源代码进行映射,配合第三方工具进行堆栈信息还原,虽然过程繁琐,但最终能定位到问题代码位置
B DevEco Studio提供的Release应用堆栈解析功能,要求开发者在遇到问题时,需上传构建产物中的特定文件(如so、source map、nameCache等)到指定工具或界面,借助这些文件辅助解析堆栈信息,实现从Release堆栈到源码的映射,便于快速定位问题
C DevEco Studio通过集成的Release应用堆栈解析功能,自动利用构建时产生的so文件、source map文件、nameCache文件等,无需额外操作即可直接在Release应用中提供详细的源码级堆栈追踪信息
D 因为Release应用经过优化和去除Debug信息,直接从堆栈跟踪到源代码行号是不可能的,开发者只能依靠日志信息手工推测问题所在
66、小李正在使用DevEco Studio进行HarmonyOS应用的开发工作,他需要对一个频繁被调用的函数calculateData()进行重构,为了帮助小李高效地找到calculateData()函数的所有引用位置,并确保重构时考虑周全,以下哪个步骤是正确的使用DevEco Studio的“Find Usages”功能的操作方法 (C)
A 小李应当在项目目录树中找到calculateData()函数所在的文件,直接双击打开文件,然后逐行扫描代码以手动查找该函数的所有调用位置。
B 小李应该在菜单栏中选择“Navigate” > “Class”来打开类浏览器,从中找到calculateData()函数,并在此界面中手动检查所有引用。
C 小李只需将光标定位在calculateData()函数名上,右键点击并选择“Find Usages”,或者直接使用快捷键Alt + F7(macOS为Option + F7),DevEco Studio会自动列出该函数在项目中的所有引用位置。
D 小李应将光标置于calculateData()函数的名称上,按下Ctrl + Shift + F(macOS为Command + Shift + F)全局搜索该函数名,然后在搜索结果中筛选出真正的调用位置。
67、小李正在使用DevEco Studio进行HarmonyOS应用的开发工作,他需要对一个频繁被调用的函数calculateData()进行重构,为了帮助小李高效地找到calculateData()函数的所有引用位置,并确保重构时考虑周全,以下哪个步骤是正确的使用DevEco Studio (C)
A小李应当在项目目录树中找到calculateData()函数所在的文件,直接双击打开文件,然后逐行扫描代码以手动查找该函数的所有调用位置。
B小李应该在菜单栏中选择“Navigate” > “Class”来打开类浏览器,从中找到calculateData()函数,并在此界面中手动检查所有引用。
C小李只需将光标定位在calculateData()函数名上,右键点击并选择“Find Usages”,或者直接使用快捷键Alt + F7(macOS为Option + F7),DevEco Studio会自动列出该函数在项目中的所有引用位置。
D小李应将光标置于calculateData()函数的名称上,按下Ctrl + Shift + F(macOS为Command + Shift + F)全局搜索该函数名,然后在搜索结果中筛选出真正的调用位置。
68、在使用DevEco Studio的Profiler进行HarmonyOS应用或服务性能分析时,面对应用出现卡顿、加载慢等性能瓶颈问题,以下哪个描述最贴切地说明了“Time场景分析任务”的功能及其对开发者优化流程的帮助(B)
A Time场景分析任务在应用运行时,通过显示所有函数执行的耗时排序列表,辅助开发者手动对比寻找耗时最短的函数进行优化
B Time场景分析任务展示热点区域内的CPU和进程级调用栈耗时情况,支持代码跳转,助力开发者快速定位并优化耗时较长的代码段
C Time场景分析任务专注于内存管理,帮助开发者监控应用内存泄漏,但对解决卡顿和加载耗时问题帮助有限
D Time场景分析任务仅提供应用/服务运行时的CPU使用率概览,帮助开发者粗略判断性能瓶颈,但不提供深入分析
69、开发者小林正在使用DevEco Studio开发一款HarmonyOS应用,并在真机上进行调试。他在运行应用的过程中突然发现一处UI布局需要微调,希望在不中断当前应用运行的情况下看到调整效果,基于DevEco Studio提供的Hot Reload(热重载)能力,以下哪一种做法能让小林最有效地实现他的需求 (B)
A 立即停止应用,修改代码后重新编译并部署到真机上
B 在不关闭应用的情况下,直接修改代码并保存,借助Hot Reload功能在真机上实时查看布局调整的效果
C 继续运行应用,手动重启应用后检查布局是否符合预期
D 使用模拟器替代真机进行调试,因为Hot Reload仅在模拟器上支持代码改动的即时生效
70、项目需要为不同的设备形态(如手机、智能手表)提供定制化构建。请说明如何在DevEco Studio中设置不同的构建配置,以生成针对不同设备的hap包?(B)
A 在工程级别build-profile.json5定义多个product,在每个product的config/deviceType中定义不同的设备类型
B 在模块级别build-profile.json5定义多个target,在每个target的config/deviceType中定义不同的设备类型
C 在工程级别build-profile.json5定义多个product,在每个product的config/distributionFilter中定义不同的设备类型
D 在模块级别build-profile.json5定义多个target,在每个target的config/distributionFilter中定义不同的设备类型
71、项目中涉及多个类的继承与重写。为了快速实现子类对父类方法的重写,小华想利用DevEco Studio提供的便捷功能来提高开发效率。他了解到,通过一个特定的操作流程,可以直接依据父类的模板生成子类中需要重写的方法代码,而无需手动编写完整方法体,在DevEco Studio中,如何正确使用Override Methods功能来快速生成子类需要重写的方法代码 (D)
A 在项目结构视图中找到目标子类,双击打开后直接在代码编辑区输入重写方法的签名,DevEco Studio将自动完成剩余代码。
B 将光标定位到子类的定义处,按下Ctrl+O(或右键单击选择Generate... > Override Methods),在弹出的对话框中选择要重写的方法,点击OK完成生成。
C 通过菜单栏File > Settings,配置Override Methods快捷方式,之后在代码中仅需选中父类方法名,即可自动在子类中生成重写代码。
D 将光标放置于任何代码行,按下Ctrl+B,然后在弹出菜单中选择Override Methods,之后勾选需要重写的方法并确认。
72、下面的配置存在有几处错误( )module.json5配置文件 (A)
A.1
B.4
C.2
D.3
73、在UIAbility的onCreate生命周期中通过EventHub的on注册"event1"和"event2"事件。 (C)
import { hilog } from '@kit.PerformanceAnalysisKit';
import { UIAbility, Want, AbilityConstant } from '@kit.AbilityKit';
const DOMAIN_NUMBER: number = 0xFF00;
const TAG: string = '[EventAbility]';
export default class EntryAbility extends UIAbility {
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
// 获取UIAbility实例的上下文
let context = this.context;
// 获取eventHub
let eventhub = this.context.eventHub;
// 执行订阅操作
eventhub.on('event1', this.eventFunc);
eventhub.on('event2', this.eventFunc);
hilog.info(DOMAIN_NUMBER, TAG, '%{public}s', 'Ability onCreate');
}
// ...
eventFunc(argOne: Context, argTwo: Context): void {
hilog.info(DOMAIN_NUMBER, TAG, 'receive. ' + `${argOne}, ${argTwo}`);
return
}
74、当标记了@Reuseable的自定义组件实现了组件复用后,这个组件的复用范围是什么 (B)
A 整个应用内都可以复用
B 标记了@Reuseable的自定义组件的父组件范围内
C 整个页面都可以复用
D 标记了@Reuseable的自定义组件的外层容器节点范围内
75、某App依赖了3个ohpm库,这3个库占用的体积都比较大。在App的技术架构中,有多个hap和多个hsp均依赖这3个库,为了减少app的首包大小,以下哪些做法是无效的?(C)
A 将3个ohpm库分别封装成3个hsp,并对外提供必要的接口。
B 将某些特性做成按需加载模块,若这3个ohpm仅在按需加载模块里面使用,则将其打包在按需加载模块中。
C 将这3个ohpm库封装到har包中,并对外提供必要的接口。
D 将3个ohpm库封装成1个hsp,并对外提供必要的接口。
76、关于短时任务开发使用的接口是(A)
A 使用requestSuspendDelay申请任务,使用getRemainingDelayTime获取任务剩余时间
B 使用startBackgroundRunning申请任务,使用stopBackgroundRunning取消任务
C 使用publishReminder发布一个提醒类通知,使用cancelReminder取消一个指定的提醒类通知
D 使用startWork申请任务,使用stopWork取消任务,使用getWorkStatus获取任务状态
77、开发者小张正在使用DevEco Studio开发一款HarmonyOS应用,他遇到了一个仅在应用实际运行环境中出现的问题,需要调试己部署在设备上的应用以定位问题根源,为了能够在应用已经运行的情况下介入调试,小张应该采用哪种调试方法
B、Attach Debugger to Process,这允许他连接到正在运行的应用进程进行调试。
78、下面持续交付&持续部署描述哪个是正确的 (B)
A 持续部署是将代码库中的任何更改都应该自动且快速地投入生产环境。持续部署等同于持续交付。
B 持续交付(CD, Continuous Delivery): 指的是,频繁的将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。它强调的是,不管怎么更新,软件是随时随地可以交付的。
C 在持续交付实践中,要考虑处理故障回滚和紧急修复,以确保系统在出现问题时能够快速恢复和修复。
D 持续交付可以随时随地部署到生产环境
79、某业务团队的架构师发现某个特性用的频率比较少,但是这个特性占用空间资源还是比较大的。为了减少首包下载体积,准备将该特性解耦出来,并对外提供API方便主模块调用。以下说法正确的是 (D)
A 将该特性做成hap包,通过Ability组件暴露出来给主app使用
B 将该特性做成动态加载的har包,暴露接口给主模块使用。
C 锦该特性做成H5模块,通过web组件加截远程资源使用
D 将该特性做成按需加载的hsp包,暴露接口给主模块使用
80、如果想让outer button响应事件,hitTestBehavior该怎么配 (C)
A HitTestMode.None
B HitTestMode.Default
C HitTestMode.Transparent
D HitTestMode.Block
81、在使用DevEco Studio进行混合语言开发时,开发者小李通过Napi引用了Native 接口的文件(例如d.ts文件)。他想要直接从这些接口跳转到其对应的C/C++函数实现处进行代码审查。请从以下选项中选择最合适的操作步骤来帮助小李实现这一目标 (A)
A 在声明或引用了Native接口的文件中,比如d.ts文件,小李可以直接选中接口名称,右键点击并在弹出的菜单中选择“Go To > Implementation(s)”(转到> 实现)。还可以使用快捷键Ctrl+Alt+B;如果是macOS用户,则使用Command+Option+B,直接跳转到对应的C/C++函数实现位置。
B 小李可以将鼠标光标置于想要查看实现的接口名称上,按下鼠标右键,在出现的上下文菜单中寻找并点击“Find Usages”(查找用法),在结果中筛选出C/C++的实现。
C 为了查看C/C++函数实现,小李必须先切换到DevEco Studio的C/C++开发环境视图,之后在项目的资源管理器中找到对应的C/C++源文件手动打开,才能查看函数代码
D 小李应该打开包含TypeScript接口声明的文件,然后手动在项目中搜索相应的C/C++源文件,逐个检查以找到匹配的函数实现
82、下面持续集成描述哪项是错误的:(D)
A Martin Fowler说过,”持续集成并不能消除Bug,而是让它们非常容易发现和改正。”
B 持续集成在大型项目(有几十个项目组)也能应用,即便是项目组开发进度不统一也没问题
C 持续集成(CI, Continuous Intergation): 指频繁的,一天多次将代码集成到主干。
D 持续集成就是持续编译,二者异曲同工
83、关于延迟任务开发使用的接口是 (A)
A 使用requestSuspendDelay申请任务,使用getRemainingDelayTime获取任务剩余时间
B 使用publishReminder发布一个提醒类通知,使用cancelReminder取消一个指定的提醒类通知
C 使用startBackgroundRunning申请任务,使用stopBackgroundRunning取消任务
D 使用startWork申请任务,使用stopWork取消任务,使用getWorkStatus获取任务状态
84、开发者张工想要高效地管理HarmonyOS设备中的文件,包括查看文件列表、进行文件搜索、新建及删除操作,以及在设备与PC间传输文件而无需使用命令行工具。以下哪个选项最能准确概括张工能通过哪个工具直接在DevEco Studio界面完成上述所有操作 (C)
A DevEco Studio的Terminal面板
B DevEco Studio的Project Explorer
C DevEco Studio的Device File Browser
D DevEco Studio的Log面板
85、开发者在编写ArkUI代码时,想要提前预览下所编写的组件的效果,下述哪个组件可以使用DevEco Studio Previewer正常预览?(A)
A @Preview @Component struct TitleSample { @StorageProp('title') title: string = 'PlaceHolder'; build() { Text(this.title) } }
B @Preview @Component struct LinkSample { @Link message: string; build() { Text(this.message) } }
C @Preview @Component struct ConsumeSample { @Consume name: string; build() { Text(this.name) } }
D import { add } from 'libnative.so'; @Preview @Component struct NativeSample { count: number = add(1, 2); build() { Text(`current count is ${this.count}`) } }
86、关于代码门禁理解正确的是:(A)
A 代码门禁则是在代码合并之前就验证代码来保护主干分支的完整性。通过这种方式,可以保护主分支代码避免因合码导致的构建中断,以确保 master 分支代码始终是可部署的,并且不会因明显的错误而影响到你正在并行开发的同事工作。
B 标准 CI 构建是在代码合并后检查已提交代码的功能完整性,这种方法会导致代码合并到master后编译失败导致没有可用版本部署。通过提高滚动构建的频度就可以代替代码门禁,保障代码主干及时发现并解决问题。
C 门禁级检查的范围和版本级检查的范围保持一致,尽可能多的在MR门禁阶段就拦截防护住问题,保障问题可以及时清理掉。
D 代码门禁是一项代码质量保障措施。目的是要求开发人员提交的代码必须满足一些要求才能合入代码仓库。门禁必须强制要求包括编译通过、单元测试覆盖率达标、代码静态检查无告警、全量功能测试用例、DFX专项测试都通过。
87、下面关于方舟字节码格式PREF_IMM16_V8_V8描述正确的是
C、16位前缀操作码,16位立即数,2个8位寄存器
88、Text组件不支持以下哪种使用方式?
C @Entry @Component struct styledStringDemo { scroll: Scroller = new Scroller(); layout: TextLayoutManager = new TextLayoutManager() controller1: TextController = new TextController(); async onPageShow() { this.controller1.setLayout (this.layout) } build() { Column() { Text (undefined, { controller: this.controller1 }) }.width('100%') } }
89、当前您在开发一个ArkTS、Stage模型的HarmonyOS工程,关于当前ArkTS工程目录结构,下列选项说法错误的是?(D)
A entry > src > main > module.json5:Stage模型模块配置文件,主要包含HAP的配置信息、应用在具体设备上的配置信息以及应用的全局配置信息。
B AppScope > app.json5:应用的全局配置信息。
C oh-package.json5:描述依赖配置,如:依赖覆盖(overrides)、依赖关系重写(overrideDependencyMap)和参数化配置(parameterFile)等。
D build-profile.json5:应用级编译构建任务脚本。
90、当您开始开发一个应用/服务时,首先需要根据工程创建向导,创建一个新的工程,工具会自动生成对应的代码和资源模板。关于新建工程,下列选项说法正确的是?(A)
A Compatible SDK是兼容的最低API Version。
B 应用包名(Bundle name)必须为以点号(.)分隔的字符串,且至少包含三段,每段中仅允许使用英文字母、数字,如“com.example.myapplication ”。
C 工程文件本地存储路径(Save location)允许包含中文字符。
D 创建用于Lite Wearable设备的工程,可以选择Native C++工程模板。
91、在编译构建HAP时,会从HAP模块及依赖的模块中收集资源文件,如果不同模块下的资源文件出现重名冲突时,会按照优先级进行覆盖,现在有一个HAP依赖了两个HAR,依赖配置如下所示:在资源覆盖时,以下优先级排序正确的是(A)
A AppScope>HAP包自身模块>dayjs模块>lottie模块
B AppScope>HAP包自身模块>lottie模块>dayjs模块
C HAP包自身模块>dayjs模块>lottie模块>AppScope
D HAP包自身模块>lottie模块>dayjs模块>AppScope
92、作为一个应用开发者,想搭建运维平台,想在应用内定时读取当前的内存信息,可以通过()接口来实现。(C)
A hiChecker
B hiAppEvent
C hiDebug
D hiLog
93、开发者小李遇到了一个复杂的问题,该问题仅在特定的代码执行路径上出现,且难以复现。他使用的是C++进行核心算法开发,代码的逻辑密集且对性能要求极高,DevEco Studio为C/C++开发者提供的高级调试能力,以下哪个能力可以帮助小李查看代码历史执行路径,回溯到关键的变量状态 (B)
A 代码静态分析:提供静态代码检查工具,通过语法和逻辑分析帮助预防潜在错误,但不涉及运行时问题定位
B 反向调试能力:允许开发者在调试过程中回退回到之前的代码行或断点,不仅查看过去的堆栈信息,还能重现历史的全局、静态和局部变量状态,帮助深入理解代码历史行为,特别是对于复杂逻辑和难以复现的bug定位至关重要
C 实时代码修改与运行时效果查看:支持在调试过程中修改代码并立即查看修改效果,适用于快速迭代,但不聚焦于问题追溯
D 传统调试模式:仅允许在当前断点暂停代码执行,查看调用堆栈和当前变量信息,但无法追溯历史执行状态
94、小华正在使用DevEco Studio开发一款基于HarmonyOS的ArkUI应用,该应用需要实现一个功能,即当用户点击按钮时,通过ArkTS/JS API调用系统的分享功能。小华对具体的API调用细节不太熟悉,如何通过DevEco Studio快速查阅相关的API文档。(B)
A 小华在代码编辑区直接键入分享功能相关的API调用代码,如 arkui.getShare(),然后按F1键,期望编辑器能自动跳转到该API的文档页面。
B 小华将鼠标悬停在编辑器中已经键入或打算键入的API调用(例如 @system.router.push)上,等待编辑器自动弹出悬浮提示框,显示该API的简要信息和不同版本参数说明。随后,点击提示框右下角的“Show in API Reference”链接,直接跳转到详尽的API参考文档页面。
C 小华右键点击代码编辑区,选择“Find Usages”选项,试图从其他地方引用该API的实例中学习如何使用分享功能。
D 小华应该先停止编码工作,打开浏览器,手动搜索关键词“HarmonyOS ArkUI 分享API”,在官方网站的文档页面中寻找相关API的使用方法。
95、根据上面代码,以下解释正确的是 (D)
A 在ChangeMode里改变mode的值,会触发其父组件Page的Title内容的切换。
B 为了避免@Prop的拷贝,可以优化使用@Link,在该例子中行为和@Prop一样。
C 本例子可以运行起来,所以代码没有问题。
D 在自定义组件Page的build方法里改变状态变量是非法操作,可能导致未定义的异常UI行为。
多选题
1、在ArkTS中,以下哪些声明类的方式是正确的 (AD)
A C2
B C4
C C3
D C1
2、一个应用通常会包含多种功能,将不同的功能特性按模块来划分和管理是一种良好的设计方式。在开发过程中,我们可以将每个功能模块作为一个独立的Module进行开发,下面关于Module的说法正确的是 (ABC)
A Library类型的Module,用于实现代码和资源的共享,有两种类型,分别为Static Library和Shared Library两种类型。
B Ability类型的Module,用于实现应用的功能和特性,有两种类型,分别为entry和feature。
C feature类型的Module,应用的动态特性模块,一个应用中可以包含一个或多个feature类型的模块,也可以不包
D entry类型的Module,是应用的主模块,一个应用只能包含唯一一个entry类型的HAP。
3、在开发过程中,我们可以将每个功能模块作为一个独立的Module进行开发。关于Module,下列选项说法正确的是?(ABD)
A Shared Library:动态共享库。HSP中的代码和资源可以独立编译,运行时在一个进程中代码也只会存在一份。
B Static Library:静态共享库。HAR中的代码和资源跟随使用方编译,如果有多个使用方,它们的编译产物中会存在多份相同拷贝。
C entry类型的Module:应用的主模块,包含应用的入口界面、入口图标和主功能特性,编译后生成entry类型的HAP。每一个应用分发到同一类型的设备上的应用程序包,可以包含一个或多个entry类型的HAP。
D feature类型的Module:应用的动态特性模块,编译后生成feature类型的HAP。一个应用中可以包含一个或多个feature类型的HAP,也可以不包含。
4、某业务团队发现用户对他们App的某个特性使用率并不高,为了节省用户首次下载安装包的体积。考虑将该特性做成按需加载,那么推荐该特性使用的工程模块类型是?(AB)
A.hap
B.hsp
C.app
D.har
5、哪些是持续部署最佳实践?
正确答案是:
A、监控和回滚机制:实时监控部署后的应用状态,如有问题及时回滚。
B、自动化部署流程:从代码提交到部署的整个流程应尽可能自动化。
D、灰度发布:先在小部分用户或区域进行部署,观察没问题后再全面推广。
G、环境一致性:保持开发、测试、生产等环境的高度一致性。
6、以下代码片段哪几处违反了ArkTS语法规范。(ACD)
A p.x = 'Hello!';
B let p = new Point(1.0, 1.0);
C p.z = 2.0;
D delete p.x;
7、以下napi代码有问题的是
正确答案:
B napi_ref g_ref = nullptr; /***** excute in main thread *****/ static napi_value DemoInMainThread(napi_env env, napi_callback_info info) { napi_value string = nullptr; napi_create_string_utf8(env, "bar", NAPI_AUTO_LENGTH, &string); napi_create_reference(env, string, 1, &g_ref); return string; } /***** excute in worker thread *****/ static napi_value DemoInWorkerThread(napi_env env, napi_callback_info info) { napi_value string = nullptr; napi_get_reference_value(env, g_ref, &string); napi_value object = nullptr; napi_create_object(env, &object); napi_set_named_property(env, object, "foo", string); return object; }
D static napi_value Demo(napi_env env, napi_callback_info info) { size_t argc = 1; napi_value args[1] = {nullptr}; napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); napi_value sizeObj = nullptr; napi_handle_scope scope = nullptr; napi_open_handle_scope(env, &scope); napi_call_function(env, nullptr, args[0], 0, nullptr, &sizeObj); napi_close_handle_scope(env, scope); int64_t width = 0; napi_value result = nullptr; napi_get_element(env, sizeObj, 0, &result); napi_get_value_int64(env, result, &width); return result; }
8、下面关于混淆的描述正确的是 (ABCD)
A 混淆支持ArkTS/TS/JS文件的混淆
B 代码混淆已经被集成了到SDK中,可以在DevEco Studio中方便地使用。
C API 10及以上版本的Stage模型、编译模式为release时,默认开启代码混淆功能;默认的混淆功能仅会混淆函数参数和局部变量的名称。
D 针对工程源码的混淆可以降低工程被破解攻击的风险,缩短函数名、类名和属性名,减小应用的大小。
9、下面关于方舟字节码指令含义说明正确的是 (AC)
A 假设寄存器v0存放了对象A, 寄存器v1存放了对象B,那么执行指令"mov v0, v1"后,v0存放对象B, v1存放对象B
B 假设寄存器v0存放了对象A, 寄存器v1存放了对象B,那么执行指令"mov v0, v1"后,v0存放对象A, v1存放对象A
C 假设寄存器v0存放了对象A, 累加器(acc)存放了对象B,那么执行指令"lda v0"后,v0存放对象A,acc存放对象A
D 假设寄存器v0存放了对象A, 累加器(acc)存放了对象B,那么执行指令"lda v0"后,v0存放对象B,acc存放对象B
10、下面关于ArkTS中import用法,正确的是(ABCD)
A import { export1 as alias1 } from "ets file name"
B import {export1 } from "ets file name"
C import * as name from "ets file name"
D import defaultExport from."ets file name"
11、以下关于ArkTS线程实例间传输实现方式描述正确的是 (AB)
A taskpool.execute(task).then(() => {});,TaskPool 共享传输实现方式
B w.postMessageWithSharedSendable(a);,Worker 共享传输实现方式
C task.setCloneList([a]); taskpool.execute(task).then(() => {});,TaskPool 共享传输实现方式
D w.postMessage(a);,Worker 共享传输实现方式
12、以下代码片段哪几个函数违反了ArkTS语法规范(AB)
A foo1
B foo4
C foo3
D foo2
13、在ArkTS中,以下哪些属性的声明是正确的。 (ACD)
A value1
B value2
C value4
D value3
14、如下ABC 3处手势,有机会执行的是哪几处?(AC)
A A
B B
C C
D NA
15、以下哪些实现方式可实现文本字号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)
16、依次点击A、B、C、D四个按钮,其中不会触发UI刷新的是:(AB)
A A
B B
C C
D D
17、如何实现类似下图布局(BC)
18、Code Linter针对ArkTS/TS代码进行最佳实践/编程规范方面的检查,最佳实践/编程规范方面的检查规则可以配置,针对codelinter的配置项一下哪些说法是正确的(ACD)
A ruleSet:配置检查使用的规则集,规则集支持一次导入多条规则。
B rules:可以基于ruleSet配置的规则集,新增额外规则项,但是无法修改ruleSet中规则默认配置
C ignore:配置无需检查的文件目录,其指定的目录或文件需使用相对路径格式,相对于code-linter.json5所在工程根目录,例如:build/**/*。
D files:配置待检查的文件名单,如未指定目录,规则适用于所有文件,例如:[“**/*.ets”,”**/*.js”,”**/*.ts”]。
19、一个应用通常会包含多种功能,将不同的功能特性按模块来划分和管理是一种良好的设计方式。在开发过程中,我们可以将每个功能模块作为一个独立的Module进行开发,下面关于Module的说法正确的是(ABC)
A Library类型的Module,用于实现代码和资源的共享,有两种类型,分别为Static Library和Shared Library两种类型。
B Ability类型的Module,用于实现应用的功能和特性,有两种类型,分别为entry和feature。
C feature类型的Module,应用的动态特性模块,一个应用中可以包含一个或多个feature类型的模块,也可以不包
D entry类型的Module,是应用的主模块,一个应用只能包含唯一一个entry类型的HAP。
20、在大型软件工程中,一般会伴随着多团队开发,各团队开发自己的业务模块,最后再由集成交付团队集成到一起,下面哪些是大型应用模块化开发最佳实践(ABCD)
A 若多个模块依赖了不同版本的HAR,使用OHPM的overrides机制配置指定使用哪个版本的HAR,以减少包大小。
B 避免用户首次下载应用耗时过长,及过多占用用户空间,不常用功能做成按需加载。
C 一次上架多端部署。
D 使用路由表进行模块间解耦。
21、通过如下openLink的接口启动,如下哪些配置的UIAbility不可能被拉起(下图不选,其余三个选)viewDate+https
22、某个应用的启动框架配置文件详细信息如下,以下说法正确的是:(ACD)
A StartupTask_001会在StartupTask_004之后执行
B StartupTask_003会在StartupTask_004之后执行
C StartupTask_005会在主线程执行
D StartupTask_006会在AbilityStage的onCreate前初始化完成
23、使用ArkUI组件复用之后,还是没有显著提升列表滑动场景的性能,属于组件复用未生效可能的原因有?(BCD)
A 没有在aboutToReuse更新关联的状态变量数据。
B 在aboutToReuse回调函数中更新了冗余的状态变量。
C 页面嵌套了过多自定义组件。
D 复用的自定义组件中使用if等条件渲染语句导致结构不相同,未使用reuseId标记。
24、下面关于动态import描述正确的是(ABC)
A 动态import根据入参是否为常量字符串分为常量动态import和变量动态import两种
B HAR模块间只有变量动态import时可以进行模块解耦
C 动态导入import0)是个异步接口,调用后将返回一个promise
D 常量动态import也必须配置runtimeOnly选项
25、下面关于混淆规则描述正确的是(AC)
A -enable-export-obfuscation:开启直接导入或导出的类或对象的名称和属性名混淆
B -enable-toplevel-obfuscation:开启属性混淆
C -disable-obfuscation:关闭所有混淆
D -enable-property-obfuscation:开启顶层作用域名称混淆
26、在ArkTS中,以下代码片段正确的是
正确答案如下:
A function fn(x: string | number): string { return 'value: ' + x; } type funcType = (ns: string) => string; let func: funcType = fn;
B function fn(x: string | number): string { return 'value:' + x; } type funcType = (ns: string | number) => string; let func: funcType = fn;
27、以下代码片段哪几处违反了ArkTS语法规范。 (BCD)
A foo(1, 2);
B foo(1, 2, 3, 4);
C foo();
D foo(1, 2, 3);
28、以下关于Taskpool和Worker的描述正确的是(AC)
A Worker的任务执行时长上限是无限制
B Worker支持取消已发起的任务
C TaskPool支持设置任务的优先级
D TaskPool不支持线程复用
29、List组件onScrollIndex事件触发时机是 (BD)
A List组件滚动停止时触发
B List组件显示区域内第一个子组件或最后一个子组件或中间位置子组件索引值变化时触发
C List组件列表滚动时每帧触发
D List组件首次加载完成时触发
30、如果想让grid上的捏合手势手势生效,而不跟grid上的滚动手势形成冲突,.xxxx?手势接口应该怎么配置?(ACD)
A gesture
B GesureGroup
C priorityGesture
D parallelGesture
31、在基于Stage模型开发的应用项目代码下,都存在一个app.json5配置文件,用于配置应用的全局信息,以下app.json5配置文件错误的是 (AB)
结果如下:
A { "app": { "bundleName": "com.example.myapplication", "vendor": "example", "versionCode": 1000000, "versionName" : "1.0.2", "icon": "$media:app_icon", // ========================== 【label】字段的值需要引用 "label": "app_name", "bundleType": "app" } }
C { "app": { "bundleName": "com.example.myapplication", "vendor": "example", "versionCode": 1000000, // ========================== 缺少字段【versionName】 "icon": "$media:app_icon", "label": "$string:app_name", "bundleType": "app", } }
32、使用如下的代码去启动一个ability时,哪种skills定义的组件能够被匹配到:(ACD)
33、以下哪些方式可以实现ArkWeb同层渲染能力(AD)
34、用户购买商品后,你需要及时发放相关权益。但实际应用场景中,若出现异常将导致应用无法知道用户实际是否支付成功,从而无法及时发放权益,即出现掉单情况。为了确保权益发放,你需要在以下哪些场景检查用户是否存在已购未发货的商品:(ABC)
A createPurchase请求返回1001860001-内部错误时
B 应用启动时
C createPurchase请求返回1001860051-由于已经拥有该商品,购买失败时
D finishPurchase请求返回1001860052-由于未拥有该商品,发货失败时
35、ArkTS对并发编程API和能力进行了增强,以下描述正确的是(BD)
A 单次I/O任务的开发场景中,必须使用TaskPool进行开发。
B CPU密集型任务场景中,当任务不需要长时间(3分钟)占据后台线程,而是一个个独立的任务时,推荐使用TaskPool进行开发。
C 默认情况下,Sendable数据在ArkTS并发实例间(包括主线程、TaskPool&Worker工作线程)传递的行为是拷贝传递。
D 在并发API的形式上,目前主要有两种:Worker和TaskPool。
36、ArkTS中不能使用以下哪些类型。(BC)
A union type
B any
C unknown
D tuple type
37、应用开发的有些场景中,如果希望根据条件导入模块或者按需导入模块,可以使用动态导入代替静态导入,面导入场景中适合使用动态import的是(ABCD)
A 当静态导入的模块很明显的降低了代码的加载速度且被使用的可能性很低,或者并不需要马上使用它。
B 当被导入的模块,在加载时并不存在,需要异步获取。
C 当被导入的模块说明符,需要动态构建。
D 当静态导入的模块很明显的占用了大量的系统内存且被使用的可能性很低。
38、以下代码片段哪几个class/interface违反了ArkTS语法规范。(AB)
Class Person {}
Class Student extends Person {}
class Instructor implements Person{}
interface Shape {}
interface Circle implements Shape {}
class Square implements Shape {}
A Instructor
B Circle
C Square
D Student
39、下面代码符合Node-API开发规范的是(AC)
A.
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;
}
B.
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;
}
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 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;
}
40、ArkTS是鸿蒙生态的应用开发语言。下列说法正确的是(ACD)
A ArkTS在保持TypeScript(简称TS)基本语法风格的基础上,进一步通过规范强化静态检查和分析,使得在程序运行之前的开发期能检测更多错误,提升代码健壮性,并实现更好的运行性能。
B TS/JS代码支持import ArkTS代码。
C针对JavaScript(简称JS)/TS并发能力支持有限的问题,ArkTS对并发编程API和能力进行了增强。
D ArkTS提供了声明式UI范式、状态管理支持等相应的能力,让开发者可以以更简洁、更自然的方式开发应用。
41、Image组件以下哪些方式可显示图片?(ABCD)
42、HarmonyOS应用开发者小张,正在利用DevEco Studio进行一款复杂应用的UI界面调试。小张了解到ArkUI Inspector是DevEco Studio内置的一项强大工具,能够显著提升UI调试效率。基于ArkUI Inspector的特性描述,下列哪些描述是正确的(ABD)
A 交互式组件选择:用户既可以在组件树视图中选择组件,使UI界面上对应组件高亮显示并展示其属性详情;也可以直接在UI布局显示界面上点击选择组件
B UI效果查看:开发者能够查看连接真机上运行的应用程序的UI显示效果,页面组件树结构,以及选中组件的属性信息
C 性能监控:提供详细的UI渲染性能指标,帮助开发者识别布局瓶颈和渲染效率问题,从而优化应用性能
D UI快照管理:支持导出应用的UI界面为快照图片,并允许这些快照被导入回ArkUI Inspector中,便于离线分析或分享讨论UI设计方案
43、以下关于LocalStorage的说法正确有哪些?(ABD)
A 组件树的根节点,即被@Entry装饰的@Component,可以被分配一个LocalStorage实例,此组件的所有子组件实例将自动获得对该LocalStorage实例的访问权限。
B 应用程序可以创建多个LocalStorage实例,LocalStorage实例可以在页面内共享,也可以通过GetShared接口,获取在UIAbility里创建的GetShared,实现跨页面、UIAbility内共享。
C LocalStorage中的所有属性都是不可变的。
D 被@Component装饰的组件最多可以访问一个LocalStorage实例和AppStorage,未被@Entry装饰的组件不可被独立分配LocalStorage实例,只能接受父组件的LocalStorage实例。
44、在基于Stage模型开发的应用项目代码下,每个模块都存在一个module.json5配置文件,用于配置模块的基本信息,以下module.json5配置文件正确的(ABD)
45、hiAppEvent提供的Watcher接口,订阅到的系统事件,哪些包含HiLog日志?(BD)
A 启动耗时事件
B卡死事件
C CPU高负载事件
D 崩溃事件
46、当前动态import支持导入的模块类型有哪些?(ABCD)
A 动态import支持加载本地HAR模块
B 动态import支持加载远程HAR模块
C 动态import支持加载HSP模块
D 动态import支持加载OHPM模块
47、Arkrs是鸿蒙生态的应用开发语言。以下哪些选项是ArkTs的设计理念。(ABD)
A 通过规范强化静态检查和分析,减少运行时的类型检查,从而降低了运行时负载,提升执行性能。
B ArkTS保留了TS大部分的语法特性,帮助开发者更容易上手ArkTS。
C ArkTS不支持null-satety特性。
D 通过规范强化静态检查和分析,使得许多错误在编译时可以被检测出来,降低代码运行错误的风险。
48、以下代码片段哪几处违反了ArkTS语法规范(ABD)
A foo(null);
B foo('');
C foo(0);
D foo(undefined);
49、以下哪些是可以在Navigation中使用pushPathByName接口传递的params的参数类型(ABC)
A record<string,string>
B string
C arrayBuffer
D map<string,string>
50、下面关于方舟字节码文件格式描述正确的是(BD)
A 方舟字节码文件中不包含字节码文件内容的ader32校验和
B 方舟字节码文件中数据类型uint16 t表示16-bit无符号整数,采用小端字节序
C 方舟字节码文件中数据类型uint32 t表示32-bit无符号整数,采用大端字节序
D 方舟字节码文件是ArKTS/TS/JS编译后的二进制产物
51、在开发HarmonyOS应用的多元化测试环境中,DevEco Studio引入了本地模拟器(Local Emulator)作为重要工具,旨在帮助开发者在个人开发机器上高效模拟HarmonyOS环境,进行应用或服务的快速运行与细致调试。请根据本地模拟器的实际应用场景与系统要求,选出所有正确的描述选项(BCD)
A 开发者需要注意的是,DevEco Studio的本地模拟器可以在虚拟机内部进一步运行,以节省硬件资源。
B DevEco Studio的本地模拟器允许开发者在个人电脑上模拟HarmonyOS环境,便于应用或服务的运行与调试。
C mac计算机配置方面,为了确保本地模拟器的稳定运行,推荐至少配备8GB RAM。
D 为了保证流畅的运行和调试体验,本地模拟器推荐macOS系统版本至少为12.5以上。
52、下面关于混淆的描述正确的是(ABCD)
A 可以在HAR模块工程的build-profile.json5中的obfuscation.consumerFiles字段中配置导出的混淆配置,该配置仅在编译依赖该HAR的模块时生效。
B 支持顶层作用域名称、属性名称、文件名称等多种混淆功能
C 在工程build-profile.json5中的obfuscation.ruleOptions.files字段中配置该工程的混淆配置,该配置仅在编译该工程时生效。
D 修改应用混淆配置,新配置需要重新全量编译应用才能生效
53、如下哪些方式可实现图片动态播放 (ABD)
不选带有下面这个的,其余3个全选 private async getPixelMaps() { // ==================== 怎么没有定义Mypixelmaps???????? Mypixelmaps.push(await this.getPixmapFromMedia($r('app.media.icon'))) //对应资源图片名后缀为png return Mypixelmaps; }
54、下面关于混淆规则描述正确的是(CD)
A -keep-property-name [,identifiers,...]:指定要保留的顶层作用域的名称
B -keep-global-name [,identifiers,...]:指定想保留的属性名
C -print-namecache filepath: 将名称缓存保存到指定的文件路径。
D -keep-file-name [,identifiers,...]:指定要保留的文件/文件夹的名称
55、下面关于Node-API数据类型描述正确的是(CD)
A napi threadsafe function release mode:该枚举类型定义了两个常量,用于指定线程安全函数的调用模式
B napi threadsafe_function_call mode:该枚举类型定义了两B个常量,用于指定在何时释放线程安全函数的回调函数
C napienv:用于表示Node-API执行时的上下文
D napi status:是一个枚举数据类型,表示Node-API接口返回的状态信息
56、以下数据类型中,哪些是Sendable数据。 (ACD)
A number
B class C
C interface I
D string
57、处于安全因素考虑,ArkTS不支持以下哪些语法。(ACD)
A with()
B Object.entries()
C eval()
D new Function('a', 'b', 'return a + b')
58、在ArkTS中,以下哪些声明类的方式是正确的(AD)
A C2
B C4
C C3
D C1
59、小华正在使用DevEco studio开发一个复杂的Harmonyos应用,他意识到代码中有一段逻辑被多次重复使用,为了优化代码结构和减少冗余,他决定将这段逻辑提取出来作为一个独立的方法。同时,他也注意到有些常用的硬编码值可以抽象为常量,以提高代码的可读性和维护性。小华希望利用DevEco Studio的代码重构功能来高效完成这些任务,通过以下哪些操作来实现代码重构,以提升编码效率(ABCD)
A 为了简化复杂类型的多次书写,小华可以选择特定类型字面量,通过“Refactor"菜单下的“Extract Type Alias”来创建类型别名
B 选中需要重构的代码块,右键点击选择“Refactor”,然后选择“Extract Method”来将代码块转换为一个新的函数/方法
C 若需要将局部变量提升为类成员变量,小华只需简单选中变量名,右键选择“Refactor”->“Promote Local Variable”
D 如果小华识别到一组相关的对象字面值可以抽象为一个接口,他可以直接通过“Refactor”"菜单中的Extract Interface”功能实现
60、哪些是持续集成最佳实践(ACDFG)
A 代码审查:在集成前进行代码审查,及时发现潜在问题。
B 构建相同代码的 Pipeline 运行多次,得到结果不同。比如,基于同一代码基线,一条 Pipeline 构建了 5 次,只要最后一次通过即可。反模式
C 全面的测试套件:包括单元测试、集成测试、功能测试等,以提高代码质量。
D 自动化构建:确保构建过程是完全自动化的,减少人为错误。
E 通常项目上会有一个专职 Ops,在项目可以发布的时候手动触发部署流程,或者需要传递很多参数,让 Pipeline 运行起来。反模式
F 快速反馈机制:让开发人员能迅速得知集成结果和测试状态。
G 频繁提交代码:鼓励开发人员经常提交小的代码更改,以便更快地发现问题。
61、下面代码符合ArkTS编程规范的是(AC)
62、下面代码符合ArkTS编程规范的是(AB)
63、下面关于ArkTS中export用法,正确的是(ABCD)
A export { export1 as alias1 } from "ets file name";
B export * as name from "ets file name"
C export * from "ets file name"
D export { export1 } from "ets file name";
64、为了加快构建速度,提高开发效率,可以如何调整hvigor配置,从而优化构建速度(BCD)
A 启用hvigor的typeCheck,在增量场景下进行对hvigorfile.ts进行类型检查
B 启用hvigor的incremental,在增量场景下检查任务是否可以跳过
C 启动hvigor的daemon模式,在增量场景下复用缓存
D 启用hvigor的parallel,在增量场景下进行并行编译处理