鸿蒙面试题(持续更新)

鸿蒙开发中的FA模型和Stage模型是什么?他们分别有什么区别?

应用模型的构成要素

应用模型是系统为开发者提供的应用程序所需能力的抽象提炼,它提供了应用程序必备的组件和运行机制。有了应用模型,开发者可以基于一套统一的模型进行应用开发,使应用开发更简单、高效。

应用模型的构成要素包括: 应用组件、应用进程模型、应用线程模型、应用任务管理模型、应用配置文件。

FA模型:早期的探索

FA模型是HarmonyOS早期版本开始支持的应用模型。它通过PageAbility、ServiceAbility和DataAbility三种组件,为开发者提供了构建应用的基础。FA模型的特点是每个组件运行在自己的进程中,拥有独立的JS VM引擎实例,这使得组件之间相互隔离,但也带来了一定的内存占用。

随着HarmonyOS的演进,特别是1+8+N的战略被提出,多设备和多窗口形态成为主流,此时FA模型在处理复杂应用时存在一定的局限性, FA模型逐渐不再被主推。

提示:1+8+n 表示涵盖五大场景,包括智慧出行、智能家居、运动健康、智慧办公以及影音娱乐

Stage模型:未来的主流

为了更好地适应复杂应用的开发需求,HarmonyOS 3.1 Developer Preview版本引入了Stage模型。Stage模型通过AbilityStage、WindowStage等类,将应用组件和Window窗口作为“舞台”进行管理,从而提供了更加灵活和高效的开发方式。

区别

Stage模型的设计出发点是为了复杂应用而设计,它通过以下几个方面实现了对复杂应用的优化:

共享ArkTS引擎实例:在Stage模型中,多个应用组件共享同一个ArkTS引擎实例,这使得组件之间可以方便地共享对象和状态,同时减少了内存占用。

面向对象的开发方式:Stage模型采用面向对象的开发方式,提高了代码的可读性、易维护性和可扩展性。

支持多设备和多窗口形态:应用组件管理和窗口管理在架构层面解耦,使得应用组件可以在不同设备上使用同一套生命周期,便于系统扩展窗口形态。

平衡应用能力和系统管控成本:Stage模型重新定义了应用能力的边界,提供了特定场景的应用组件,规范化了后台进程管理,防止了恶意应用行为。

鸿蒙生命周期

页面生命周期:被@Entry装饰的组件生命周期

  • onPageShow:页面每次显示时触发。
  • onPageHide:页面每次隐藏时触发(通常是路由跳转到其他页面了)。
  • onBackPress:当用户点击返回按钮时时触发(是手机底部操作栏的返回按钮,不是顶部的路由返回按钮)。

组件生命周期:被@Component装饰的自定义组件的生命周期

  • aboutToAppear:组件即将出现时回调该接口,具体时机为在创建自定义组件的新实例后,在执行其build()函数之前执行。通常在该生命周期发送请求获取数据。
  • aboutToDisappear:在自定义组件即将析构销毁时执行。

UIAbility生命周期:State模型生命周期

  • onCreate:Create状态为在应用加载过程中,UIAbility实例创建完成时触发,系统会调用onCreate()回调。可以在该回调中进行应用初始化操作,例如变量定义资源加载等,用于后续的UI界面展示。
  • onForeground:在UIAbility的UI界面可见之前,如UIAbility切换至前台时触发。可以在onForeground()回调中申请系统需要的资源,或者重新申请在onBackground()中释放的资源。
  • onBackground:在UIAbility的UI界面完全不可见之后,如UIAbility切换至后台时候触发。可以在onBackground()回调中释放UI界面不可见时无用的资源,或者在此回调中执行较为耗时的操作,例如状态保存等。
  • onDestroy:在UIAbility实例销毁时触发。可以在onDestroy()回调中进行系统资源的释放、数据的保存等操作。

请简述鸿蒙操作系统的特点。

跨平台能力,基于微内核设计,提供分布式能力,强调安全性,以及面向未来全场景的无缝体验。

鸿蒙操作系统的微内核架构有哪些优势?

微内核架构的优势包括更高的安全性,因为服务之间的隔离性更强;更好的可扩展性,因为可以按需添加或删除服务;以及更易于维护和更新。

