2025鴻蒙開發面試題匯總——通俗易懂

問題和通俗易懂的答案,覆蓋鴻蒙開發的核心知識點和實際場景,方便面試時快速評估候選人能力:


一、基礎概念(必問)

  1. 鴻蒙和安卓最大的區別是什么?舉個實際例子。
    答案:鴻蒙是“分布式操作系統”,比如你可以用手機操控電視、手表聯動,數據自動同步(比如手機導航流轉到車機),安卓做不到這種跨設備協作;另外鴻蒙系統更輕量,適合智能家居等小內存設備。

  2. 鴻蒙的HAP包是什么?分哪幾種?
    答案:HAP就是鴻蒙的應用安裝包,類似安卓的APK。分三種:

    • Release包(.hap):正式發布用,刪除了調試信息;
    • Debug包(.hap.debug):測試用,帶日志;
    • Preview包(.hap.preview):臨時測試用,不能上架。
  3. 鴻蒙的“微內核”是什么?為什么用這個設計?
    答案:微內核只保留最基礎的功能(比如任務調度),其他功能(比如文件系統)獨立運行。好處是更安全(一個模塊崩潰不影響整體)、系統更穩定,適合物聯網設備。


二、開發技能(重點考察)

  1. 鴻蒙的頁面和組件生命周期有哪些?
    答案

    • 頁面生命周期onPageShow(顯示)、onPageHide(隱藏)、onBackPress(返回鍵);
    • 組件生命周期aboutToAppear(創建前)、aboutToDisappear(銷毀前)。
  2. 父子組件怎么傳值?兄弟組件呢?
    答案

    • 父傳子:用@Prop(單向,子改不了父)或@Link(雙向,子能改父);
    • 子傳父:通過父組件定義的方法回調;
    • 兄弟組件:通過共同的父組件中轉,或者用全局狀態管理(比如AppStorage)。
  3. 如何保存用戶的登錄狀態?
    答案

    • 小數據用Preferences(類似安卓的SharedPreferences);
    • 大數據用KV-Store鍵值數據庫;
    • 復雜數據用RelationalStore關系型數據庫(類似SQLite)。

三、實際場景(看實戰經驗)

  1. 鴻蒙的UI布局和安卓有什么不同?
    答案:鴻蒙用ArkUI框架,布局用聲明式語法(類似Flutter),比如:

    Column() {  // 縱向排列Text('Hello').fontSize(20)Button('Click').onClick(() => { ... })
    }
    

    安卓是用XML寫布局,鴻蒙更簡潔。

  2. 遇到頁面跳轉卡頓,可能是什么原因?怎么優化?
    答案

    • 原因:頁面資源過大、網絡請求阻塞、動畫未異步執行;
    • 優化:用router.replaceUrl預加載下一頁、圖片壓縮、耗時操作放子線程。
  3. 鴻蒙如何實現跨設備調用(比如手機調用電視的攝像頭)?
    答案

    • 分布式任務調度:先發現設備(deviceManager),然后通過Ability調用遠程服務;
    • 數據通過分布式數據管理自動同步。

四、高級問題(考察深度)

  1. 鴻蒙的Stage模型和FA模型區別是什么?
    答案

    • FA模型:早期版本,適合簡單應用;
    • Stage模型:推薦用!組件生命周期獨立,更適合復雜應用和跨設備協同。
  2. 如何實現一個拖拽排序的列表?
    答案

    • List組件 + onTouch事件監聽拖動位置;
    • 通過@State更新數據源,觸發列表重新渲染;
    • 復雜交互可以用@Animatable添加動畫。
  3. 應用啟動白屏時間長,如何優化?
    答案

    • 減少首屏資源加載(懶加載非必要組件);
    • SplashScreen設置啟動頁背景圖;
    • 預加載數據(比如用戶信息)。

五、行為問題(看潛力和態度)

  1. 如果鴻蒙官方文檔和實際代碼效果不一致,你怎么辦?
    答案

    • 先確認文檔版本是否過時;
    • 查社區(比如官方論壇、CSDN)是否有類似問題;
    • 自己寫Demo驗證,反饋給官方。
  2. 最近鴻蒙更新了哪些新特性?你研究過嗎?
    答案

    • 示例:ArkTS語言增強、Stage模型推廣、分布式硬件池(比如調用多設備算力);
    • 考察候選人是否持續學習。

