鸿蒙开发面试题(2024-API12)

在这个手机端需求萎靡,新能源汽车不断增多的年代,鸿蒙作为车机系统,手机系统互联互通的开发语言,有着广阔的前景,目前就市面上大部分的鸿蒙面试题进行一个收集整理,后续会持续更新。。

1.页面和组件的生命周期

  • 页面生命周期:
    @Entry装饰的组件生命周期,提供以下生命周期接口:
    onPageShow:页面每次显示时触发一次,包括路由过程、应用进入前台等场景
    onPageHide:页面每次隐藏时触发一次,包括路由过程、应用进入后台等场景。
    onBackPress:当用户点击返回按钮时触发。
  • 组件生命周期:
    一般用@Component装饰的自定义组件的生命周期,提供以下生命周期接口:
    aboutToAppear:组件即将出现时回调该接口,具体时机为在创建自定义组件的新实例后,在执行其build0函数之前执行
    onDidBuild:组件build(函数执行完成之后回调该接口,不建议在onDidBuild函数中更改状态变量、使用animateTo等功能,这可能会导致不稳定的U表现。
    aboutToDisappear:aboutToDisappear函数在自定义组件析构销毁之前执行。不允许在aboutToDisappear函数中改变状态变量,特别是@Link变量的修改可能会导致应用程序行为不稳定。

具体的执行先后顺序为:aboutToAppear->build>onDidBuild->onPageShow->Component is visible->onPageHide->aboutToDisappear

2.应用上传下载功能

需要import系统库:

 import request from '@ohos.request'

需要权限:ohos.permission.INTERNET

  • request.downloadFile:
    下载,异步方法,使用callback形式返回结果。通过on('complete'|'pause'|'remove')7+可获取任务下载时的状态信息,包括任务完成、暂停或移除。通过on('fail')7+可获取任务下载时的错误信息。
  • request.uploadFile:
    上传,异步方法,使用promise形式返回结果。通过on('complete'|'fail')9+可获取任务上传时的错误信息。

3.线程通信

HarmonyOS提供了两种线程间通信的方式,分别是EmitterWorker

Emitter:Emitter主要适用于线程间的事件同步。它可以在不同的线程之间传递事件,并确保事件的顺序和同步性。通过Emiter,一个线程可以触发一个事件,然后其他线程可以监听并处理这个事件。这有助于不同线程之间的数据共享和协调。。

  • emitter.on 持续订阅指定事件,并在接收到该事件时,执行对应的回调处理函数。
  • emitter.once 单次订阅指定的事件,并在接收到该事件并执行完相应的回调函数后,自动取消订阅。
  • emitter.off 取消订阅指定事件。

Worker:Worker主要用于新开一个线程执行耗时任务。当需要执行一些耗时操作时,为了不阻塞主任务的执行,可以使用Worker线程。Worker线程是在主线程的上下文中创建的独立线程,它可以执行一些耗时任务,如网络访问、文件读写等。工作线程可以与主线程并行执行,以提高应用的响应性和性能。

  • 使用Worker,需先构造ThreadWorker实例,ThreadWorker类继承WorkerEventTarget

4.HAP,HAR,HSP分别是什么

  • HAP:HAP (Harmony Abilty Package)是应用安装和运行的基本单元。其主要分为两种类型:entry和feature。
    1.entry:应用的主模块,作为应用的入口,提供了应用的基础功能。
    2.feature:应用的动态特性模块,作为应用能力的扩展,可以根据用户的需求和设备类型进行选择性安装。
  • HAR:HAR (HammonyArchive)是静态共享包。一般用作二方库,发布到OHPM私有仓库,供公司内部使用。或者发布到OHPM中心仓库,供其他应用使用
  • HSP:HSP(Hamony Shared Package)是动态共享包。HSP往往是和 HAR做为对比区分了解。项目中,如果其他模块引入了 HAR,那么其他模块中都会存在 一份HAR的拷贝,此时会存在资源冗余。而HSP则是通过多个模块共享一个引用,资源空间得到利用。

5.本地缓存,数据持久化

  • Preferences:用户首选项为应用提供Key-Value键值型的数据处理能力,支持应用持久化轻量级数据,并对其修改和查询。
  • AppStorage + PersistentStorage(应用全局的 UI 状态存储)
  • KVStore(键值型数据库)
  • RdbStore(关系型数据库)
  • fs(写文件)

6.UIAbility唤起另外的应用程序

系统库app.ability.Want:Want是对象间信息传递的载体, 可以用于应用组件间的信息传递。 Want的使用场景之一是作为startAbility的参数, 其包含了指定的启动目标, 以及启动时需携带的相关数据, 如bundleName和abilityName字段分别指明目标Ability所在应用Bundle名称以及对应包内的Ability名称。当Ability A需要启动Ability B并传入一些数据时, 可使用Want作为载体将这些数据传递给Ability B。

使用逻辑:want系统将调用方传入的want参数(包含action、entities、uri和type属性)与已安装待匹配的应用Ability的skils配置(包含actions、entities、uris和type属性)依次进行匹配。当四个属性匹配均通过,则此应用才会被应用选择器展示给用户进行选择。

7.开发中常用的关键字

  • @State装饰的变量,与声明式范式中的其他被装饰变量一样,是私有的,只能从组件内部访问,在声明时必须指定其类型和本地初始化
  • @Prop装饰的变量可以和父组件建立单向的同步关系。@Prop装饰的变量是可变的,但是变化不会同步回其父组件。
  • @Link子组件中被@Link装饰的变量与其父组件中对应的数据源建立双向数据绑定。
  • @Provide装饰器和@Consume装饰器:与后代组件双向同步,应用于状态数据在多个层级之间传递的场景
  • @Builder装饰器:自定义构建函数。该自定义组件内部UI结构固定,仅与使用方进行数据传递,开发者可以将重复使用的UI元素抽象成一个方法,在build方法里调用。
  • @Local装饰器:@Local表示组件内部的状态,使得自定义组件内部的变量具有观测变化的能力,被@Local装饰的变量无法从外部初始化,因此必须在组件内部进行初始化。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容