鸿蒙操作系统如何保障系统的安全性?

鸿蒙操作系统采用微内核设计,实现了操作系统服务的隔离,减少了单点故障的风险。同时,还引入了安全启动、数据加密等多重安全机制。

分布式能力在鸿蒙操作系统中如何实现?

鸿蒙操作系统通过分布式软总线、分布式数据管理、分布式任务调度等技术实现跨设备的无缝协作和数据共享。

请解释一下鸿蒙操作系统中的分布式软总线技术。

分布式软总线是一种通信机制,允许不同设备之间进行低延迟、高效率的数据传输和通信,实现设备间的协同工作。

如何在鸿蒙操作系统中进行多设备协同开发?

开发者可以使用华为提供的开发工具和SDK,如DevEco Studio,进行多设备协同开发,实现一次开发,多端部署的目标。

请描述一下鸿蒙操作系统的用户界面开发框架。

鸿蒙操作系统的用户界面开发框架是基于Java的ArkUI框架,它提供了一套丰富的UI组件和布局方式,支持开发者快速构建美观、流畅的用户界面。

鸿蒙操作系统支持哪些编程语言?

鸿蒙操作系统主要支持Java、C/C++以及JavaScript等编程语言进行应用开发。

请解释一下鸿蒙操作系统的IDE——DevEco Studio。

DevEco Studio是华为为鸿蒙操作系统量身打造的集成开发环境,提供了代码编辑、调试、性能监控、应用分析等一系列开发工具,帮助开发者提高开发效率。

如何在鸿蒙操作系统中实现设备间的通信?

开发者可以使用鸿蒙操作系统提供的分布式能力API,如分布式软总线API,实现设备间的通信和数据传输。

请简述鸿蒙操作系统的任务调度机制。

鸿蒙操作系统的任务调度机制是基于微内核的,它可以根据任务的优先级和资源需求,智能地在不同设备间调度任务,实现资源的最优分配。

鸿蒙操作系统如何处理多任务并发?

鸿蒙操作系统通过微内核架构和先进的调度算法,实现了高效的多任务并发处理,保证了系统的流畅性和响应速度。

请描述一下鸿蒙操作系统的文件系统。

鸿蒙操作系统的文件系统是面向分布式场景设计的,支持多设备间的文件共享和同步,提供了高效、可靠的数据存储能力。

鸿蒙操作系统如何支持开发者进行应用测试?

鸿蒙操作系统提供了一系列的测试工具和服务,如模拟器、性能分析工具等,帮助开发者进行全面的应用测试和优化。

请解释一下鸿蒙操作系统的能效管理机制。

鸿蒙操作系统通过智能调度、资源管理等机制,优化了系统的能效表现,延长了设备的使用时间。

鸿蒙操作系统如何处理权限管理?

鸿蒙操作系统采用了严格的权限管理策略,确保应用只能访问授权的数据和服务,保护用户的隐私和数据安全。

请描述一下鸿蒙操作系统的更新机制。

鸿蒙操作系统支持无缝更新,可以在不影响用户使用的情况下,自动下载并安装系统更新,确保系统的安全性和最新性。

鸿蒙操作系统如何支持国际化和本地化?

鸿蒙操作系统提供了强大的国际化和本地化支持,允许开发者轻松地为不同地区和语言的用户提供定制化的服务和体验。

请解释一下鸿蒙操作系统的开发者社区和支持资源。

华为为鸿蒙操作系统建立了一个活跃的开发者社区,提供了丰富的文档、教程、论坛等资源,帮助开发者解决问题和提升技能。

鸿蒙操作系统如何促进开发者生态的建设?

华为通过提供开发工具、技术支持、开发者大会、合作伙伴计划等多种方式,鼓励和支持开发者参与鸿蒙操作系统的生态建设,共同推动产业发展。

