鸿蒙开发基础认证 课后习题汇总

目录

【习题】运行Hello World工程 

判断题

单选题

多选题

该小节补充知识:

【习题】ArkTS基础知识 

判断题

单选题

多选题

该小节补充知识:

基本概念

状态管理

页面级变量的状态管理

应用级变量的状态管理:


【习题】运行Hello World工程 

及格分85/ 满分100

判断题

1. DevEco Studio是开发HarmonyOS应用的一站式集成开发环境。

正确(True)  错误(False)

回答正确

2. main_pages.json存放页面page路径配置信息。

正确(True)  错误(False)

回答正确

单选题

1. 在stage模型中,下列配置文件属于AppScope文件夹的是?

A. main_pages.json  (存储在:XX/entry/src/main/resources/base/profile/main_pages.json)

B. module.json5  (是模块级的配置文件,存储在XX/entry/src/main/module.json5)

C. app.json5

D. package.json

回答正确

多选题

1. 如何在DevEco Studio中创建新项目?

A. 在计算机上创建一个新文件,并将其命名为“new harmonyOS项目”

B. 如果已打开项目,从DevEco Studio菜单选择'file>new>Create Project'

C. 如果第一次打开DevEco Studio,在欢迎页点击“Create new Project”

回答正确

2. module.json5配置文件中,包含了以下哪些信息?

A. ability的相关配置信息

B. 模块名

C. 应用的版本号

D. 模块类型

回答正确

该小节补充知识:

