鸿蒙面试题——面试题整理1

一 面试题汇总

  • 是否系统学习过鸿蒙
  • UIAbility组件生命周期(组件、页面的生命周期)
  • 鸿蒙APP和Android的区别
  • 父子间传递数据方式有哪些
  • 跨进程通信方式有哪些
  • @BuilderParam与@Builder有什么不同
  • UIAblity的启动流程

二 面试题解答(仅供参考,如有问题请指正)

2.1 是否系统学习过鸿蒙

主要考察对鸿蒙是否有过系统学习,比如:

  • 鸿蒙与Android的区别
  • 组件
  • 容器、布局
  • 功能组件(Video、Web等)
  • 自定义组件
  • 动画
  • 事件与通知
  • 网络
  • 原子化
  • 项目等

2.2 UIAbility组件生命周期(组件、页面的生命周期)

2.2.1 UIAbility组件生命周期

UIAbility的生命周期包括Create、Foreground、Background、Destroy四个状态,如下图所示

注:其他相关概念:UIAbility组件、启动模式、UIAbility组件与UI的数据同步

2.2.2 自定义组件生命周期

组件生命周期,即一般用@Component装饰的自定义组件的生命周期,提供以下生命周期接口

  • aboutToAppear
  • build
  • onPageShow
  • Component is visiable
  • on PageHide
  • onBackPress
  • aboutToDisappear

2.2.3 页面的生命周期

页面生命周期,即被@Entry装饰的组件生命周期,提供以下生命周期接口

  • onPageShow:页面每次显示时触发一次,包括路由过程、应用进入前台等场景
  • onPageHide:页面每次隐藏时触发一次,包括路由过程、应用进入后台等场景
  • onBackPress:当用户点击返回按钮时触发

2.3 鸿蒙APP和Android的区别

鸿蒙(HarmonyOS)和Android是两个不同的操作系统,它们有一些区别,包括架构、开发者支持、应用生态和一些设计理念。以下是鸿蒙APP和Android APP之间的一些主要区别,希望对大家有所帮助

2.3.1 操作系统架构:

Android: Android是由Google推出的基于Linux内核的开源操作系统。它采用的是单内核架构。

鸿蒙: 鸿蒙是由华为推出的分布式操作系统,可以在多种设备上运行,包括手机、平板、智能电视、智能穿戴等。它采用的是微内核架构,支持分布式架构。

2.3.2 多设备协同

Android: Android主要用于移动设备,尽管也有其他设备(如电视和汽车),但多设备协同性较有限。

鸿蒙: 鸿蒙专注于多设备协同工作,可以实现设备之间的无缝连接和协同操作,支持分布式场景。

2.3.3 开发语言

Android: Android应用通常使用Java或Kotlin编程语言进行开发。

鸿蒙: 鸿蒙应用可以使用多种编程语言,包括Java、C、C++、JavaScript等。此外,鸿蒙提供了自家的开发语言HarmonyOS DevEco Studio。

2.3.4 开发者支持

Android: Android拥有庞大的开发者社区和丰富的开发资源,开发者可以使用Android Studio等工具进行开发。

鸿蒙: 鸿蒙的开发者社区相对较新,但华为正在努力扩大其生态系统,并提供HarmonyOS DevEco Studio等开发工具

2.3.5 应用生态

Android: Android拥有巨大的应用生态系统,Google Play商店上有数百万的应用。

鸿蒙: 鸿蒙的应用生态系统尚处于发展阶段,虽然支持Android应用的兼容性,但其本身的应用数量相对较少。

2.3.6 分布式UI编程模型

Android: Android使用传统的UI编程模型,UI界面的布局和交互通常在单一设备上进行。

鸿蒙: 鸿蒙引入了分布式UI编程模型,允许开发者以分布式方式设计和呈现界面,使得应用可以在多个设备上实现更灵活的交互

2.3.7 开放原子服务

Android: Android应用通常以整体的形式存在,服务间的交互相对独立。

鸿蒙: 鸿蒙提倡开放原子服务的理念,通过原子服务的方式,实现模块化的应用开发,使得不同模块之间更容易实现复用和替换

总体而言,鸿蒙和Android有着不同的设计思想和应用场景,鸿蒙致力于构建分布式操作系统,支持更多设备的协同工作,而Android则主要专注于移动设备领域。开发者选择使用哪个系统,取决于项目需求和开发者的偏好

2.4 父子间传递数据方式有哪些

说明:次问题涉及状态的同步(装饰器)及状态的管理(存储)

2.4.1 状态的同步

  1. @State装饰器:组件内状态
  2. @Prop装饰器:父子单向同步
  3. @Link装饰器:父子双向同步
  4. @Provide装饰器和@Consume装饰器:与后代组件双向同步
  5. @Observed装饰器和ObjectLink装饰器:嵌套类对象属性变化

2.4.2 状态的管理(存储)

  1. LocalStorage:页面级UI状态存储
  2. AppStorage:应用全局的UI状态存储
  3. PersistentStorage:持久化存储UI状态
  4. Environment:设备环境查询

2.4.3 其他状态管理

  1. @Watch装饰器:状态变量更新通知

2.5 跨进程通信方式有哪些

进程间通信(IPC)是指在鸿蒙OS中实现不同进程的信息交换与资源共享。由于每个进程均运行在独立地址空间,因此需要某种协作机制才能实现数据传输。

鸿蒙系统提供了以下几种进程间通信方式:

  • 管道通信
  • 共享内存
  • 信号量同步
  • 套接字网络
  • RPC远程调用
  • 发布订阅事件

2.6 @BuilderParam与@Builder有什么不同

  • @Builder装饰器:自定义构建函数
  • @BuilderParam装饰器:该装饰器用于声明任意UI描述的一个元素,类似slot占位符

2.7 UIAblity的启动流程

  1. 解析module.json5文件
  2. 初始化,通过abilities获取入口文件
  3. 根据EntryAbility.ts获取首页路由
  4. 解析入口Entry
  5. 生成页面