鸿蒙OS试题(2)
20.项目需要为不同的设备形态(如手机、智能手表)提供定制化构建。请说明如何在DevEco studio中设置不同的构建配置,以生成针对不同设备的hap包?
A.在工程级别build-profile.ison5定义多个
product,在每个product的config/deviceType中定义不同的设备类型
B.在工程级别build-profile.json5定义多个product,在每个product的config/distributionFilter中定义不同的设备类型
C.在模块级别build-profilejson5定义多个target,在每个target的config/distributionFilter中定义不同的设备类型
D.在模块级别build-profile.json5定义多个target在每个target的config/deviceType中定义不同的设备类型
21.在开发HarmonyOS应用工程时,随着业务的发展,现在需要创建一个模块,关于在 DevEco Studio中创建Module,下列选项哪种方式是错误的?
A.在工程根目录下创建一个新的Directory,可在该目录下单击鼠标右键,选择New> Module...,创建
新的Module,此时module将创建在该文件目录下。
B.在hvigor目录下,单击鼠标右键,选择New>Module...,创建新的Module,此时module将创建在该文件目录下。
C.选中工程目录中任意文件,然后在菜单栏选择File > New> Module...,开始创建新的Module,此时该module将创建在工程根目录下。
D.鼠标移到工程目录顶部,单击鼠标右键,选择New>Module...,开始创建新的Module,此时该module将创建在工程根目录下。[数学公式]
22.在一个包含多个模块(如entry、feature、service、library等)的大型Harmony0S应用项目中,如果某个模块feature对另外一个公共库模块library有依赖,如何通过DevEco Studio正确配置项目依赖关系
A. 在feature的oh-package,json5文件的dependencies字段中配置library的依赖
B. 无需配置,直接在代码中编写import xxx from'library
C.在feature的build-profile,json5文件的dependencies字段中配置library的依赖
D. 在library的oh-package,json5文件的dependencies字段中配置feature的依赖
23.项目中包含多个模块和数千行代码。随着开发的深入,项目中的ArkTS源代码文件逐渐积累了大量import语句,其中不乏未使用的import以及不规范的排序情况,关于DevEco studio的编辑器的“optimize Imports”,以下说法正确的是
A.在DevEco Studio中,没有直接的“Optimizemports”功能,需要安装第三方插件来实现这个需求。
B.为了快速清理未使用的import,可以选中项目根目录,按下快捷键Ctrl+Alt+0(在macOS上为Control+Option+0),让DevEco Studio自动识别并移除所有未使用的import,并自动按照预设规则排序和合并import。
C可以在菜单栏中依次点击“Code”>“ReformatCode”来达到优化import的目的,因为“Optimizelmports”功能已整合进“Reformat Code”中。
D.应该手动遍历每个ArkTS文件,逐一检查并删除未使用的import语句,然后按照字母顺序手动排序剩余的import。
24.使用promptAction.showToast如何设置显示在其他应用之上?
A. 无需配置,默认显示在其他应用之上
B. ToastShowMode.DEFAULT
C.ToastShowMode.SYSTEM_TOP_MOST
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
A.TransitionEffect.asymmetric(TransitionEffect.OPAClTY.animation({duration:2000})TransitionEffect.translate({x:100}).animation({duration: 2000}))
B.TransitionEffect.OPAClTY.animation({duration.2000}).combine(TransitionEffect.translate({x:100}))
C.TransitionEffect.OPAClTY.combine(TransitionEffect.translate({x:100}).animation({duration:2000}))
D. TransitionEffect.translate({x:100}).combine(TransitionEffect.OPACiTY.animation({duration:2000}))
27.在方舟字节码的函数调用规范中,前三个参数表示的含义分别是
A.new.Target、this、函数对象本身
B. 函数对象本身、new.Target、this
C. this、函数对象本身、new.Target
D.new.Target、函数对象本身、this
28.下面关于方舟字节码格式PREF_IMM16_V8_V8描述正确的是
A. 16位前缀操作码,16位立即数,2个8位寄存器
B. 16位前缀操作码,16位立即数,8位寄存器
C 8位操作码,8位立即数,2个8位寄存器
D.8位操作码,8位立即数,16位id,8位寄存器
29.下面关于方舟字节码格式IMM16_ID16_IMM8描述正确的是
A.8位操作码,16位立即数,2个8位寄存器
B.16位前缀操作码,16位立即数,8位寄存器
C.8位操作码,16位立即数,16位id,8位立即数
D 8位操作码,16位立即数,16位id,8位寄存器
30.以下关于垂直滚动Grid组件使用cachedcount属性的说明正确的是
A.设置cachedCount为1,则Grid在显示范围下方缓存1行Gridltem
B.设置cachedCount为1,则Grid在显示范围上下各缓存1行Gridtem
C.设置cachedCount为1,则Grid在显示范围下方缓存1个Gridltem
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}`)
})
A 2、3
B. 1、2、3
C. 1、3
D. 1、2
32.ArkTS支持以下哪个函数?
A.Object.getOwnPropertyDescriptor();
B. Object.hasOwnProperty(;
C.Object.getOwnPropertyDescriptors();
D. Object.values();
33.以下哪个装饰器用来表示并发共享对象。
A. @style
B. @Shared
C. @State
D. @Sendable
34.作为一个应用开发者,想搭建运维平台,想在应用内定时读取当前的内存信息,可以通过()接口来实现。
A. hiAppEvent
B. hiDebug
C.hichecker
D. hiLog
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()
A a3
B a4
C a1
D a2
36.依次点击A、B、C、D四个按钮,其中不会触发Ui刷新的是
class Info {
name: string;
constructor(name: string) {
this.name = name;
}
}
@Entry
@Component
struct Index {
@State nameList: Info[] = [new Info("Tom"), new Info("Bob"), new Info("John")]
build() {
Column() {
ForEach(this.nameList, (item: Info) => {
Text(`${item.name}`)
})
Button("A")
.onClick(() => {
this.nameList.push(new Info("Lucy"));
})
Button("B")
.onClick(() => {
this.nameList[0] = new Info("Eric");
})
Button("C")
.onClick(() => {
this.nameList[0].name = "Jim";
})
Button("D")
.onClick(() => {
this.nameList = [new Info("Barry"), new Info("cindy"), new Info("David")];
})
}
}
}
37.开发者小李遇到了一个复杂的问题,该问题仅在特定的代码执行路径上出现,且难以复现。他使用的是C++进行核心算法开发,代码的逻辑密集且对性能要求极高,DevEco studio为C/C++开发者提供的高级调试能力,以下哪个能力可以帮助小李查看代码历史执行路径,回溯到关键的变量状态
A.传统调试模式:仅允许在当前断点暂停代码执行,查看调用堆栈和当前变量信息,但无法追溯历史执行状态
B.代码静态分析:提供静态代码检查工具,通过语法和逻辑分析帮助预防潜在错误,但不涉及运行时问题定位
C.实时代码修改与运行时效果查看:支持在调试过程中修改代码并立即查看修改效果,适用于快速迭代,但不聚焦于问题追溯
D.反向调试能力:允许开发者在调试过程中回退回到之前的代码行或断点,不仅查看过去的堆栈信息,还能重现历史的全局、静态和局部变量状态,帮助深入理解代码历史行为,特鄙视对于复杂逻辑和难以浮现的bug定位至关重要
38.当前您在开发一个ArkTS、Stage模型的Harmony0S工程,关于当前ArkTS工程目录结构,下列选项说法错误的是?
A. AppScope>appjson5:应用的全局配置信息。
B.entry>src>main>module.json5:Stage模型模块配置文件,主要包含HAP的配置信息、应用在具体设备上的配置信息以及应用的全局配置信息。
C.build-profile.json5:应用级编译构建任务脚本,
D. oh-package.json5:描述依赖配置,如:依赖覆盖(overrides)、依赖关系重写(overrideDependencyMap)和参数化配置(parameterFie)等。
39.开发者张工想要高效地管理Harmony0S设备中的文件,包括查看文件列表、进行文件搜索、新建及删除操作,以及在设备与PC间传输文件,而无需使用命令行工具。以下哪个选项最能准确概括张工能通过哪个工具直接在DevEco Studio界面完成上述所有操作
A. DevEco Studio的Terminal面板
B.DevEco Studio的Device File Browser
C.DevEco Studio的Log面板
D.DevEco Studio的Project Explorer
40.在使用DevEco Studio进行混合语言开发时,开发者小李通过Napi引用了Native 接口的文件(例如d.ts文件)。他想要直接从这些接口跳转到其对应的C/C++函数实现处进行代码审查。请从以下选项中选择最合适的操作步骤来帮助小李实现这一目标
A.小李应该打开包含TypeScript接口声明的文件,然后手动在项目中搜索相应的C/C++源文件,逐个检查以找到匹配的函数实现。
B.在声明或引用了Native接口的文件中,比如d.ts文件,小李可以直接选中接口名称,右键点击并在弹出的菜单中选择“Go To>Implementation(s)”(转到>实现)。还可以使用快捷键Ctrl+Alt+B;如果是macOS用户,则使用Command+Option+B,直接跳转到对应的C/C++函数实现位置。
C.为了查看C/C++函数实现,小李必须先切换到DevEco Studio的C/C++开发环境视图,之后在项目的
资源管理器中找到对应的C/C++源文件手动打开,才能查看函数代码
D.小李可以将鼠标光标置于想要查看实现的接口名称上,按下鼠标右键,在出现的上下文菜单中寻找并点击“Find Usages”(查找用法),在结果中筛选出C/C++的实现。
41.当标记了@Reuseable的自定义组件实现了组件复用后,这个组件的复用范围是什么?
A.标记了@Reuseable的自定义组件的父组件范围内
B.整个应用内都可以复用
C.标记了@Reuseable的自定义组件的外层容器节点范围内
D.整个页面都可以复用
42.下面持续集成描述哪项是错误的:
A.持续集成(CI,Continuous Intergation): 指频繁的,一天多次将代码集成到主干。
B.Martin Fowler说过,"持续集成并不能消除Bug,而是让它们非常容易发现和改正。”
C.持续集成就是持续编译,二者异曲同工
D.持续集成在大型项目(有几十个项目组)也能应用,即便是项目组开发进度不统一也没问题
43.ArkUI组件复用的作用机制是减少了什么时间从而降低了丢帧率?
A.组件节点渲染时间
B.组件销毁时间
C.组件节点和对象的创建时间
D.数据挂载时间
哪些是持续部署最佳实践?
A. 灰度发布:先在小部分用户或区域进行部署,观察没问题后再全面推广
B.手工部署:持续部署可以采用手工部署的方式发布软件: 1、有一份非常详尽的文档,该文档描述了执行步骤及每个步骤中易出错的地方; 2、以手工测试来确认该应用程序是否运行正确; 3、在发布时,常常会修正一些在发布过程中发现的问题。
C.监控和回滚机制:实时监控部署后的应用状态,如有问题及时回滚,
D.环境一致性:保持开发、测试、生产等环境的高度一致性。
E.自动化部署流程:从代码提交到部署的整个流程应尽可能自动化。
F.开发完成之后再向类生产环境部署:当软件被第一次部署到类生产环境(比如试运行环境)时,就是大 部分开发工作完成时,至少是开发团队认为“该软件开发完成了”。
G. 手工配置管理 1、直接修改生产环境上的配置来改变系统配置; 2、集群中各节点的行为有所不同; 3、靠人手堂恢复环境。手动记载配置包括操作系统、应用服务器、关系型数据库管理系统、Web服务器或其他基础设施设置。
哪些是持续集成最佳实践?
A. 全面的测试套件:包括单元测试、集成测试、功能测试等,以提高代码质量。
B.自动化构建:确保构建过程是完全自动化的,减少人为错误。
C.构建相同代码的 Pipeline 运行多次,得到结果不同。比如,基于同一代码基线,一条 pipeine 构建了5次,只要最后一次通过即可。
D.频繁提交代码:鼓励开发人员经常提交小的代码更改,以便更快地发现问题。
E. 代码审查:在集成前进行代码审查,及时发现潜在问题。
F.快速反馈机制:让开发人员能迅速得知集成结果和测试状态,
G.通常项目上会有一个专职 0ps,在项目可以发布的时候手动触发部署流程,或者需要传递很多参数,让 Pipeline 运行起来。