module.json5文件格式大致如下。(应用的版本号信息在app.json5文件当中

{"module": {"name": "entry","type": "entry","description": "$string:module_desc","mainElement": "EntryAbility","deviceTypes": ["phone"],"deliveryWithInstall": true,"installationFree": false,"pages": "$profile:main_pages","abilities": [{"name": "EntryAbility","srcEntry": "./ets/entryability/EntryAbility.ts","description": "$string:EntryAbility_desc","icon": "$media:icon","label": "$string:EntryAbility_label","startWindowIcon": "$media:icon","startWindowBackground": "$color:start_window_background","exported": true,"skills": [{"entities": ["entity.system.home"],"actions": ["action.system.home"]}]}],"requestPermissions": [{"name": "ohos.permission.INTERNET",}]}
}

app.json5

{"app": {"bundleName": "com.example.simplevideo","vendor": "example","versionCode": 1000000,"versionName": "1.0.0","icon": "$media:app_icon","label": "$string:app_name"}
}

【习题】ArkTS基础知识 

及格分85/ 满分100

判断题

1. 循环渲染ForEach可以从数据源中迭代获取数据,并为每个数组项创建相应的组件。

正确(True)  错误(False)

回答正确

2.  @Link变量不能在组件内部进行初始化。

正确(True)  错误(False)

回答正确

单选题

1. 用哪一种装饰器修饰的struct表示该结构体具有组件化能力?

A. @Component

B. @Entry

C. @Builder

D. @Preview

回答正确

2. 用哪一种装饰器修饰的自定义组件可作为页面入口组件?

A. @Component

B. @Entry

C. @Builder (ArkUI提供的一种更轻量的UI元素复用机制@Builder,@Builder所装饰的函数遵循build()函数语法规则,开发者可以将重复使用的UI元素抽象成一个方法,在build方法里调用。

D. @Preview

回答正确

多选题

1. 下面哪些函数是自定义组件的生命周期函数?(ABCDE)

A. aboutToAppear

B. aboutToDisappear

C. onPageShow

D. onPageHide

E. onBackPress

回答正确

2. 下面哪些装饰器可以用于管理自定义组件中变量的状态?(CD)

A. @Component

B. @Entry

C. @State 修饰的状态数据被修改时会触发组件的build方法进行UI界面更新。装饰内容为基本数据类型,类,数组

D. @Link 父子组件之间的双向数据绑定,父组件的内部状态数据作为数据源,任何一方所做的修改都会反映给另一方。装饰内容为基本数据类型

回答正确

该小节补充知识:

详情参考官网状态管理

基本概念
  • struct:自定义组件可以基于struct实现,不能有继承关系,对于struct的实例化,可以省略new。

  • 装饰器:装饰器给被装饰的对象赋予某一种能力,其不仅可以装饰类或结构体,还可以装饰类的属性。多个装饰器可以叠加到目标元素上,定义在同一行中或者分开多行,推荐分开多行定义。

@Entry
@Component
struct MyComponent {
}
  • build函数:自定义组件必须定义build函数,并且禁止自定义构造函数。build函数满足Builder构造器接口定义,用于定义组件的声明式UI描述。

interface Builder {
build: () => void
}
  • @Component:装饰struct,结构体在装饰后具有基于组件的能力,需要实现build方法来创建UI。

  • @Entry: 装饰struct,组件被装饰后作为页面的入口,页面加载时将被渲染显示。

  • @Preview:装饰struct, 用@Preview装饰的自定义组件可以在DevEco Studio的预览器上进行实时预览,加载页面时,将创建并显示@Preview装饰的自定义组件。

    TIPS:在单个源文件中,最多可以使用10个@Preview装饰自定义组件,更多说明请参考查看ArkTS组件预览效果

  • 链式调用:以 "." 链式调用的方式配置UI组件的属性方法、事件方法等。

状态管理

鸿蒙应用中的状态管理分成页面级别的状态管理应用级别的状态管理

页面级变量的状态管理

装饰器

装饰内容

说明

@State

基本数据类型,类,数组

修饰的状态数据被修改时会触发组件的build方法进行UI界面更新。

@Prop

基本数据类型

修改后的状态数据用于在父组件和子组件之间建立单向数据依赖关系。修改父组件关联数据时,更新当前组件的UI。

@Link

基本数据类型,类,数组

父子组件之间的双向数据绑定,父组件的内部状态数据作为数据源,任何一方所做的修改都会反映给另一方。

@Observed

@Observed应用于类,表示该类中的数据变更被UI页面管理。

@ObjectLink

被@Observed所装饰类的对象

装饰的状态数据被修改时,在父组件或者其他兄弟组件内与它关联的状态数据所在的组件都会更新UI。

@Consume

基本数据类型,类,数组

@Consume装饰的变量在感知到@Provide装饰的变量更新后,会触发当前自定义组件的重新渲染。

@Provide

基本数据类型,类,数组

@Provide作为数据的提供方,可以更新其子孙节点的数据,并触发页面渲染。

应用级变量的状态管理:

AppStorage是整个UI应用程序状态的中心“数据库”,UI框架会针对应用程序创建单例AppStorage对象,并提供相应的装饰器和接口供应用程序使用。

  • @StorageLink:@StorageLink(name)的原理类似于@Consume(name),不同的是,该给定名称的链接对象是从AppStorage中获得的,在UI组件和AppStorage之间建立双向绑定同步数据。
  • @StorageProp:@StorageProp(name)将UI组件属性与AppStorage进行单向同步,AppStorage中值的更改会更新组件中的属性,但UI组件无法更改AppStorage中的属性值。

【习题】应用程序框架 

及格分85/ 满分100

判断题

1. 一个应用只能有一个UIAbility。

正确(True) 错误(False)

回答正确

2. 创建的Empty Ability模板工程,初始会生成一个UIAbility文件。

正确(True) 错误(False)

回答正确

3. 每调用一次router.pushUrl()方法,页面路由栈数量均会加1。

正确(True)  错误(False) (不一定会加1,需要看使用的模式是 单实例 还是 多实例

回答正确

单选题

1. API9及以上,router.pushUrl()方法,默认的跳转页面使用的模式是哪一种?

A. standard

B. Single

C. Specified

回答正确

2. UIAbility启动模式需要在module.json5文件中配置哪个字段?

A. module

B. skills

C. launchType

D. abilities

回答正确

多选题

1. API9及以上,router.pushUrl()方法的mode参数可以配置为以下哪几种跳转页面使用的模式?

A. Standard

B. Single

C. Specified

回答正确

2. UIAbility的生命周期有哪几个状态?

A. Create

B. WindowStageCreate

C. Foreground

D. Background

E. WindowStageDestroy

F. Destroy

回答正确

3. UIAbility有哪几种的启动模式

A. multiton

B. singleton

C. specified

该小节补充知识:
UIAbility概述

        UIAbility是一种包含用户界面的应用组件,主要用于和用户进行交互。UIAbility也是系统调度的单元,为应用提供窗口在其中绘制界面。

router.pushUrl()的mode参数

API9及以上,router.pushUrl()方法新增了mode参数,可以将mode参数配置。router.RouterMode.Single单实例模式和router.RouterMode.Standard多实例模式。

        在单实例模式下:如果目标页面的url在页面栈中已经存在同url页面,离栈顶最近同url页面会被移动到栈顶,移动后的页面为新建页,原来的页面仍然存在栈中,页面栈的元素数量不变;如果目标页面的url在页面栈中不存在同url页面,按多实例模式跳转,页面栈的元素数量会加1。

UIAbility的生命周期

        为了实现多设备形态上的裁剪和多窗口的可扩展性,系统对组件管理和窗口管理进行了解耦。UIAbility的生命周期包括Create、Foreground、Background、Destroy四个状态,WindowStageCreate和WindowStageDestroy为窗口管理器(WindowStage)在UIAbility中管理UI界面功能的两个生命周期回调,从而实现UIAbility与窗口之间的弱耦合。

Foreground和Background状态,分别在UIAbility切换至前台或者切换至后台时触发。

分别对应于onForeground回调和onBackground回调。

①:onForeground回调,在UIAbility的UI页面可见之前,即UIAbility切换至前台时触发。可以在onForeground回调中申请系统需要的资源,或者重新申请在onBackground中释放的资源。

②:onBackground回调,在UIAbility的UI页面完全不可见之后,即UIAbility切换至后台时候触发。可以在onBackground回调中释放UI页面不可见时无用的资源,或者在此回调中执行较为耗时的操作,例如状态保存等。

UIAbility的启动模式

注意此处和上面的pushUrl的模式不同

对于浏览器或者新闻等应用,用户在打开该应用,并浏览访问相关内容后,回到桌面,再次打开该应用,显示的仍然是用户当前访问的界面。

对于应用的分屏操作,用户希望使用两个不同应用(例如备忘录应用和图库应用)之间进行分屏,也希望能使用同一个应用(例如备忘录应用自身)进行分屏。

对于文档应用,用户从文档应用中打开一个文档内容,回到文档应用,继续打开同一个文档,希望打开的还是同一个文档内容。

基于以上场景的考虑,UIAbility当前支持singleton(单实例模式)、multiton(多实例模式)和specified(指定实例模式)3种启动模式。

【习题】构建漂亮的页面 

及格分85/ 满分100

判断题

1. 在Column容器中的子组件默认是按照从上到下的垂直方向布局的,其主轴的方向是垂直方向,在Row容器中的组件默认是按照从左到右的水平方向布局的,其主轴的方向是水平方向。

正确(True)  错误(False)

回答正确

2. List容器可以沿水平方向排列,也可以沿垂直方向排列。

正确(True)   错误(False)

回答正确

3. 当Tabs组件的参数barPosition为BarPosition.End时,页签位于页面底部。

正确(True)  错误(False) (还有vertical属性来控制具体位置)

回答正确

4. Resource是资源引用类型,用于设置组件属性的值,可以定义组件的颜色、文本大小、组件大小等属性。

正确(True)  错误(False)

回答正确

单选题

1. 使用TextInput完成一个密码输入框,推荐设置type属性为下面哪个值?

A. InputType.Normal

B. InputType.Password

C. InputType.Email

D. InputType.Number

回答正确

2. 使用Image加载网络图片,需要以下那种权限?

A. ohos.permission.USE_BLUETOOTH

B. ohos.permission.INTERNET

C. ohos.permission.REQUIRE_FORM

D. ohos.permission.LOCATION

回答正确

3. 下面哪个组件层次结构是错误的?

A. List>ListItem>Column

B. Column>List>ListItem

C. Grid>Row>GridItem

D. Grid>GridItem

回答正确

多选题

1. Row容器的主轴是水平方向,交叉轴是垂直方向,其参数类型为VerticalAlign (垂直对齐),VerticalAlign 定义了以下几种类型?

A. Top

B. Bottom

C. Start

D. End

E. Center

回答正确 (因为相对于垂直方向来说,起始和结束是指Top、Buttom

2. 下面哪些组件是容器组件?

A. Button

B. Row

C. Column

D. Image

E. TextInput

回答正确

3. 关于Tabs组件页签的位置设置,下面描述正确的是?

A. 当barPosition为Start(默认值),vertical属性为false时(默认值),页签位于容器顶部。

B. 当barPosition为Start(默认值) ,vertical属性为true时,页签位于容器左侧。

C. 当barPosition为End ,vertical属性为false(默认值)时,页签位于容器底部。

D. 当barPosition为End ,vertical属性为true时,页签位于容器右侧。

回答正确

声明式开发范式目前可供选择的组件如下表所示。

组件类型

  

基础组件

Blank、Button、Checkbox、CheckboxGroup、DataPanel、DatePicker、Divider、Gauge、Image、ImageAnimator、LoadingProgress、Marquee、Navigation、Progress、QRCode、Radio、Rating、RichText、ScrollBar、Search、Select、Slider、Span、Stepper、StepperItem、Text、TextArea、TextClock、TextInput、TextPicker、TextTimer、TimePicker、Toggle、Web、XComponent

容器组件

AlphabetIndexer、Badge、Column、ColumnSplit、Counter、Flex、GridContainer、Grid、GridItem、List、ListItem、Navigator、Panel、Refresh、Row、RowSplit、Scroll、SideBarContainer、Stack、Swiper、Tabs、TabContent

媒体组件

Video

绘制组件

Circle、Ellipse、Line、Polyline、Polygon、Path、Rect、Shape

画布组件

Canvas

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/2207.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3.SpringCloud版本

1.SpringCloud与SpringBoot之间版本对应 2.服务拆分的注意事项 1.不同微服务,不要重复开发相同业务。 2.微服务的数据独立,每个微服务都有自己独立的数据库,不要访问其他微服务的数据库。 3.微服务可以将自己的的业务暴露为接口&#xff…

婚恋相亲红娘牵线系统源码支持微信小程序+微信公众号+H5+APP社交交友系统搭建,扩展你的社交影响力与人脉资源

当代年轻人晚婚晚育甚至不愿意结婚不愿意相亲等问题愈来愈严重了,但是如果抛开表现去追求本质的话,其实不难发现年轻人们还是会喜欢去找一些志同道合或者聊得来的异性朋友交流,从线上发展到线下的一个流程。 核心系统核心体系是恋爱小贴士、…

【C++】详解初始化列表,隐式类型转化,类静态成员,友元

前言 初始化列表是对构造函数内容的补充,小编会详细的讲解初始化列表的概念,特性,注意点。这是本篇内容的重头戏,小编会先提一个问题来抛砖引玉。 隐式类型转换顾名思义,首先它不需要主动转换,类似于把浮点…

redis原理篇(黑马程序员虎哥 )回忆笔记

原理,老师讲的真好。相见恨晚。 以下内容是按视频课程的章节安排,在我自己听完课之后,凭借记忆总结的。(可能存在疏漏不足,后期补全和修正,同时也在这个过程巩固我自己的对于这个组件相关原理的学习&#x…

Qt Debug模式下应用程序输出界面乱码【已解决】

Qt Debug模式下应用程序输出乱码 一、问题描述二、解决方法三、相关测试 一、问题描述 源码为utf-8编码. Qt Creator在Debug模式下运行程序,下方应用程序输出界面显示乱码. 但正常运行无乱码: 二、解决方法 尝试修改文件编码、执行编码无果… 可参考…

第24篇 python基础

Python的基础语法相当简洁明了,以下是一些关键点及其简单案例分析:### 1. **标识符** - 标识符是用来给变量、函数、类等命名的名称,必须以字母(包括Unicode字符)、下划线 _ 或者非数字字符开头,后面可以跟…

主打国产算力 广州市通用人工智能公共算力中心项目签约

4月9日,第十届广州国际投资年会期间,企商在线(北京)数据技术股份有限公司与广州市增城区政府就“广州市通用人工智能公共算力中心”项目进行签约。 该项目由广州市增城区人民政府发起,企商在线承建。项目拟建成中国最…

JS-37-jQuery06-ajax

用JavaScript写AJAX前面已经介绍过了,主要问题就是不同浏览器需要写不同代码,并且状态和错误处理写起来很麻烦。 用JavaScript写AJAX 用jQuery的相关对象来处理AJAX,不但不需要考虑浏览器问题,代码也能大大简化。 一、ajax()函数…

RK3568 android11 修改关机弹窗界面

需要修改关机弹窗界面&#xff0c;当前界面我已经按照客户需求去掉emergency 但是客户需要按其他区域可以实现返回&#xff0c;也就是点击黑色背景取消dialog 嗑代码发现黑色布局为&#xff1a; <node index"0" text"" resource-id"com.android.…

逆向修改app就可以游戏充值到账?

hello ,大家好, 现在市场仍然流行着非常多的传奇类游戏私服或者其他类型的游戏私服,随着私服越来越多(很多并不合法),越来越多的人加入了破解,逆向修改,或者代充的队伍并从中获利。这里我给大家分享一下这些做代充的常规的做法,以及大家作为游戏服务器如何避坑做强校验…

c#开发vs2022安装地址

C#学习visual Studio 2022安装与配置详细过程_vs2022怎么配置c#环境-CSDN博客

CSS基础:最详细 padding的 4 种用法解析

你好&#xff0c;我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃&#xff0c;大专生&#xff0c;一枚程序媛&#xff0c;感谢关注。回复 “前端基础题”&#xff0c;可免费获得前端基础 100 题汇总&#xff0c;回复 “前端工具”&#xff0c;可获取 We…

Java8 中map中删除元素的简单方法

通过values删除 map.values().removeIf(value -> !value.contains("1"));通过keySet删除 map.keySet().removeIf(key -> key ! 1);通过entrySet删除 map.entrySet().removeIf(entry -> entry.getKey() ! 1);

编写一款2D CAD/CAM软件(十四)绘制工具栏

前面的文章已经封装了数个最基本的图元&#xff0c;但是视图的呈现是基于测试数据形成的。为了尽快完善软件交互的框架和能力&#xff0c;本文将增加工具栏。 资源文件 1.首先&#xff0c;创建按钮图标。使用绘图软件构建出工具栏按钮的图标&#xff0c;绘图软件多种多样&…

Vue之v-on事件修饰符的含义及使用

背景&#xff1a;Vue 拆封了一个组件&#xff0c;在组件里面会使用一个方法来改变父组件传过来的值&#xff0c; 但是在子组件里面操作父组件的数据变更&#xff0c;实在比较麻烦&#xff08;因为单向数据流&#xff09;&#xff0c; So 能不能直接在组件上面绑定事件方法呢&…

Nest 快速上手 —— (一)nest介绍与启动安装

参考资料&#xff1a;https://docs.nestjs.com/ 0.介绍 Nest (NestJS)是一个用于构建高效、可扩展的Node.js服务器端应用程序的框架。它使用渐进式JavaScript&#xff0c;构建并完全支持TypeScript(但仍然允许开发人员使用纯JavaScript编写代码)&#xff0c;并结合了OOP(面向对…

HCIP【路由过滤、路由引入实验】

目录 实验要求&#xff1a; 实验拓扑图&#xff1a; 实验思路&#xff1a; 实验步骤&#xff1a; 一、配IP地址 二、在相应的设备上配置RIP协议和OSPF协议 三、路由引入 四、路由过滤 五、配置静默接口 实验要求&#xff1a; 1、按照图示配置 IP 地址&#xff0c;R1&a…

网络靶场实战-Qiling Fuzz实例分析

背景 在上一小节中&#xff0c;介绍了qiling框架的背景和基础使用&#xff0c;并以相关的CTF和qilinglab实例进行练习加深对qiling框架的使用&#xff0c;后续并简单介绍了qiling fuzz的功能。 在这一小节&#xff0c;我们将对qiling fuzz iot设备进行测试以及以实例的方式对…

FineReport报表问题- SET LOGSIZE FAILED 解决

1.问题描述 Oops!!!非常抱歉&#xff0c;您当前无法访问此页。 发生的问题是&#xff1a;CREATE EMB-DB: SET LOGSIZE FAILED! 详细信息 java.lang.RuntimeException: CREATE EMB-DB: SET LOGSIZE FAILED!<br> at com.fr.data.core.db.DBUtils.getEmbeddedDB(Unknown So…

C++ 面向对象-封装

C 是一种多范式编程语言&#xff0c;它支持面向对象编程&#xff08;OOP&#xff09;范式。面向对象编程是一种程序设计思想&#xff0c;其中程序由对象组成&#xff0c;每个对象都是一个实例&#xff0c;具有数据和相关操作。在C中&#xff0c;实现面向对象编程主要通过类和对…