六、終極驗證(壓軸題)

  1. 現場寫一段代碼:實現一個按鈕,點擊后數字+1,并保存到本地。
    答案
    @Entry
    @Component
    struct CounterPage {@State count: number = 0  // 狀態管理private storage = Preferences.getPreferences()  // 持久化async aboutToAppear() {this.count = await this.storage.get('count', 0) // 讀取保存的值}build() {Column() {Text(`Count: ${this.count}`).fontSize(30)Button('Add +1').onClick(() => {this.count++this.storage.put('count', this.count).flush() // 保存到本地})}}
    }
    

總結

  • 新手:能答對基礎概念和簡單代碼;
  • 中級:能結合實際項目說優化方案;
  • 高手:對分布式設計和Stage模型有深入理解,代碼簡潔高效。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/895953.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/895953.shtml
英文地址,請注明出處:http://en.pswp.cn/news/895953.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Kotlin 優雅的接口實現

1. 日常遇到的冗余的接口方法實現 日常開發中,經常會要實現接口,但是很多場景中,只需要用到其中一兩個方法,例如 ActivityLifecycleCallbacks,它有很多個接口需要實現,但是很多時候我們只需要用到其中的一…

Java List 自定義對象排序 Java 8 及以上版本使用 Stream API

從 Java 8 開始,你可以使用 Stream API 對 List 進行排序,這種方式更加簡潔和靈活。 以下是一個示例代碼: import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.stream.Collectors;// 自定…

【Spring詳解一】Spring整體架構和環境搭建

一、Spring整體架構和環境搭建 1.1 Spring的整體架構 Spring框架是一個分層架構,包含一系列功能要素,被分為大約20個模塊 Spring核心容器:包含Core、Bean、Context、Expression Language模塊 Core :其他組件的基本核心&#xff…

Linux內核讀寫鎖與讀寫信號量的區別及選用

