赞
踩
A. 函数对象本身,new.Target,this
B. this,函数对象本身,new.Target
C. new.Target,函数对象本身,this
D. new.Target,this,函数对象本身
A. Object.values()
B. Object.getOwnPropertyDescriptor()
C. Object.getOwnPropertyDesdcriptors()
D. Object.hasOwnProperty()
class C {}
let value1: number = null;
let value2: string | null = null;
let value3: string | undefined = null;
let value4: C = null
A. value4
B. value3
C. value1
D. value2
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();
buttonC 包含Jim的按钮
A. { offsetX: 81, offsetY: -89, surfaceWidth: 150, surfaceHeight: 500}
B. {offsetX: 75, offsetY: -100, surfaceWidth: 150, surfaceHeight: 500}
C. { offsetX: 81, offsetY:-89, surfaceWidth: 200, surfaceHeight: 0}
D. {offsetX: -20, offsetY: 50, surfaceWidth: 200, surfaceHeight: 500}
enum Mode {
fullScreen, halfScreen
}
@Entry
@Component
struct Page {
@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}`)
} else {
Text(`${this.title}`)
}
ChangeMode({ mode: this.mode })
}
}
}
@component
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;
})
}
}
}
A.本例子可以运行起来,所以代码没有问题,
B.为了避免@Prop的拷贝,可以优化使用@Link,在该例子中行为和@Prop-样。
C.在ChangeMode里改变mode的值,会触发其父组件Page的Title内容的切换
D.在自定义组件Page的build方法里改变状态变量是非法操作,可能导致未定义的异堂UI行为.
A.TransitionEffect.asymmetric(TransitionEffect.OPACITY.animation({duration:2000}),TransitionEffect.translate({x:100}).animation({duration: 2000}))
B.TransitionEffect.OPAClTY.combine(TransitionEffect.translate({x:100}).animation({duration: 2000)))
C.TransitionEffect.OPACITY.animation({duration: 2000}).combine(TransitionEffect.translate({x:100})
D.TransitionEffect.translate({x:100}).combine(TransitionEffect.OPACITY.animation({duration: 2000}))
………………
D选项
[Example].[Entry].[EntryAbility]receive. []
[Example].[Entry].[EntryAbility]ireceive.[2,"test2"]
[Example].[Entry].[EntryAbility]receive.[2,"test2"]
A:
@Entry
@Component
struct TextExample {
build() {
Column({ space: 8 }) {
Text('textshadow').fontSize(9).fontColor(0xcccccc).margin(15).width('90%')
}
}
}
B:
@Entry
@Component
struct SpanExample {
build() {
Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Start, justifycontent: FlexAlign.SpaceBetween }) {
Text() {
Span('In Line')
Span('Component')
Span('!')
}
}.width('100%').height(250).padding({ left: 35, right: 35, top: 35 })
}
}
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%')
}
}
D:
@Entry
@Component
struct styledStringDemo {
scroll: Scroller = new Scroller();
mutableStyledString: Mutablestyledstring = new Mutablestyledstring("test hello world", [{
start: 0,
length: 5,
styledKey: styledstringKey.FONT,
styledValue: new Textstyle({ fontColor: Color.Pink })
}]);
controller1: TextController = new TextController();
async onPageshow() {
this.controller1.setstyledstring(this.mutablestyledstring)
}
build() {
Column() {
Text(undefined, { controller: this.controller1 })
}.width('100%')
}
}
A无需配置,直接在代码中编写import xxx from'library'
B在library的oh-package,json5文件的dependencies字段中配置feature的依赖
C在feature的oh-package.json5文件的dependencies字段中配置library的依赖
D在feature的build-profile.json5文件的dependencies字段中配置library的依赖
A.使用“Profile”功能,因为这同样能提供对运行时应用的监控与调试能力。
B.使用Debug功能,将应用重新推包运行调试
C. Attach Debugger to Process, 这允许他连接到正在运行的应用进程进行调试。
D. Run without Debugging, 先让应用自由运行, 随后手动附加调试器。
A.张工应该首先使用Ctrl+Shift+F快捷键全局搜索问题,然后手动在搜索结果中找出代码警告和错误的原因及位置。
B.张工通过双击Shift键打开搜索框,输入"problems”打开问题工具面板,双击具体告警条目可直接跳转到问题代码行。接着,将光标置于告警位置,利用弹出的悬浮窗选择合适的修复建议或点击“More actions”以查看更多修复选项。
C.张工只需在代码编辑界面按下F1键,DevEco Studio会自动识别当前光标所在行的错误并直接修复。
D.张工在代码编辑界面看到红色波浪线标记的错误时,直接右键点击错误代码,选择“Delete Line”以移除错误代码行,从而“修复”问题。
A.DevEco Profiler主要是一个自动化修复工具,能自动检测并解决所有HarmonyOS应用的性能问题
B.DevEco Profier依据Top-Down设计理念,通过高度整合的数据展示范式,提供从宏观到微观的性能数据分析,加速开发者定位和解决问题的过程
C.DevEco Profiler采用Bottom-Up设计原则,从底层代码细节开始逐步构建性能模型
D. DevEco Profiler专注于用户界面设计的美化,使开发者操作更为直观
A Allocation Insight详细展示应用运行时的每条语句柄分配记录,便于开发者逐一检查内存使用,但不提供内存泄漏的自动识别功能
B Allocation Insight通过分析应用服务运行时的内存分配及使用情况,辅助定位内存泄漏、内存抖动和溢出问题,支持优化内存使用
C Allocation Insight主要关注于内存碎片整理,减少内存分配的不连续性问题,对内存泄漏和溢出问题的检测不是其主要功能
D Allocation Insight仅提供内存分配总量的概览,帮助开发者宏观了解内存使用趋势,但对于具体泄漏或抖动问题无能为力
A. Ctrl_shift + f
A.本地模拟器和真机的能力没有任何差异,真机上可以支持的能力在模拟器上都可以
B本地模拟器当前不支持查看HiLog以及FaultLog
C本地模拟器上运行的应用无需进行签名,简化了调试过程。
D本地模拟器当前不支持单元测试框架和UI测试框架的运行
A rawfile目录,支持创建多层子目录,子目录名称可以自定义,文件夹内可以自由放置各类资源文件。目录中的资源文件会被编译成二进制文件,并赋予资源文件ID。
B resfile目录,应用安装后,resfile资源会被解压到应用沙箱路径,通过Context属性resourceDir获取到resfile资源目录后,可通过文件路径访问。
C stage模型多工程情况下,共有的资源文件放到AppScope下的resources目录。
D base目录是默认存在的目录,二级子目录element用于存放字符串、颜色、布尔值等基础元素,media、profile存放媒体、动画、布局等资源文件。
A中资源文件不会被编译成二进制文件并赋予资源文件ID
A build-profile.json5:应用级编译构建任务脚本。
B entry>src>main>module.json5:Stage模型模块配置文件,主要包含HAP的配置信息、应用在具体设备上的配置信息以及应用的全局配置信息。
C oh-package.json5:描述依赖配置,如:依赖覆盖(overrides)、依赖关系重写(overrideDependencyMap)和参数化配置(parameterFile)等
D AppScope>app.json5:应用的全局配置信息。
A. hdc install -p ohosapp.hap
B. bm install -p ohosapp.hap
C. bm install -p ohosapp.hap -r
D. bm install -p /data/app/
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 {
return 'test_instance';
}
}
return 'MyAbilitystage';
}
}
依次调用如下方法4次启动UIAbi1ityA,value分别是"test""test”"testA""testA",则当前运行期UIAbility实例有几个?
function testSpecified(context,value){
let want: Want ={
deviceId:"",
bundleName:'com.samples.stagemodelabilitydevelop',
abilityName: 'UIAbilityA',
moduleName:'entry',
parameters:{
instanceKey: value
}
};
context.startAbility(want).then(()=>{
hilog.info(DOMAIN NUMBER, TAG, 'Succeeded in starting UIAbilityA.');
}).catch((err:BusinessError)=>{
hilog.error(DOMAIN_NUMBER, TAG, `Failed to start UIAbilityA. code is ${err.code}`)
})
}
3个实例。(两次testA只启动同一个实例)
A、onTouch
B、onScroll
C、onAreaChange
D、aboutToReuse
A.
{
"app": {
"bundleName": "com.example.myapplication",
"vendor": "example",
"versionCode": 1000000,
"versionName": "1.0.2",
"icon": "$media:app_icon",
"label": "app_name",
"bundleType": "app"
}
}
B.
{
"app": {
"bundleName": "com.example.myapplication",
"vendor": "example",
"versionCode": 1000000,
"versionName": "1.0.2",
"icon": "$media:app_icon",
"label": "$string:app_name"
}}
C.
{
"app": {
"bundleName": "com.example.myapplication",
"vendor": "example",
"versionCode": 1000000,
"versionName": "1.0.2",
"icon": "$media:app_icon",
"label": "$string:app_name",
"bundleType": "app"
}
}
D.
{
"app": {
"bundleName": "com.example.myapplication",
"vendor": "example",
"versionCode": 1000000,
"icon": "$media:app_icon",
"label": "$string:app_name",
"bundleType": "app"
}
}
class C {
value1: number = 0;
value2?: number = null;
value3: number | undefined = undefined;
value4?: number;
}
value1,value3,value4 (?表示undefined,null不允许被赋值为undefined)
A.动态import支持加载HSP模块
B.动态import支持加载远程HAR模块
C.动态import支持加载OHPM模块
D.动态import支持加载本地HAR模块
A.TaskPool支持任务延时执行
B.开发者需要自行管理taskpool的数量及生命周期
C.Worker自行管理生命周期,开发者无需关心任务负载高低
D.TaskPool和Worker的任务执行时长上限都是无限制
A.通过规范强化静态检查和分析,减少运行时的类型检查,从而降低了运行时负载,提升执行性能。
B. ArkTS不支持null-satety特性。
C.通过规范强化静态检查和分析,使得许多错误在编译时可以被检测出来,降低代码运行错误的风险。
D. ArkTS保留了TS大部分的语法特性, 帮助开发者更容易上手ArkTS。
A. 启用hvigor的parallel, 在增量场景下进行并行编译处理
B. 启用hvigor的typeCheck, 在增量场景下进行对hvigorfile. ts进行类型检查
C. 启用hvigor的incremental, 在增量场景下检查任务是否可以跳过
D. 启动hvigor的daemon模式, 在增量场景下复用缓存
@Entry
@Component
struct FormatMe{
@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 string
B arrayBuffer
C map<string,string>
D record<string,string>
(ABCD)
A. 无论选择Instrument Test还是Local Test, DevEco Studio均内置了详尽的测试报告功能, 实时显示测试进度, 且直接在IDE中可查看代码覆盖率报告,无需外部工具。
B. Instrument Test: 测试用例存储于项目的ohosTest目录, 要求在HarmonyOS设备或模拟器上执行, 兼容ArkTS与JS语言编写。
C. Local Test: 测试用例位于test目录, 无需设备或模拟器环境, 直接在本地执行, 专注于ArkTS语言, 推荐适用于API版本11及以上的Hvigor工程, 目前特别限于Stage模型, 并不涵盖C/C++方法。
D.DevEco Studio的测试框架提供测试用例执行能力,包含基础接口以编写和输出测试结果,鼓励用户创建易于维护的自动化测试脚本,并且统计代码覆盖率。
A. Navigation的子页面可以来自不同的Module
B. Navigation只能在entry类型的Module中使用
C. Navigation子页面的根容器可以采用如Column、Row这些容器组件。
D. Navigation的页面显示模式有单页面、分栏和自适应三种显示模式
A.手工配置管理:
1、直接修改生产环境上的配置来改变系统配置
2、集群中各节点的行为有所不同;
3、靠人手工恢复环境。手动记载配置包括操作系统、应用服务器、关系型数据库管理系统、Web服务器或其他基础设施设置。
B:监控和回滚机制:实时监控部署后的应用状态,如有问题及时回滚。
C:开发完成之后再向类生产环境部署:当软件被第一次部署到类生产环境(比如试运行环境)时,就是大部分开发工作完成时,至少是开发团队认为“该软件开发完成了”。
D:手工部署:持续部署可以采用手工部署的方式发布软件:
1、有一份非常详尽的文档,该文档描述了执行步骤及每个步骤中易出错的地方;
2、以手工测试来确认该应用程序是否运行正确;
3、在发布时,常常会修正一些在发布过程中发现的问题。
E:灰度发布:先在小部分用户或区域进行部署,观察没问题后再全面推广
F:环境一致性:保持开发、测试、生产等环境的高度一致性。
G:自动化部署流程:从代码提交到部署的整个流程应尽可能自动化。
A没有在aboutToReuse更新关联的状态变量数据。
B复用的自定义组件中使用if等条件渲染语句导致结构不相同,未使用reuseld标记。
C页面嵌套了过多自定义组件。
D在aboutToReuse回调函数中更新了冗余的状态变量
A
for(let idx = 0;idx < 5 ; idx ++){
console.log(idx)
}
B
if( 1 == 1 ){
console.log('succuess')
}
C
let maxCount = 10;
let isComplete = false;
let pointX = 0;
let pointY = 0;
D
let maxCount = 10;
let isComplete = false;
let pointX,pointY;
pointX = 10;pointY = 10;
A.HAR模块间只有变量动态import时可以进行模块解耦
B.常量动态import也必须配置runtimeOnly选项
C.动态import根据入参是否为常量字符串分为常量动态import和变量动态import两种
D.动态导入import()是个异步接口,调用后将返回一个promise
A.@Style
B.@Shared
C.@State
D.@Sendable
A onWillappear->onAppear->onWillShow->onShow->onWillHide->onHidden->onWillDisappear->onDisappear
toastshowmode.TOP_MOAST
蒙一个 0,6,1,6
A、offsetX为-20 offsetY为50 surfaceWidth为200 surfaceHeight为500
B.设置cachedCount为1,则Grid在显示范围上下各缓存1个Gridltem
C.利用"Realtime Monitor"初步识别性能瓶颈,创建深度分析任务定位根因,根据分析结果优化代码,再用"Realtime Monitor"验证优化效果
B进入“Run >Edit Configurations"菜单,在"Deploy Multi Hap"选项卡下,勾选"Deploy Multi HapPackages”,随后在列表中选择需要部署的模块。
A. Compatible SDK是兼容的最低API Version。
B. 为了快速清理未使用的import,可以选中项目根目录,按下快捷键Ctrl+Alt+O(在macOS上为Control+Option+0) ,让DevEco Studio自动识别并移除所有未使用的import,并自动按照预设规则排序和合并import。
A. Allocation Insight通过分析应用服务运行时的内存分配及使用情况,辅助定位内存泄漏、内存抖动和溢出问题,支持优化内存使用
A. Time场景分析任务展示热点区域内的CPU和进程级调用栈耗时情况,支持代码跳转,助力开发者快速定位并优化耗时较长的代码段
B.@Preview @Component struct TitleSample { @StorageProp('title'”) title: string = 'PlaceHolder'; build( ){Text(this.title)}}
D HAR不支持使用page页面
A. HAP包自身模块>dayjs模块>lottie模块>AppScope
enum Mode {
fullScreen, halfScreen
}
@Entry
@Component
struct Page {
@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}`)
} else {
Text(`${this.title}`)
}
ChangeMode({ mode: this.mode })
}
}
}
@component
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;
})
}
}
}
A.本例子可以运行起来,所以代码没有问题,
B.为了避免@Prop的拷贝,可以优化使用@Link,在该例子中行为和@Prop-样。
C.在ChangeMode里改变mode的值,会触发其父组件Page的Title内容的切换
D.在自定义组件Page的build方法里改变状态变量是非法操作,可能导致未定义的异堂UI行为.
C.UIAbility.caller应用在后台,申请了长时任务,有START_INVISIBLE_ABILITY权限;
A.onWillappear->onAppear->onWillShow->onShow->onWillHide->onHidden->onWillDisappear->onDisappear
B.onWillappear->onWillShow->onShow->onAppear->onWillHide->onHidden->onWillDisappear->onDisappear
C.onWillappear->onAppear->onWillShow->onShow->onWillHide->onWillDisappear->onHidden->onDisappear
D.onWillappear->onAppear->onWillShow->onShow->onWillDisappear->onWillHide->onHidden->onDisappear
B onCreate->onWindowStageCreate->onForeground
D.name
B hiDebug
A.@Provide+@Consume
B.@State+@Link
C.LocalStorage
D.AppStorage
A.标记了@Reuseable的自定义组件的父组件范围内
B.整个页面都可以复用
C.标记了@Reuseable的自定义组件的外层容器节点范围内
D.整个应用内都可以复用
A组件节点渲染时间
B.持续集成就是持续编译,二者异曲同工
A. 仅存在moduleA的image.png
C.元服务和应用可以共用一个代码工程,采用多目标产物构建方式,构建出应用和元服务两个产物,用于上架。
A 将某些特性做成按需加载模块,若这3个ohpm仅在按需加载模块里面使用,则将其打包在按需加载模块中。
B 使用startBackgroundRunning申请任务,使用stopBackgroundRunning取消任务
hiAppEvent.addWatcher({
name: "watcher",
appEventFilters: [
{
domain: hiAppEvent.domain.OS,
names: [hiAppEvent.event.APP_CRASH]
}
],
onReceive: (domain: string, appEventGroups: Array<hiAppEvent.AppEventGroup>) => {
}
})
A. Object.isPrototypeOf();
B. Object.getOwnPropertySymbols();
C. Object.keys();
D.Object.isExtensible();
A、张工需打开项目搜索功能,输入旧类名找到所有匹配项,逐一进行替换,完成更名操作。
B、张工选中需要更名的类名,使用快捷键Shift+F6或右键菜单Refactor ->Rename,在弹出框中输入新名称并选择替换范围后,点击“Refactor”完成更名操作,确保所有相关引用自动更新。
C、张工只需简单选中需要更名的类名,按下Delete键删除后直接输入新名称,DevEco Studio会自动识别并更新所有引用。
D、张工在代码编辑器中右键点击该类名,选择“Find Usage”,手动浏览所有引用位置并逐一修改为新名称。
A 在模块级别build-rofile.json5定义多个target,在每个target的config/deviceType中定义不同的设备类型
B 在工程级别build-profile.json5定义多个product,在每个product的config/distributionFilter中定义不同的设备类型
C 在模块级别build-profile,json5定义多个target,在每个target的config/distributionFilter中定义不同的设备类型
D 在工程级别build-profile.json5定义多个product,在每个product的config/deviceType中定义不同的设备类型
module.json5配置文件:
{
"module":
{
"name": "entry",
"abilities":[
{
"name": "EntryAbility",
"srcEntry": "./ets/entryability/EntryAbility.ets",
"skills":[
{
"entities":["entity.system.home"],
"actions":["ohos.want.action.home"]
}
]
,
"metadata":[
{
"name":
"ohos.entry.shortcuts",
"resource": "$profile:shortcuts_config"
}
]
}
]
}
}
在/resources/base/profile/目录下配置shortcuts_config.json配置文件:
{
"shortcuts": [
{
"shortcutId": "id_test1",
"label": "shortcutLabel",
"icon": "$media:shortcutIcon",
"wants": [
{
"bundleName": "com.ohos.hello",
"moduleName": "entry",
"abilityName": "EntryAbility"
}
]
}
]
}
2处错误:skills字段被错误地放置在了abilities数组的第一个元素的内部,它应该位于abilities数组外部,与abilities同级。
label 要@开头
A aa start -b com.example.test -a EntryAbility --pi key1 1 --pi key2 2 --ps key3 testString --psn key4
B aa start -b com.example.test -a EntryAbility --pi key1 1 key2 2 --ps key3 testString --psn key4
C aa start -b com.example.test -a EntryAbility --pi key1 1 --pi key2 2 --ps key3 testString --ps key4
D aa start -b com.example.test -a EntryAbility --pi key1 1 --pi key2 2 --ps key3 testString --psn key4
A、hiDebug
B、hiTraceMeter
C、hiAppEvent
D、hiLog
AForEach和LazyForEach会根据定义的键值生成规则为数据源的每个数组项生成唯一键值,并创建相应的组件。
B长列表滚动场景,优先使用ForEach。
C当在滚动容器中使用了LazyForEach,框架会根据滚动容器可视区域按需创建组件,当组件滑出可视区域外时,框架会进行组件销毁回收以降低内存占用。
DLazyForEach需要配合cachedCount和组件复用一起使用,以达到性能的最优表现。
A.持续交付可以随时随地部署到生产环境
B.持续交付(CD,Continuous Delivery):指的是,频繁的将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。它强调的是,不管怎么更新,软件是随时随地可以交付的。
C.在持续交付实践中,要考虑处理故障回滚和紧急修复,以确保系统在出现问题时能够快速恢复和修复。
D.持续部署是将代码库中的任何更改都应该自动且快速地投入生产环境。持续部署等同于持续交付。
A随着业务的发展,应用功能会越来越多,某些功能可以做成动态加载,动态加载的模块采用HAR工程来构建,方便复用和共享。
B对于初始版本的应用,功能比较简单,可以考虑采用单HAP加上多个HAR工程构建代码工程,
C元服务和应用可以共用一个代码工程,采用多目标产物构建方式,构建出应用和元服务两个产物,用于上架。
D一些应用的扩展能力,比如备份、服务卡片,可以采用ExtensionAbility做成单独的feature HAP包,独立分发。
A安全法律法规等不可控因素会导致系统非兼容性变更,开发者需要积极适配
B系统能力都会保持绝对的兼容性,不能因为任何非兼容性的修改而导致开发者成本上升
C已发布的系统能力有可能会发生非兼容性变更,比如新增特性或修改问题导致的行为不兼容,这种情况下应用需要关注changelog并进行适配。
D应用不需要关注系统的兼容性变化,那都是系统开发人员需要关注的事情
A可以采用Navigation作为页面导航根容器,将其放在entry中,其他Module的页面作为Navigation的子页面。
B采用RouterModule作为中介者并用动态import解耦各个业务模块。
C在RouterModule中采用路由表方式解耦各个业务模块。
D采用静态import方式引入对应跳转的页面。
A使用startBackgroundRunning申请任务,使用stopBackgroundRunning取消任务
B使用publishReminder发布一个提醒类通知,使用canceIReminder取消一个指定的提醒类通知
C使用startWork申请任务,使用stopWork取消任务,使用getWorkStatus获取任务状态
D使用requestSuspendDelay申请任务,使用getRemainingDelayTime获取任务剩余时间
import promptAction from '@ohos.promptAction';
@Entry
@Component
struct HitTestBehaviorExample {
build() {
// outer stack
Stack() {
Button('outer button')
.onClick((event) => {
promptAction.showToast({
message: 'click事件触发------++++2'
});
})
// inner stack
Stack() {
Button('inner button')
.onTouch((event) => {
promptAction.showToast({ message: 'click事件触发------1' });
})
}
}
}
}
A.HitTestMode.Default
B.HitTestMode.Block
C.HitTestMode.Transparent
D.HitTestMode.None
####
A、开发者需手动将Release构建生成的so文件与源代码进行映射,配合第三方工具进行堆栈信息还原,虽然过程繁琐,但最终能定位到问题代码位置
B、DevEco Studio提供的Release应用堆栈解析功能,要求开发者在遇到问题时,需上传构建产物中的特定文件B(如so、source map、nameCache等)到指定工具或界面,借助这些文件辅助解析堆栈信息,实现从Release堆栈到源码的映射,便于快速定位问题
C、因为Release应用经过优化和去除Debug信息,直接从堆栈跟踪到源代码行号是不可能的,开发者只能依靠日志信息手工推测问题所在
D、DevEco Studio通过集成的Release应用堆栈解析功能,自动利用构建时产生的so文件、source map文件nameCache文件等,无需额外操作即可直接在Release应用中提供详细的源码级堆栈追踪信息
A.DevEco Studio的Device File Browser
B.DevEco Studio的Terminal面板
C.DevEco Studio的Project Explorer
D.DevEco Studio的Log面板
A小李可以将鼠标光标置于想要查看实现的接口名称上,按下鼠标右键,在出现的上下文菜单中寻找并点击“Find Usages”(查找用法),在结果中筛选出C/C++的实现。
B为了查看C/C++函数实现,小李必须先切换到DevEco Studio的C/C++开发环境视图,之后在项目的资源管理B.器中找到对应的C/C++源文件手动打开,才能查看函数代码
C小李应该打开包含TypeScript接口声明的文件,然后手动在项目中搜索相应的C/C++源文件,逐个检查以找到匹配的函数实现。
D在声明或引用了Native接口的文件中,比如d.ts文件,小李可以直接选中接口名称,右键点击并在弹出的菜单中选择“Go To>lmplementation(s)”(转到>实现)。还可以使用快捷键Ctrl+Alt+B;如果是macOS用户,则使用Command+Option+B,直接跳转到对应的C/C++数实现位置。
A build-profile.json5:应用级编译构建任务脚本。
B entry>src>main>module.json5:Stage模型模块配置文件,主要包含HAP的配置信息、应用在具体设备上的配置信息以及应用的全局配置信息。
C oh-package.json5:描述依赖配置,如:依赖覆盖(overrides)、依赖关系重写(overrideDependencyMap)和参数化配置(parameterFile)等
D AppScope>app.json5:应用的全局配置信息。
A进入“Run> Edit Configurations"菜单,在“Deploy Multi Hap”选项卡下,勾选“Deploy Multi HapPackages”,随后在列表中选择需要部署的模块。
B直接点击运行按钮,DevEco Studio会弹出对话框询问需要部署哪些模块,从中选择需要的模块后开始调试。
C在项目结构界面手动选择每个模块,单独编译并逐一将生成的HAP包通过HDC命令推送到设备上。
D无需特殊配置,DevEco Studio会自动检测到项目中的所有模块依赖,并在每次调试运行时自动部署所有相关HAP包。
A. hdc install -p ohosapp.hap
B. bm install -p ohosapp.hap
C. bm install -p ohosapp.hap -r
D. bm install -p /data/app/
A. startAbilityForResult
B. startAbilityByType
C. startAbilityByCall
D. startAbility
A.name
B.eventType
C.domain
D.params
A.应用工程如果包含多个Module,在应用上架时,会将多个.hap文件打包成一个.app文件。
B.应用工程编出的app文件中,只能包含一个hap文件。
C.HAP是应用安装和运行的基本单位,在DevEco Studio工程目录中,一个HAP对应一个Module。应用打包时,所有的Module都只能生成.hap文件。
D.DevEco Studio会在编译构建时,不需要对HAP进行一致性校验。
A.将该特性做成hap包,通过Ability组件暴露出来给主app使用。
B.将该特性做成H5模块,通过web组件加载远程资源使用,
C.将该特性做成动态加载的har包,暴露接口给主模块使用。
D.将该特性做成按需加载的hsp包,暴露接口给主模块使用。
A.创建一个WebSocket连接,返回一个WebSocket对象
B.导入需要的webSocket模块
C.根据URL地址,发起WebSocket连接
D.(可选)订阅WebSocket的打开、消息接收、关闭、Error事件
E.使用完WebSocket连接之后,主动断开连接
F.调用Session.start方法开启metadata数据输出
可以直接依据父类的模板生成子类中需要重写的方法代码,而无需手动编写完整方法体,在DevEcostudio中,
如何正确使用Override Methods功能来快速生成子类需要重写的方法代码?(A)
A.将光标定位到子类的定义处,按下Ctrl+0(或右键单击选择Generate..>Override Methods),在弹出的对话框中选择要重写的方法,点击OK完成生成。
B.在项目结构视图中找到目标子类,双击打开后直接在代码编辑区输入重写方法的签名,DevEco Studio将自动完成剩余代码。
C.将光标放置于任何代码行,按下Ctr1+B,然后在弹出菜单中选择Override Methods,之后勾选需要重写的方法并确认。
D.通过菜单栏File>Settings,配置Override Methods快捷方式,之后在代码中仅需选中父类方法名,即可自动在子类中生成重写代码
如何在DevEco studio中设置不同的构建配置,达成这个目的(A)
A.在工程级别build-profile.json5定义两个product,将两个product的bundleType分别设置成app和atomicService
B.在模块级别build-profile.json5定义两个target,将两个target的bundleType分别设置成app和atomicService
C.修改工程级别的AppScope/app.json5中的bundleType值为atomicService
D.修改工程级别的AppScope/app.json5中的bundleType值为app
A.选中组件树中的组件,则对应的代码块和UI界面也会高亮显示
B.双向预览不支持通过组件的属性面板实时修改属性或样式
C.选中布局文件中的代码块,则在UI界面会高亮显示,组件树上的组件节点也会呈现被选中的状态。
D.选中预览器U界面中的组件,则组件树上对应的组件将被选中,同时代码编辑器中的布局文件中对应的代码块高亮显示。
A.门禁级检查的范国和版本级检查的范围保持一致、尽可能多的在MR门禁阶段就拦截防护住问题,保障问题可以及时清理掉。
B.代码门禁则是在代码含并之前就验证代码来保护生干分支的究整性。通过这种方式,可以保护主分支代码避免因合码导致的构建中断,以确保 master分支代码始终是可部署的,并且不会因明显的错误而影响到你正在并行开发的同事工作。
C.代码门禁是一项代码质量保随措施。目的是要求开发人员提交的代码必须满足一些要求才能合入代码仓库。门禁必须强制要求包括编译通过、单元测试覆盖率达标、代码静志检查无告警、全量功能测试用例、DFX专项测试都通过。
D.标准 CI构建是在代码会并后检壹已提交代码的功能完整性,这种方法会导致代码合井到master后编译失败导致没有可用版本部署。通过提高滚动构建的频度就可以代替代码门禁,保代码主千及时发现并解决问题。
1、A(entry)模块依赖于B(har)、C(har)、D(shared)
2、D(shared)模块依赖于C(har)
那么在最终编译结果.app文件中,存在的编译产物是哪种? (第一种)
第一种:A.hap + D.hsp
第二种:A.hap+ D.hsp +C.har
第三种:A.hap +B.har +C.har + D.hsp
第四种:A.hap + B.har + D.hsp
A.使用模拟器替代真机进行调试,因为Hot Reload仅在模拟器上支持代码改动的即时生效
B.继续运行应用,手动重启应用后检查布局是否符合预期
C.在不关闭应用的情况下,直接修改代码并保存,借助Hot Reload功能在真机上实时查看布局调整的效果
D.立即停止应用,修改代码后重新编译并部署到真机上
1.启动UlAbility1,然后back键返回销毁UIAbility1;
2.启动UlAbility2,然后back键返回销毁UIAbility2;
3.启动UlAbility2,然后back键返回销毁UIAbility2;
进入多任务列表,能看看到该应用的几个任务视图: (C 3个)
A.DT(开发者测试)就是UT,可看护的范围包括边界值问题、空指针或赋值错误内部业务逻辑问题等等。
B.自动化测试因提高效率,减少重复工作的特性而被广泛采用:自动化测可以替代手动测试在处理复杂、难以预测的用户交互或特殊边界条件。
C.XTS子系统是认证测试套件的集合,当前包括acts(application compatibilitytest suite)应用兼容性测试套件,后续会拓展dcts(device compatibility testsuite)设备兼容性测试套件等。
D.Fuzz测试就是通过构造不规则的输入,从而触发程序的某种bug;Fuzz测试属于白盒测试。Fuzz测试也叫做模糊测试,通过输入非法字段,并观察软件是否异常来实现。一方面可以通过向软件输入非法字段,另一方面也可以通过向网络服务发送异常报文。
A.DT(开发者测试)就是UT,可看护的范围包括边界值问题、空指针或赋值错误内部业务逻辑问题等等。
B.自动化测试因提高效率,减少重复工作的特性而被广泛采用:自自动化测可以替代手动测试在处理复杂、难以预测的用户交互或特殊边界条件。
C.XTS子系统是认证测试套件的集合,当前包括acts(application compatibilitytest suite)应用兼容性测试套件,后续会拓展dcts(device compatibility testsuite)设备兼容性测试套件等。
D.Fuzz测试就是通过构造不规则的输入,从而触发程序的某种bug;Fuzz测试属于白盒测试。Fuzz测试也叫做模糊测试,通过输入非法字段,并观察软件是否异常来实现。一方面可以通过向软件输入非法字段,另一方面也可以通过向网络服务发送异常报文。
A.动态import不支持导入SDK的API,如@ohos.*
B.动态import支持懒加载,所以不能用于提升页面的加载速度。
C.动态import支持加载HSP模块、HAR模块、OHPM包、Native库
D.动态import和静态import相比,灵活性更好,性能更好。
@Componentstruct MyComponent{
@state compwidth:number=100;
@state compHeight:number=100;
@State compRadius:number=32;
build(){
Column(){}
.width(this.compWidth)//1
.height(this.compHeight)//2
.animation({curve:Curve.Ease,duration:280})
.borderRadius(this.compRadius)//3
.onclick(()=>{this.compwidth += 10;
this.compHeight +=10;
this.compRadius += 4;
})
}
}
A.通过$r访问HSP中的资源。Image($r('app.media.example')) .id('example') .borderRadius('48px')
B.使用相对路径的方式,访问HSP中的资源。Image("../../resources/base/media/example.png") .id('example') .borderRadius('48px')
C.挎包访问HSP内资源时,推荐实现一个资源管理类,以封装对外导出的资源。
将需要对外提供的资源封装为一个资源管理类:
//library/src/main/ets/ResManager.ets
export class ResManager{
static getPic()\:Resource{
return \$r('app.media.pic');
}
static getDesc()\:Resource{
return \$r('app.string.shared\_desc');
}
}
除了ops,pipeline所有
关于Task003的描述是错的,其他三项对的
关于feature、Static Library、Shared Library3个的描述是正确的
TaskPool支持任务优先级
Worker时长上线无限制
A、createPurchase请求返回1001860051-由于已经拥有该商品,购买失败时
B、createPurchase请求返回1001860001-内部错误时
C、应用启动时
D、finishPurchase请求返回1001860052-由于未拥有该商品,发货失败时
代码段A:
Web(...).enableNativeEmbedMode(true)
<object id="view" type="native/contents" width="100%" height="100%"style="background-color:red"/>
代码段B:
Web(...).enableNativeEmbedMode(true).registerNativeEmbedRule("native",test")
<object id="view" type="native/contents" width="100%" height="100%"style="background-color:red"/>
代码段C:
Web(...).enableNativeEmbedMode(true).registerNativeEmbedRule("object",test")
<object id="view" type="test/contents" width="100%" height="100%"style="background-color:red"/>
代码段D:
Web(...).enableNativeEmbedMode(true)
<embed id="view" type="native/contents" width="100%" height="100%"style="background-color:red"/>
代码块A:
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;}
代码块B:
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;}
代码块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);// 业务代码
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;}
A、修改应用混淆配置,新配置需要重新全量编译应用才能生效
B、可以在HAR模块工程的build-profile.json5中的obfuscation.consumerFiles字段中配置导出的混淆配置,该配置仅在编译依赖该HAR的模块时生效。
C、在工程build-profile.json5中的obfuscation.ruleOptions.files字段中配置该工程的混淆配置,该配置仅在编译该工程时生效。
D、支持顶层作用域名称、属性名称、文件名称等多种混淆功能
function foo(value1: number,value2: number){
return value1 + value2;
}
A foo();
B foo(1,2);
C foo(1,2,3);
D foo(1,2,3,4);
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:
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;}
代码块B:
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;}
代码块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);// 业务代码
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;}
import{ lang }from '@kit.ArkTs';
class c{}
interface I extends lang.ISendable {}
A. interface l
B. number
C. string
D. class C
A、在混淆规则配置文件consumer-rules.txt中进行混淆规则的配置
B、release模式下将buildOption/arkOptions/ruleOptions/enable设置为false
C、在混淆规则配置文件obfuscation-rules.txt中进行混淆规则的配置
D、release模式下将buildOption/arkOptions/ruleOptions/enable设置为true
A中consumer-rules.txt文件主要用于库(library)项目,指定库在被其他项目依赖时应用的混淆规则。
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","host":"www.test.com","pathstartwith" :"query/books","type”:"text/*”}
]}]
代码块B:
"skills":[ {
"uris":[ {
"scheme": "https","type” :"text/*"}]}]
代码块C:
"skills":[ {
"uris":[ {
"scheme":"https","host":"www .test.com","pathstartwith" :"query/books","type" :"text/plain"
}]}]
代码块D:
"skills":[ {
"uris":[ {
"scheme":"https","host":"www.test.com","type" :"text/plain"
}]}]
new Function('a' , 'b', 'return a + b')
Object.entries()
eval()
with()
A.在并发API的形式上,目前主要有两种:Worker和TaskPool
B.单次I/O任务的开发场票中,必须使用TaskPool进行开发。
C.默认情况下,Sendable数据在ArKTS并发实例间(包括主线程、TaskPool&Worker工作线程)传递的行为是拷贝传选。
D.CPU密集型任务场豪中,当在务不需要长时间(3分钟)占据后台线程,而是一个个独立的任务时,推荐使用TaskPool进行开发。
const arr =[1,2,3];
if(flag){//..}else {//..}
function fight(): void {console.log("Swooosh!");}
if(isJedi){fight();}
class Point {
public x: number;public y: number;
constructor(x:number,y:number){
this.x = x
this.y = y
}
代码A:let p=new Point(1.0,1.0);
代码B:delete p.x;
代码C:p.z=2.0;
代码D:p.x='He11o!';
B针对工程源码的混淆可以降低工程被破解攻击的风险,缩短函数名、类名和属性名,减小应用的大小。
D代码混淆已经被集成了到SDK中,可以在DevEco Studio中方便地使用。
代码段B:
function fn(x:string): string {
return x;
}
type funcType =(ns:string|number)=> 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;
A.当被导入的模块,在加载时并不存在,需要异步获取。
B.当静态导入的模块很明显的降低了代码的加载速度且被使用的可能性很低,或者并不需要马上使用它。
C.当静态导入的模块很明显的占用了大量的系统内存且被使用的可能性很低
D.当被导入的模块说明符,需要动态构建。
uint16_t、二进制产物
function foo1(value1?: number, value2: number){
if(value1 == undefined){
return value2;}
return value1 + value2;}
function foo4( ...array: number[],value: number){
return value;
}
function foo2(value1: number, value2?: number){
if(value2 == undefined){
return value1;}
return value1 + value2;}
function foo3(value: number, ...array: number[]){return value}
短的两个1、4
import { export1 } from "ets file name"
import { export1 as alias1 } from "ets file name"
import * as name from "ets file name"
import defaultExport from "ets file name"
A .gesture(
TapGesture({ count: 2 })
.onAction((event: GestureEvent) => {
if (event) {
this.value = JSON.stringify(event.fingerList[0]) }
}) )
C .parallelGesture(…………)
一次上架、按需加载两个选项不属于最佳实践
关于Task 01-04、005的2个描述
####
A.CPU高负载事件
B.卡死事件
C.启动耗时事件
D.崩溃事件
A napi_env:用于表示Node-API执行时的上下文
B napi_threadsafe_function_cal_mode:该枚举类型定义了两个常量,用于指定在何时释放线程安全函数的回调函数
C napi_status:是一个枚举数据类型,表示Node-API接口返回的状态信息
D napi_threadsafe_function_release_mode:该枚举类型定义了两个常量,用于指定线程安全函数的调用模式
A.List组件列表滚动时每帧触发
B.List组件首次加载完成时触发
C.List组件显示区域内第一个子组件或最后一个子组件或中间位置子组件索引值变化时触发
D.List组件滚动停止时触发
A.交互式组件选择:用户既可以在组件树视图中选择组件,使U界面上对应组件高亮显示并展示其属性详情:也可以直接在U1布局显示界面上点击选择组件
B.UI快照管理:支持导出应用的UI界面为快照图片,并允许这些快照被导入回ArkUl lnspector中,便于离线分析或分享讨论UI设计方案
C.Ul效果查看:开发者能够查看连接真机上运行的应用程序的U显示效果,页面组件树结构,以及选中组件的属性信息
D.性能监控:提供详细的UI渲染性能指标,帮助开发者识别布局瓶颈和渲染效率问题,从而优化应用性能
导出ts类和方法
导出ArkUI组件
导出native方法
A.hap
B.hsp
C.app
D.har
function foo(value:number){return value;}
foo('');foo(0);foo(undefined);foo(null);
A.方舟字节码文件中不包含字节码文件内容的adler32校验和
B. 方舟字节码文件中数据类型uint32_t表示32-bit无符号整数,采用大端字节序
C.方舟字节码文件中数据类型uint16_t表示16-bit无符号整数,采用小端字节序
D.方舟字节码文件是ArkTS/TS/JS编译后的二进制产物
A. unknown
B. any
C. union type
D. tuple type
A.ArKTS提供了声明式UI范式、状态管理支持等相应的能力,让开发者可以以更简洁、更自然的方式开发应用
B.针对JavaScript(简称JS)/TS并发能力支持有限的问题,ArKTS对并发编程API和能力进行了增强。
C. TS/JS代码支持import ArkTS代码。
D. ArKTS在保持TypeScript(简称TS)基本语法风格的基础上,进一步通过规范强化静态检查和分析,使得在程序运行之前的开发期能检测更多错误,提升代码健壮性,并实现更好的运行性能。
-enable-export-obfuscation:开启直接导入或导出的类或对象的名称和属性名混淆
-disable-obfuscation:关闭所有混淆
-enable-toplevel-obfuscation:开启属性混淆
-enable-property-obfuscation:开启顶层作用域名称混淆
value1 value4的声明
A. -print-namecache filepath: 将名称缓存保存到指定的文件路径。
B. -keep-property-name [,identifiers,..]:指定要保留的顶层作用域的名称
C. -keep-file-name [,identifiers...]:指定要保留的文件/文件夹的名称
D. -keep-global-name [,identifiers....]:指定想保留的属性名
AC count2 和 parallelGesture
A. gesture
B.priorityGesture
C.parallelGesture
D. GesureGroup
A count=0
C value=100
进行应用或服务的快速运行与细致调试。请根据本地模拟器的实际应用场景与系统要求,选出所有正确的描述选项(BCD)
A.开发者需要注意的是,DevEco Studio的本地模拟器可以在虚拟机内部进一步运行,以节省硬件资源。
B.为了保证流畅的运行和调试体验,本地模拟器推荐macOS系统版本至少为12.5以上。
C.DevEco Studio的本地模拟器允许开发者在个人电脑上模拟HarmonyOS环境,便于应用或服务的运行与调试。
D.mac计算机配置方面,为了确保本地模拟器的稳定运行,推荐至少配备8GB RAM。
ABCD 题目中域名不匹配
假如域名是出题人写错的话,BC两项http的配置无法拉起,对应题目https
A.被@Component装饰的组件最多可以访问一个LocalStorage实例和AppStorage,未被@Entry装饰的组件不可被独立分配LocalStorage实例,只能接受父组件的LocalStorage实例。
B.LocalStorage中的所有属性都是不可变的。
C.组件树的根节点,即被@Entry装饰的@Component,可以被分配一个LocalStorage实例,此组件的所有子组件实例将自动获得对该LocalStorage实例的访问权限。
D.应用程序可以创建多个LocalStorage实例,LocalStorage实例可以在页面内共享,也可以通过GetShared接口,获取在UIAbility里创建的GetShared,实现跨页面、UAbility内共享。
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: w.postMessage(a);,Worker 共享传输实现方式
B: taskpool.execute(task).then(()=>{});,TaskPool 共享传输实现方式
C: w.postMessageWithSharedSendable(a);,Worker 共享传输实现方式
D: task,setCloneList([a]); taskpool.execute(task).then(()=>{);,TaskPool 共享传输实现方式
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。