鴻蒙面試題

  • 鴻蒙的狀態(tài)管理
@state @prop @link
  • @prop和@link的區(qū)別
@prop是單向的顶霞,只能父組件傳子組件
@link是雙向的锣吼,可以子組件傳父組件
  • 跨組件之間通信用什么方式
爺孫組件的參數(shù)傳遞可以使用@provide和@consume進行雙向數(shù)據(jù)傳遞。
兄弟組件之間數(shù)據(jù)傳遞可以使用共同的父組件或者全局狀態(tài)管理(例如localStorage玄叠、AppStorage)
  • @Provider和@Consumer vs @Provide和@Consume的區(qū)別读恃?
    | 能力 | V2 裝飾器@Provider 和@Consumer V1 裝飾器@Provide 和@Consume
    本地初始化 允許本地初始化,當找不到@Provider 的時候使用本地默認值寺惫。 禁止本地初始化,當找不到對應(yīng)的@Provide 時候萨驶,會拋出異常艇肴。
    支持類型 支持 function。 不支持 function再悼。
    觀察能力 僅能觀察自身賦值變化,如果要觀察嵌套場景谤草,配合@Trace 一起使用娘侍。 觀察第一層變化泳炉,如果要觀察嵌套場景,配合@Observed 和@ObjectLink 一起使用氧腰。
    alias 和屬性名 alias 是唯一匹配的 key,如果缺省 alias古拴,則默認屬性名為 alias。 alias 和屬性名都為 key紧帕,優(yōu)先匹配 alias,匹配不到可以匹配屬性名桅打。
    從父組件初始化 禁止是嗜。 允許挺尾。
    支持重載 默認開啟,即@Provider 可以重名丽柿,@Consumer 向上查找最近的@Provider魂挂。 默認關(guān)閉,即在組件樹上不允許有同名@Provide涂召。如果需要重載,則需要配置 allowOverride麻顶。
  • foreach和lazyforeach
兩者都是對容器組件進行數(shù)據(jù)加載和渲染舱卡。foreach是一次循環(huán)加載,lazyforeach是按需加載轮锥。
他們的參數(shù)有3個,其中兩個必選一個可選新娜,必選參數(shù)為數(shù)據(jù)源list既绩,循環(huán)的回調(diào);可選參數(shù)為函數(shù)生成鍵值
  • HAP私杜、HSP、HAR的區(qū)別
HAP是我們自己寫的ability包
HSP是動態(tài)包衰粹,類似windows里的dll文件铝耻,可以通過路徑引用,不會打包到app包里
HAR是靜態(tài)包瓢捉,類似windows里的lib文件,會打包到app包里
  • 多線程了解嗎椎镣?
鴻蒙有兩種多線程方式分別是taskpool和worker兽赁,一般情況用taskpool,常駐后臺的線程任務(wù)用worker刀崖。
| 普通任務(wù) | new taskpool.Task() | taskpool.execute() | 立即執(zhí)行的短時任務(wù),耗時不能超過3分鐘馆截。 |
| 延時任務(wù) | new taskpool.Task() | taskpool.executeDelayed() | 為了不影響應(yīng)用啟動的性能蜂莉,一些不影響啟動的初始化類任務(wù)往往期望放在延時任務(wù)中執(zhí)行,如拉取線上的配置信息等窖张。 |
| 長時任務(wù) | new taskpool.LongTask() | taskpool.execute() | 希望長時運行的任務(wù)一直保持執(zhí)行蚁滋,已為其他模塊提供特定的服務(wù),比如日志埋點辕录,后臺長鏈接保活等副女。 |
| 串行任務(wù) | new taskpool.SequenceRunner()速梗,new taskpool.Task() | SequenceRunner. execute() | 用于執(zhí)行一組需要串行執(zhí)行的任務(wù) |
| 依賴任務(wù) | task1.addDependency(task2), task1.removeDependency(task2) | taskpool.execute() | 任務(wù)之間存在先后依賴關(guān)系 |
  • ability的生命周期
onInitialize() - 在Ability創(chuàng)建時調(diào)用枕赵,用于執(zhí)行初始化操作位隶。
onStart() - 在Ability啟動時調(diào)用,用于執(zhí)行必要的準備工作涧黄。
onStop() - 在Ability停止時調(diào)用,用于釋放資源和清理操作懊昨。
onDestroy() - 在Ability銷毀時調(diào)用春宣,用于進行最終的清理工作。
onActive() - 在Ability從后臺返回前臺時調(diào)用躏惋,用于執(zhí)行恢復(fù)操作嚷辅。
onInactive() - 在Ability從前臺進入后臺時調(diào)用,用于執(zhí)行保存數(shù)據(jù)等操作扁位。
  • 組件的生命周期
