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

一 面试题汇总

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

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

2.1 是否系统学习过鸿蒙

1
2
3
4
5
6
7
8
9
10
11
12
主要考察对鸿蒙是否有过系统学习,比如:

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

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

2.2.1 UIAbility组件生命周期

1
2
UIAbility的生命周期包括Create、Foreground、Background、Destroy四个状态,如下图所示
注:其他相关概念:UIAbility组件、启动模式、UIAbility组件与UI的数据同步

2.2.2 自定义组件生命周期

1
2
3
4
5
6
7
8
9
组件生命周期,即一般用@Component装饰的自定义组件的生命周期,提供以下生命周期接口

* aboutToAppear:
* build
* onPageShow
* Component is visiable
* on PageHide
* onBackPress
* aboutToDisappear

2.2.3 页面的生命周期

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

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

2.3 鸿蒙APP和Android的区别

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
鸿蒙(HarmonyOS)和Android是两个不同的操作系统,它们有一些区别,包括架构、开发者支持、应用生态和一些设计理念。
以下是鸿蒙APP和Android APP之间的一些主要区别,希望对大家有所帮助


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

2.多设备协同
-Android:Android主要用于移动设备,尽管也有其他设备(如电视和汽车),但多设备协同性较有限。
-鸿蒙:鸿蒙专注于多设备协同工作,可以实现设备之间的无缝连接和协同操作,支持分布式场景。

3.开发语言

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

4.开发者支持
-Android:Android拥有庞大的开发者社区和丰富的开发资源,开发者可以使用Android Studio等工具进行开发。
-鸿蒙:鸿蒙的开发者社区相对较新,但华为正在努力扩大其生态系统,并提供HarmonyOS DevEco Studio等开发工具

5.应用生态
-Android:Android拥有巨大的应用生态系统,Google Play商店上有数百万的应用。
-鸿蒙:鸿蒙的应用生态系统尚处于发展阶段,虽然支持Android应用的兼容性,但其本身的应用数量相对较少。

6.分布式UI编程模型

-Android:Android使用传统的UI编程模型,UI界面的布局和交互通常在单一设备上进行。
-鸿蒙:鸿蒙引入了分布式UI编程模型,允许开发者以分布式方式设计和呈现界面,使得应用可以在多个设备上实现更灵活的交互

7.开放原子服务

-Android:Android应用通常以整体的形式存在,服务间的交互相对独立。
-鸿蒙:鸿蒙提倡开放原子服务的理念,通过原子服务的方式,实现模块化的应用开发,使得不同模块之间更容易实现复用和替换



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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
说明:此问题涉及状态的同步(装饰器)及状态的管理(存储)

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

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

3.其他状态管理
1. @Watch装饰器:状态变量更新通知

2.5 跨进程通信方式有哪些

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

鸿蒙系统提供了以下几种进程间通信方式:
- 管道通信
- 共享内存
- 信号量同步
- 套接字网络
- RPC远程调用
- 发布订阅事件

2.6 @BuilderParam与@Builder有什么不同

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

2.7 UIAblity的启动流程

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