鸿蒙面试题——面试题整理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 状态的同步
- @State装饰器:组件内状态
- @Prop装饰器:父子单向同步
- @Link装饰器:父子双向同步
- @Provide装饰器和@Consume装饰器:与后代组件双向同步
- @Observed装饰器和ObjectLink装饰器:嵌套类对象属性变化
2.4.2 状态的管理(存储)
- LocalStorage:页面级UI状态存储
- AppStorage:应用全局的UI状态存储
- PersistentStorage:持久化存储UI状态
- Environment:设备环境查询
2.4.3 其他状态管理
- @Watch装饰器:状态变量更新通知
2.5 跨进程通信方式有哪些
进程间通信(IPC)是指在鸿蒙OS中实现不同进程的信息交换与资源共享。由于每个进程均运行在独立地址空间,因此需要某种协作机制才能实现数据传输。
鸿蒙系统提供了以下几种进程间通信方式:
- 管道通信
- 共享内存
- 信号量同步
- 套接字网络
- RPC远程调用
- 发布订阅事件
2.6 @BuilderParam与@Builder有什么不同
- @Builder装饰器:自定义构建函数
- @BuilderParam装饰器:该装饰器用于声明任意UI描述的一个元素,类似slot占位符
2.7 UIAblity的启动流程
- 解析module.json5文件
- 初始化,通过abilities获取入口文件
- 根据EntryAbility.ts获取首页路由
- 解析入口Entry
- 生成页面