高级的题库更新之后,专业性更强了,不是真正从事这一行的,很难做出来。本人就是个小菜鸡,有一些题,我也不想不明白。题目的答案我尽可能的找到出处,如果读者发现错误或有补充建议,欢迎评论或私信笔者。笔者这篇就当抛砖引玉,各位读者可以当作考试的一个参考
注:有读者反馈,题库的代码块比较多,打开文章时会卡死。所以笔者将题库拆分,以20道题为一组,题库目录如下,读者可以按需跳转。如果对您的阅读产生不便,笔者在这里向大家说声抱歉,请各位读者原谅。该题库已整理完毕,笔者不再更新。笔者连续考了三次,都过了,所以答案应该没什么太大问题。有需要题库文档的可以自取。祝各位读者好运(๑¯ω¯๑)。
41、以下关于Localstorage的说法正确有哪些?
A、LocalStorage中的所有属性都是不可变的。
B、被@Component装饰的组件最多可以访问一个LocalStorage实例和AppStorage,未被@Entry装饰的组件不可被独立分配LocalStorage实例,只能接受父组件的LocalStorage实例。
C、组件树的根节点,即被@Entry装饰的@Component,可以被分配一个LocalStorage实例, 此组件的所有子组件实例将自动获得对该LocalStorage实例的访问权限。
D、应用程序可以创建多个LocalStorage实例,LocalStorage实例可以在页面内共享,也可以通过GetShared接口,获取在UIAbility里创建的GetShared,实现跨页面、UIAbility内共享 。
LocalStorage:页面级UI状态存储-管理应用拥有的状态-状态管理(V1稳定版)-状态管理-学习ArkTS语言-基础入门 | 华为开发者联盟 (huawei.com)
42、在基于Stage模型开发的应用项目代码下,每个模块都存在一个module.json5配置文件,用于配置模块的基本信息,以下module.json5配置文件正确的是
// A
{
"module": {
"name": "bName",
"type":" shared",
"deviceTypes": [
"default",
"tablet"
],
"deliveryWithInstall": true,
"pages": "$profile:main_pages"
}
}
// B == 缺少字段【deliveryWithInstall】
{
"module": {
"name": "aName",
"type": "har"
"deviceTypes": [
"default", "tablet" ]
}
}
// C == 【type】字段不支持【hsp】
{
"module": {
"name": "cName",
"type": "hsp",
"description": "$string:desc",
"deviceTypes": [
"default",
"tablet"
],
"deliveryWithInstal1": true,
"pages": "$profile:main_pages"
}
}
// D
{
"module": {
"name": "application",
"type": "feature",
"description": "$string:module_desc",
"mainElement": "ApplicationAbility",
"deviceTypes": [
"default",
"tablet"
],
"deliverywithInstall": true,
"installationFree": false,
"pages": "$profile:main_pages",
"abilities": [
{
"name": "ApplicationAbility",
"srcEntry": "./ets/applicationability/ApplicationAbility.ets",
"description": "$string:ApplicationAbility_desc",
"icon": "$media:icon",
"label": "$string:ApplicationAbility_label",
"startwindowIcon": "$media:startIcon",
"startWindowBackground": "$color:start_window_background",
"exported": true
}
]
}
}
A、A
B、B
C、C
D、D
module.json5配置文件-应用配置文件(Stage模型)-开发基础知识-基础入门 | 华为开发者联盟 (huawei.com)
43、hiAppEvent提供的Watcher接口,订阅到的系统事件,哪些包含HiLog日志?
A、CPU高负载事件
B、启动耗时事件
C、卡死事件
D、崩溃事件
CPU高负载事件介绍-CPU高负载事件-系统事件-事件订阅-HiAppEvent使用指导-Performance Analysis Kit(性能分析服务)-调测调优-系统 | 华为开发者联盟 (huawei.com)
启动耗时事件介绍-启动耗时事件-系统事件-事件订阅-HiAppEvent使用指导-Performance Analysis Kit(性能分析服务)-调测调优-系统 | 华为开发者联盟 (huawei.com)
卡死事件介绍-卡死事件-系统事件-事件订阅-HiAppEvent使用指导-Performance Analysis Kit(性能分析服务)-调测调优-系统 | 华为开发者联盟 (huawei.com)
崩溃事件介绍-崩溃事件-系统事件-事件订阅-HiAppEvent使用指导-Performance Analysis Kit(性能分析服务)-调测调优-系统 | 华为开发者联盟 (huawei.com)
44、当前动态import支持导入的模块类型有哪些?
A、动态import支持加载OHPM模块
B、动态import支持加载本地HAR模块
C、动态import支持加载HSP模块
D、动态import支持加载远程HAR模块
动态import-应用程序包开发与使用-应用程序包基础知识-开发基础知识-基础入门 | 华为开发者联盟 (huawei.com)
45、ArkTS是鸿蒙生态的应用开发语言。以下哪些选项是ArkTS的设计理念。(我感觉【satety】打错了,应该是【safety】)
A、通过规范强化静态检查和分析,减少运行时的类型检查,从而降低了运行时负载,提升执行性能。
B、通过规范强化静态检查和分析, 使得许多错误在编译时可以被检测出来,降低代码运行错误的风险。
C、ArkTS不支持null-satety特性 。
D、ArkTS保留 了TS大部分的语法特性,帮助开发者更容易上手ArkTS。
46、以下代码片段哪几处违反了ArkTS语法规范。
function foo(value: number) {
return value;
}
foo('');
foo(0);
foo(undefined);
foo(null);
A. foo(null);
B. foo(undefined);
C. foo(");
D.foo(0);
47、以下哪些是可以在Navigation中使用pushPathByName接口传递的params的参数类型(不确定,把所有选项列出)
A、arrayBuffer
B、map
C、record
D、string
48、HSP支持导出ArkUl组件、接口,供应用内的其他HAP/HSP引用,下面正确的是(不确定,把所有选项列出)
// A
// library/src/main/ets/components/MyTitleBar.ets
@Component
export struct MyTitleBar {
build() {
Row() {
Text($r('app.string.library_title' ))
.id('library')
.fontFamily('HarmonyHeiTi')
.fontWeight(FontWeight.Bold)
.fontSize(32)
.fontColor($r('app.color.text_color'))
}
.width('100%')
}
}
// 对外暴露的接口,需要在入口文件index.ets中声明:
// library/index.ets
export { MyTitleBar } from './src/main/ets/components/MyTitleBar';
// B
// library/src/main/ets/utils/nativeTest.ts
import native from 'liblibrary.so';
export function nativeMulti(a: number, b: number): number {
let result: number = native.multi(a, b);
return result;
}
// 对外暴露的接口,需要在入口文件index.ets中声明:
// library/index.ets
export { nativeMulti } from './ src/main/ets/utils/nativeTest';
// C
// library/src/main/ets/utils/test.ts
export class Log {
static info(msg: string): void {
console.info(msg);
}
}
export function add(a: number, b: number): number {
return a + b;
}
export function minus(a: number, b: number): number {
return a - b;
}
// 对外暴露的接口,需要在入口文件index.ets中声明:
// library/index.ets
export { Log, add, minus } from './src/main/ets/utils/test';
A、导出ArkUI组件
B、导出native方法,在HSP中也可以包含C++编写的so。对于so中的native方法,HSP通过间接的方式导出,以导出liblibrary.so的乘法接口multi为例
C、导出ts类和方法
HSP-应用程序包开发与使用-应用程序包基础知识-开发基础知识-基础入门 | 华为开发者联盟 (huawei.com)
49、下面关于方舟字节码文件格式描述正确的是
A、方舟字节码文件中数据类型uint32_t表示32-bit无符号整数,采用大端字节序
B、方舟字节码文件中不包含字节码文件内容的adler32校验和
C、方舟字节码文件是ArkTS/TS/JS编译后的二进制产物
D、方舟字节码文件中数据类型uint16_t表示16-bit无符号整数,采用小端字节序
方舟字节码文件格式-学习ArkTS语言-基础入门 | 华为开发者联盟 (huawei.com)
50、在开发HarmonyOS应用的多元化测试环境中,DevEco Studio引入了本地模拟器(Local Emulator)作为重要工具,旨在帮助开发者在个人开发机器上高效模拟HarmonyOS环境,进行应用或服务的快速运行与细致调试。请根据本地模拟器的实际应用场景与系统要求,选出所有正确的描述选项
A、开发者需要注意的是,DevEco Studio的本地模拟器可以在虚拟机内部进一步运行,以节省硬件资源。
B、为了保证流畅的运行和调试体验,本地模拟器推荐macOS系统版本至少为12.5以上。
C、DevEco Studio的本地模拟器允许开发者在个人电脑上模拟HarmonyOS环境,便于应用或服务的运行与调试。
D、mac计算机配置方面,为了确保本地模拟器的稳定运行,推荐至少配备8GB RAM。
使用环境-概述-使用模拟器运行应用/服务-应用/服务运行-DevEco Studio | 华为开发者联盟 (huawei.com)
51、下面关于混淆的描述正确的是
A、支持顶层作用域名称、 属性名称、文件名称等多种混淆功能
B、修改应用混淆配置,新配置需要重新全量编译应用才能生效
C、在工程build-profile.json5中的obfuscation.ruleOptions.files字段中配置该工程的混淆配置,该配置仅在编译该工程时生 效。
D、可以在HAR模块工程的build-profile.json5中的obfuscation.consumerFiles字段中配置导出的混淆配置,该配置仅在编译 依赖该HAR的模块时生效。
代码混淆-ArkTS(方舟编程语言)-应用框架 | 华为开发者联盟 (huawei.com)
52、如下哪些方式可实现图片动态播放?
// A
import {AnimationOptions, AnimatedDrawableDescriptor} from '@ohos.arkui.drawableDescriptor'
import image from '@ohos.multimedia.image'
@Entry
@Component
struct ImageExample {
pixelmaps: Array<PixelMap> = [];
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 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
}
private async getPixelMaps() {
// ==================== 怎么没有定义Mypixelmaps????????
Mypixelmaps.push(await this.getPixmapFromMedia($r('app.media.icon'))) //对应资源图片名后缀为png
return Mypixelmaps;
}
}
// B
import {AnimationOptions, AnimatedDrawableDescriptor} from '@ohos.arkui.drawableDescriptor'
import image from '@ohos.multimedia.image'
@Entry
@Component
struct ImageExample {
pixelmaps: Array<PixelMap> = [];
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<PixelMap> = await this.getPixmapListFromMedia($r('app.media.icon')) //对应资源图片为gif
return Mypixelmaps;
}
}
// C
@Entry
@Component
struct ImageExample {
build() {
Column({ space: 10 }) {
Image($r('app.media.earth')) //对应资源图片名后缀为gif
.width(100)
.height(100)
}
}
}
// D
@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%')
}
}
A、A
B、B
C、C
D、D
53、下面关于混淆规则描述正确的是
A、-keep-global-name [,idetifies,…]: 指定想保留的属性名
B、-keep-file-name [,identifirs,...]:指定要保留的文件/文件夹的名称
C、-keep-property-name [,idetifies,…]:指定要保留的顶层作用域的名称
D、-print-namecache filepath:将名称缓存保存 到指定的文件路径。
代码混淆-ArkTS(方舟编程语言)-应用框架 | 华为开发者联盟 (huawei.com)
54、下面关于Node-API数据类型描述正确的是
A、napi_status:是一个枚举数据类型,表示Node-API接口返回的状态信息
B、napi_threadsafe_function_release_mode:该枚举类型定义了两个常量,用于指定线程安全函数的调用模式
C、napi_env:用于表示Node-API执行时的上下文
D、napi_threadsafe_function_call_mode:该枚举类型定义了两个常量,用于指定在何时释放线程安全函数的回调函数
Node-API支持的数据类型和接口-使用Node-API实现跨语言交互-代码开发-NDK开发 | 华为开发者联盟 (huawei.com)
55、以下数据类型中,哪些是Sendable数据 。(不确定)
import { lang } from '@kit.ArkTS';
class C {}
interface I extends lang.ISendable {}
A、interface I
B、class C
C、string
D、number
56、处于安全因素考虑,ArkTS不支持以下哪些语法。
A、with()
B、new Function('a', 'b', 'return a + b')
C、eval()
D、Object.entries()
57、在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、C1
B、C2
C、C3
D、C4
58、小华正在使用DevEco studio开发一个复杂的HarmonyOS应用,他意识到代码中有一段逻辑被多次重复使用,为了优化代码结构和减少冗余,他决定将这段逻辑提取出来作为一个独立的方法。同时,他也注意到有些常用的硬编码值可以抽象为常量,以提高代码的可读性和维护性。小华希望利用DevEco Studio的代码重构功能来高效完成这些任务,通过以下哪些操作来实现代码重构,以提升编码效率
A、为了简化复杂类型的多次书写,小华可以选择特定类型字面量,通过“Refactor”菜单下的“Extract Type Alias”来创建类型别名
B、若需要将局部变量提升为类成员变量,小华只需简单选中变量名,右键选择“Refactor” -> “Promote Local Variable”
C、选中需要重构的代码块,右键点击选择“Refactor”,然后选择“Extract Method”来将代码块转换为一个新的函数/方法
D、如果小华识别到一 组相关的对象字面值可以抽象为一个接口,他可以直接通过“Refactor”菜单中的“Extract Interface”功能实现
59、哪些是持续集成最佳实践?
A、自动化构建:确保构建过程是完全自动化的,减少人为错误。
B、构建相同代码的 Pipeline 运行多次,得到结果不同。比如,基于同一代码基线,一条Pipeline构建了5次,只要最后一次通过即可。
C、全面的测试套件:包括单元测试、集成测试、功能测试等,以提高代码质量。
D、通常项目上会有一 个专职 Ops,在项目可以发布的时候手动触发部署流程,或者需要传递很多参数,让 Pipeline 运行起来。
E、频繁提交代码:鼓励开发人员经常提交小的代码更改, 以便更快地发现问题。
F、代码审查:在集成前进行代码审查,及时发现潜在问题。
G、快速反馈机制:让开发人员能迅速得知集成结果和测试状态。
60、下面代码符合ArkTS编程规范的是(不确定,把所有选项列出)
let maxCount = 10, isCompleted = false;
// 不能像Java这样定义变量
let pointX, pointY;
pointx = 10; pointY = 0;
for (let idx = 0; idx < 5; ++idx)
// console.log(【string】类型)
console.log(idx);
let maxCount = 10;
let isCompleted = false;
let pointX = 0;
let pointY = 0;
// 没有定义【condition】
if (condition) {
console.log('success');
}
A、A
B、B
C、C
D、D
61、下面关于ArkTS中export用法,正确的是
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";
62、在使用DevEco Studio进行HarmonyOS应用开发和调试过程中,开发者小张遇到应用运行时意外终止的情况,他需要快速定位并解决导致应用崩溃的问题。以下哪些做法可以帮助小张有效分析和处理这些问题(不确定,把所有选项列出)
A、查看DevEco Studio log工具栏输出的错误日志,根据日志提示分析应用崩溃的具体原因及代码位置
B、若遇到App运行卡顿或系统整体无响((App Freeze, System Freeze)的情况,可以通过性能分析工具中的Frame Insight和Allocation Insight功能,分析应用的资源消耗情况,寻找可能的瓶颈
C、当怀疑问题是由于C++代码中的内存错误(如数组越界、内存泄露、重复释放内存)引起时,进入“Run/Debug Configurations"设置界面,勾选启用Address Sanitizer (ASan),然后重新部署应用进行测试以获取更详细的内存问题报告
D、利用系统自动生成的FaultLog,包括App Freeze、 CPP Crash、 JS Crash、 System Freeze和ASan报告, 这些报告会详细记录故障发生时的环境、堆栈信息和可能的故障原因,是排查问题的重要参考
63、为了加快构建速度,提高开发效率,可以如何调整hvigor配置,从而优化构建速度
A、启用hvigor的incremental,在增量场景下检查任务是否可以跳过
B、启动hvigor的daemon模式,在增量场景下复用缓存
C、启用hvigor的typeCheck,在增量场景下进行对higorfile.ts进行类型检查
D、启用hvigor的parallel,在增量场景下进行并行编译处理
提高hvigor构建性能-优化构建性能-优化构建-编译构建-DevEco Studio | 华为开发者联盟 (huawei.com)
64、项目组开发的HarmonyOS应用工程,为了保护hap代码资产,如何在DevEco Studio中启用混淆的功能,并设置相应的混淆规则?
A、在混淆规则配置文件obfuscation-rules.txt中进行混淆规则的配置
B、release模式下将buildOption/arkOptions/ruleOptions/enable设置为true
65、Navigation组件是路由导航的根视图容器,一般作为Page页面的根容器使用,以下关于Navigation组件说法正确的是
A、Navigation的子页面可以来自不同的Module
B、Navigation的页面显示模式有单页面、分栏和自适应三种显示模式
66、开发者小李正在使用DevEco Studio开发一款面向HarmonyOS的应用,该应用需要在多种设备上表现出一致的稳定性和优秀的用户体验。为了确保高质量的发布,小李意识到需要实施一套全面的测试策略,覆盖代码的自动化测试和手动测试,还需要衡量代码的测试覆盖率,以确定测试的充分性。在DevEco Studio的测试框架下,以下描述中,哪些是正确的(不确定)
不选这一项,其余全选:【Instrument Test:测试用例存储于项目的ohosTest目录,要求在HarmonyOS设备或模拟器上执行,兼容ArkTS与JS语言编写。】