頁面生命周期是指被@Entry裝飾的組件的生命周期趁俊,主要包含以下幾個函數(shù):
onPageShow:頁面每次顯示時觸發(fā),包括路由過程则酝、應(yīng)用進入前后臺等場景。
onPageHide:頁面每次隱藏時觸發(fā)般卑,包括路由過程爽雄、應(yīng)用進入前后臺等場景。
onBackPress:當用戶點擊返回按鈕時觸發(fā)叹谁。如果返回值為true,則無法通過返回鍵返回上一頁焰檩,用戶必須與頁面交互才能返回。
自定義組件生命周期是指被@Component裝飾的UI單元的生命周期兜叨,主要包含以下幾個函數(shù):
aboutToAppear:在創(chuàng)建自定義組件的新實例后衩侥,執(zhí)行其build函數(shù)之前觸發(fā)」虻可以在此函數(shù)中改變狀態(tài)變量峦萎,更改將在后續(xù)執(zhí)行build函數(shù)中生效。
onDidBuild:組件build()函數(shù)執(zhí)行完成之后回調(diào)該接口骨杂,不建議在onDidBuild函數(shù)中更改狀態(tài)變量、使用animateTo等功能蛤售,這可能會導(dǎo)致不穩(wěn)定的UI表現(xiàn)妒潭。
aboutToDisappear:在自定義組件銷毀前觸發(fā)。不允許在此函數(shù)中改變狀態(tài)變量漠酿,特別是對@Link變量的修改可能會導(dǎo)致應(yīng)用程序行為不穩(wěn)定谎亩。
  • 鴻蒙原生與web的交互方式
import { webview } from '@kit.ArkWeb'

@Entry
@Component
struct WebComponent {
  controller: webview.WebviewController = new webview.WebviewController()
  
  build() {
    Column() {
      // 三種加載網(wǎng)頁的方式
      Web({ src: $rawfile("index.html"), controller: this.controller })
      Web({ src: "resource://rawfile/index.html", controller: this.controller })
      Web({ src: 'www.example.com', controller: this.controller })
      .zoomAccess(false)
      .aspectRatio(1)
      .javaScriptAccess(true)
      .onPageEnd(async e => {
         // 調(diào)用網(wǎng)頁內(nèi)函數(shù)并獲取返回值
         const res = await this.controller.runJavaScript('test()')
       })
       // 頁面上調(diào)用 confirm() 函數(shù)時觸發(fā),以此來實現(xiàn)頁面向原生通信
      .onConfirm(event => {
         
      })
    }
  }
}


// module.json5 訪問網(wǎng)絡(luò)前需要申請網(wǎng)絡(luò)權(quán)限
"module": {
    "requestPermissions": [
         {"name": "ohos.permission.INTERNET"}
     ]
 }
  • Navigation組件和router的選擇
在不涉及復(fù)雜動效夫凸、交互阱持、多級路由等場景時,可以使用router鸽扁。但考慮到應(yīng)用當前或以后可能出現(xiàn)的復(fù)雜場景,以及整體交互體驗的一致性桶现,推薦使用Navigation。Navigation可以完全替換router的能力吏夯。
  • @Entry 裝飾的頁面即横,A 頁面跳到 B 頁面后再跳回 A 頁面裆赵,如何獲取 B 頁面的返回值
router.back({
  url: 'pages/Home',
  params: {
    info: '來自Home頁'
  }
})
// 通過調(diào)用 router.getParams() 方法進行獲取
 onPageShow() {
    const params = router.getParams() as Record<string, string>
    console.log(params)
  }
  • 數(shù)據(jù)存儲方式
緩存有三種方式战授,分別是localStorage、AppStorage和PresisentStorage植兰。
localStorage是保存頁面的數(shù)據(jù),頁面銷毀數(shù)據(jù)消失废境。
AppStorage是app級的數(shù)據(jù)筒繁,App進程退出數(shù)據(jù)消失。
PresistentStorage是持久的數(shù)據(jù)毡咏,一般搭配AppStorage使用呕缭。
還有一種是preference,也可以持久存儲數(shù)據(jù)恢总,因為需要一個context參數(shù),一般用于存儲一些UI相關(guān)的東西佳谦。
另外就是數(shù)據(jù)庫滋戳,有[鍵值數(shù)據(jù)庫](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/data-persistence-by-kv-store-V5)和[關(guān)系數(shù)據(jù)庫](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/data-persistence-by-rdb-store-V5)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市咪笑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌映跟,老刑警劉巖扬虚,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異荸镊,居然都是意外死亡堪置,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門岭洲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坎匿,“玉大人,你說我怎么就攤上這事彪腔〗裕” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵格嗅,是天一觀的道長唠帝。 經(jīng)常有香客問我,道長贴铜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任徘意,我火速辦了婚禮轩褐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘把介。我一直安慰自己,他們只是感情好脚牍,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布秒拔。 她就那樣靜靜地躺著飒硅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪庵芭。 梳的紋絲不亂的頭發(fā)上雀监,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天,我揣著相機與錄音好乐,去河邊找鬼瓦宜。 笑死,一個胖子當著我的面吹牛临庇,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播淮蜈,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼梧田,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了裁眯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤俯画,失蹤者是張志新(化名)和其女友劉穎司草,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體猜憎,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡搔课,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年爬泥,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片袍啡。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡境输,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出嗅剖,到底是詐尸還是另有隱情,我是刑警寧澤黔攒,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布蒋院,位于F島的核電站,受9級特大地震影響姑丑,放射性物質(zhì)發(fā)生泄漏辞友。R本人自食惡果不足惜震肮,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一留拾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧沦偎,春花似錦咳蔚、人聲如沸豪嚎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽糯耍。三九已至,卻和暖如春革为,著一層夾襖步出監(jiān)牢的瞬間荒揣,已是汗流浹背焊刹。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留俩滥,地道東北人贺奠。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像挂据,于是被迫代替她去往敵國和親儿普。 傳聞我的和親對象是個殘疾皇子崎逃,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容