在Linux內核中,讀寫鎖(rwlock_t)和讀寫信號量(struct rw_semaphore)是兩種不同的同步機制,適用于不同的場景。以下是它們的區別和選用建議: 核心區別 特性讀寫鎖 (rwlock_t)讀寫信號量 (struct…

用openresty和lua實現壁紙投票功能

背景 之前做了一個隨機壁紙接口,但是不知道大家喜歡對壁紙的喜好,所以干脆在實現一個投票功能,讓用戶給自己喜歡的壁紙進行投票。 原理說明 1.當訪問http://demo.com/vote/時,會從/home/jobs/webs/imgs及子目錄下獲取圖片列表&…

LLaMA 3.1 模型在DAMODEL平臺的部署與實戰:打造智能聊天機器人

文章目錄 前言 一、LLaMA 3.1 的特點 二、LLaMA3.1的優勢 三、LLaMA3.1部署流程 (一)創建實例 (二)通過JupyterLab登錄實例 (3)部署LLaMA3.1 (4)使用教程 總結 前言 LLama3…

【Python爬蟲(25)】解鎖Python爬蟲:數據存儲的最優選擇與高效策略

【Python爬蟲】專欄簡介:本專欄是 Python 爬蟲領域的集大成之作,共 100 章節。從 Python 基礎語法、爬蟲入門知識講起,深入探討反爬蟲、多線程、分布式等進階技術。以大量實例為支撐,覆蓋網頁、圖片、音頻等各類數據爬取&#xff…

【復現DeepSeek-R1之Open R1實戰】系列8:混合精度訓練、DeepSpeed、vLLM和LightEval介紹

這里寫目錄標題 1 混合精度訓練1.1 FP16和FP321.2 優點1.3 存在的問題1.4 解決辦法 2 DeepSpeed3 vLLM3.1 存在的問題3.2 解決方法3.2.1 PagedAttention3.2.2 KV Cache Manager3.2.3 其他解碼場景 3.3 結論 4 LightEval4.1 主要功能4.2 使用方法4.3 應用場景 本文繼續深入了解O…

使用 FFmpeg 剪輯視頻指南

FFmpeg 是一個功能強大的多媒體處理工具,可以進行視頻和音頻的剪輯、合并、轉碼等操作。本文將詳細介紹如何使用 FFmpeg 進行視頻剪輯,并通過實例幫助你快速掌握剪輯技巧。我們會從最基礎的剪切功能講起,再延伸到一些高級操作,如指…

【分布式理論15】分布式調度1:分布式資源調度的由來與過程

文章目錄 一、操作系統的資源調度:從單核到多核二、 分布式系統的資源調度:從單臺服務器到集群三、 固定資源映射四、 動態資源分配:靈活的任務-資源匹配五、 資源調度過程:從申請到執行 本文主要討論主題: 從操作系統…

【Linux C/C++開發】Linux系統輕量級的隊列緩存mqueue

前言 開發設計時,通常會對業務流程進行模塊化,有些流程之間,不要求同步,但又需要傳遞信息時,如果存儲到數據庫,效率降低很多,如果是存放在內存是最好的。此時可以選擇系統的IPC(進程…

Vue 實現通過URL瀏覽器本地下載 PDF 和 圖片

1、代碼實現如下: 根據自己場景判斷 PDF 和 圖片,下載功能可按下面代碼邏輯執行 const downloadFile async (item: any) > {try {let blobUrl: any;// PDF本地下載if (item.format pdf) {const response await fetch(item.url); // URL傳遞進入i…

計算機網絡基礎雜談(局域網、ip、子網掩碼、網關、DNS)

目錄 1. 簡單局域網的構成 2. IP 地址 3. 子網掩碼 4. IP地址詳解自定義IP 5. IP 地址詳解 6. 網關 7. DNS 域名解析 8. ping 1. 簡單局域網的構成 交換機是組建局域網最重要的設備,換句話說,沒有交換機就沒法搭建局域網 交換機不能讓局域網連…

Thor: 統一AI模型網關的革新之選

項目價值 Thor(雷神托爾)作為一個強大的AI模型管理網關,解決了當前AI領域一個關鍵痛點:不同AI服務商的API格式各異,集成成本高。Thor通過將各種AI模型的獨特格式統一轉換為OpenAI格式,顯著降低了開發者的使用門檻和維護成本。 核…

25年2月通信基礎知識補充:多普勒頻移與多普勒擴展、3GPP TDL信道模型

看文獻過程中不斷發現有太多不懂的基礎知識,故長期更新這類blog不斷補充在這過程中學到的知識。由于這些內容與我的研究方向并不一定強相關,故記錄不會很深入請見諒。 【通信基礎知識補充7】25年2月通信基礎知識補充1 一、多普勒頻移與多普勒擴展傻傻分不…

【Python】Python入門——筆記合集

哈哈 00、環境搭建 學習Python,首先需要搭建一個本地開發環境,或是使用線上開發環境(各類練習網站),這篇博客里主要記錄了本地開發環境的配置方法。內容包括python解釋器的安裝以及pycharm的安裝、漢化等。 博客地…

為什么mvcc中?m_ids 列表并不等同于 min_trx_id 和 max_trx_id 之間的所有事務 ID

首先我們要明確 m_ids 表示創建 ReadView 時,系統中所有活躍(未提交)事務的事務 ID 列表。 僅包含當前未提交的事務,與事務 ID 的數值范圍無關。 min_trx_id 是 m_ids 中的最小值。若 m_ids 為空,則 min_trx_id 等于…

使用 Spark NLP 實現中文實體抽取與關系提取

在自然語言處理(NLP)領域,實體抽取和關系提取是兩個重要的任務。實體抽取用于從文本中識別出具有特定意義的實體(如人名、地名、組織名等),而關系提取則用于識別實體之間的關系。本文將通過一個基于 Apache Spark 和 Spark NLP 的示例,展示如何實現中文文本的實體抽取和…

FPGA開發要學些什么?如何快速入門?

隨著FPGA行業的不斷發展,政策的加持和投入的研發,近兩年FPGA行業的薪資也是水漲船高,一些人轉行后拿到了薪資30W,甚至有一些能力強的人可以拿到60W,看到這里想必不少人表示很心動,但又不知道怎么轉&#xf…

使用Python和正則表達式爬取網頁中的URL數據

在數據抓取和網絡爬蟲開發中,提取網頁中的URL是一個常見的需求。無論是用于構建網站地圖、分析鏈接結構,還是進行內容聚合,能夠高效地從HTML文檔中提取URL都是一個重要的技能。Python作為一種強大的編程語言,結合其正則表達式模塊…