ArkTS的基本组成

  • 装饰器: 用于装饰类、结构、方法以及变量,并赋予其特殊的含义。@Entry、@Component和@State都是装饰器,@Component表示自定义组件,@Entry表示该自定义组件为入口组件,@State表示组件中的状态变量,状态变量变化会触发UI刷新。
  • UI描述:以声明式的方式来描述UI的结构,例如build()方法中的代码块。
  • 自定义组件:可复用的UI单元,可组合其他组件。
  • 系统组件:ArkUI框架中默认内置的基础和容器组件,可直接被开发者调用,比如示例中的Column、Text、Divider、Button。
  • 属性方法:组件可以通过链式调用配置多项属性,如fontSize()、width()、height()、backgroundColor()等。
  • 事件方法:组件可以通过链式调用设置多个事件的响应逻辑,如跟随在Button后面的onClick()。
  • 系统组件、属性方法、事件方法具体使用可参考基于ArkTS的声明式开发范式

ArkTS的语言优势

  • 多语言兼容性:鸿蒙ARKTS语言是一种多语言兼容的编程语言,可以同时支持多种 编程语言,如java、C++等。这使得开发者可以在同一个项目中使用不同的编程语言来编 写代码,提高了开发效率和灵活性。
  • 高效性能:鸿蒙ARKTS语言采用了静态编译技术,可以在编译阶段对代码进行优化,提高程序的执行效率。同时,鸿蒙ARKTS还支持并行计算和异步编程模型,可以充分利用多核处理器的性能优势,提高程序的运行速度。
  • 简洁易用:鸿蒙ARKTS语言具有简洁易用的语法特性,使得开发者可以用更少的代码实现同样的功能。同时,鸿蒙ARKTS还提供了丰富的开发工具和文档支持,使得开发者可以快速上手并进行快速迭代开发,
  • 安全可靠:鸿蒙ARKTS语言在设计上注重安全性和可靠性。它提供了严格的类型检查和内存管理机制,可以减少程序中出现的潜在错误和内存泄漏问题。此外,鸿蒙ARKTS还支持安全沙箱机制,可以有效隔离应用程序,提高系统的安全性。

ArkTS常见装饰器

  • @Entry: 装饰struct,页面的入口

  • @Component:装饰struct,表示该struct具有基于组件的能力

  • @State:组件拥有的状态属性,当@State 装饰的变量更改时,组件会重新渲染更新 UI。

  • @Link:组件依赖于其父组件拥有的某些状态属性,当任何一个组件中的数据更新时,另一个组件的状态都会更新,父子组件重新渲染。

  • @Prop:类似@Link,但子组件所做的更改不会同步到父组件上,属于单向传递。

  • @Provide:作为数据的提供方,可以更新其子节点的数据,并触发页面渲染。

  • @Consume:在感知到@Provide 数据更新后,会触发当前自定义组件的重新渲染。

  • @StorageLink :组件通过使用@StorageLink(key)装饰的状态变量,与AppStorage 建立双向数据绑定,key为 AppStorage 中的属性键值。当创建包含@StorageLink 的状态变量的组件时,该状态变量的值将使用AppStorage 中的值进行初始化。在 UI 组件中对@StorageLink 的状态变量所做的更改将同步到AppStorage ,并从 AppStorage 同步到任何其他绑定实例中。

  • @StorageProp :组件通过使用@StorageProp(key)装饰的状态变量,将与 AppStorage 建立单向数据绑定,key 标识 AppStorage 中的属性键值。当创建包含@StoageProp 的状态变量的组件时,该状态变量的值将使用 AppStorage 中的值进行初始化。AppStorage 中的属性值的更改会导致绑定的 UI 组件进行状态更新。

点击响应优化

  • UI优化:从UI布局渲染角度,加快应用绘制性能,比如减少布局嵌套,减少元素渲染,缓存UI动效等。
  • 按需加载优化:根据界面展示或模块加载的需要,延迟加载相关内容,从而减少对首帧页面的性能消耗。
  • 并发优化:使用系统并发执行多个任务的能力,减少响应过程中任务执行的整体时间。
  • IPC通信优化:针对IPC通信特点,尽量减少不必要的通信次数和数据体积,防止IPC通道影响界面响应。
  • 代码逻辑优化:在相关生命周期中减少冗余、避免耗时,提升执行效率,包括善用数据结构、缓存、优化调整时序等。
  • 视觉感知优化:通过交互设计的优化,利用动效动画的形式,在视觉层面提升用户响应速度的感知。

介绍一下MVVM

参考这位博主的: 什么是MVVM?-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值