鸿蒙开发面试题(三)

一、介绍下HarmonyOS中的同步机制

HarmonyOS(鸿蒙系统)作为一种分布式操作系统,设计了一套全面的同步机制来支持多设备间的协同工作以及单个设备内部的进程间通信(IPC)。在HarmonyOS中,同步机制主要用于控制对共享资源的访问,避免并发操作导致的数据不一致问题。

  1. 数据同步:HarmonyOS支持跨设备的数据同步,确保在不同设备上数据保持一致。当某个数据在一台设备上发生变化时,这些变化会自动同步到相关联的其他设备上,实现数据的实时更新和共享
  2. 分布式数据库:使用分布式数据库来管理数据,使得数据不再局限于单一设备。分布式数据库能够在不同的设备之间实现数据的分布式存储和访问,提高了数据的可用性和可靠性
  3. 分布式数据管理:HarmonyOS的分布式数据管理功能提供了一种跨设备存储和访问数据的方式,通过统一的接口和协议,可以在不同的设备上同步数据
  4. 自动同步机制:通过自动推送和拉取数据,确保设备间的数据同步,这种机制减少了开发者的工作量,开发者不需要手动编写同步逻辑,系统会在合适的时机自动进行同步
  5. 同步策略:支持灵活多变的同步策略配置,开发者可以根据具体业务需求设置同步的时机、频率和优先级等等参数,以满足不同场景下的数据同步需求

二、介绍下鸿蒙中Ability的分类有哪几种

在鸿蒙系统中,Ability是构成应用的基本单元,用于描述应用的各个功能模块。主要以下两类:

        1、FA(Feature Ability):是鸿蒙应用的主要入口,负责处理用户交互,相当于传统意义上的Activity。FA可以看作是一个完整的页面或者界面,用户可以直接与之交互,FA支持生命周期管理,可以根据应用的状态变化执行不同的回调函数,如启动、暂停、恢复、停止等。FA又可以细分为以下两种:

        一是Page Ability:这是比较常见的FA,用于提供用户界面和交互,可以堆栈式管理,支持历史回退,类似于web浏览器的前进后退功能

        二是Service Ability:这种FA不提供用户界面,主要用于执行后台任务,如音乐播放、数据同步,它可以长时间运行,即使没有用户界面与其交互

        2、PA(Particle Ability):是鸿蒙应用中用于解耦和复用的模块化单元,可以独立于FA存在,提供特定的功能或服务,如地图、天气小部件等等。PA也可以被FA复用,甚至可以跨应用使用,PA的设计理念是按需加载,即只有在需要的时候才被加载激活,这样可以提高资源利用率和应用性能。PA也可以细分为以下两种:

        一是Data Ability:用于提供数据访问和管理能力,可以跨应用和设备共享数据

        二是AbilitySlice:这是鸿蒙特有的概念,可以理解为FA中的子页面或者片段,用于提供特定的用户界面和功能。AbilitySlice可以嵌入到FA中,实现更加复杂的界面布局和交互逻辑

三、在鸿蒙开发中,如何解决不同设备屏幕尺寸和分辨率的适配问题?

  • 合理使用百分比单位和相对单位:在布局文件中,合理使用百分比单位和相对单位(如vp/vh,即viewport的宽度/高度百分比)来定义组件的大小和位置,这可以确保组件在不同屏幕尺寸和分辨率上保持一致的比例和布局
  • 使用响应式布局组件:HarmonyOS的布局系统支持响应式设计,可以使用DirectionalLayout、StackLayout、DependentLayout等布局组件,它们会根据屏幕空间自动调整子组件的位置和大小。例如,DirectionalLayout可以根据屏幕方向和空间自动排列子组件
  • 媒体查询和断点:类似Web开发中的CSS媒体查询,HarmonyOS也支持基于设备特性的条件布局。开发者可以使用媒体查询来根据设备的屏幕尺寸、分辨率、方向等条件来应用不同的布局样式
  • 自适应图片和字体:使用矢量图形(SVG)和可缩放的字体,以确保在不同分辨率的设备上图片和文字都能清晰显示,不会出现模糊或拉伸的情况
  • 使用ArkUI的自适应组件:ArkUI提供了许多自适应的UI组件,它们能够根据屏幕大小自动调整。例如,TextField、Button等组件在不同设备上会自动调整其大小和位置,以适应屏幕空间
  • 测试和调试:使用HarmonyOS的模拟器和真机测试,确保应用在各种设备上都能正常显示和运行。HarmonyOS模拟器提供了多种设备模板,可以模拟不同屏幕尺寸和分辨率,帮助开发者进行充分的测试
  • 使用预定义的尺寸和间距:HarmonyOS提供了一系列预定义的尺寸和间距常量,如 Dimension。value和FontDesignSize,这些常量考虑了不同设备的屏幕密度,可以用于定义控件的大小和间距,确保在不同设备上的一致性

四、介绍下鸿蒙应用开发中的性能优化 

1. 代码优化

  • 减少冗余代码:避免重复计算和不必要的对象创建,使用缓存机制存储结果。
  • 算法优化:选择高效的算法和数据结构,减少时间复杂度和空间复杂度。
  • 异步处理:使用异步IO和多线程处理耗时操作,避免阻塞主线程,确保UI响应性。

2. 资源管理

  • 图片和多媒体优化:压缩图片资源,使用适当的格式(如WebP),减少视频和音频的比特率,以减小文件大小和加载时间。
  • 懒加载和按需加载:只在需要时加载资源和数据,避免一次性加载大量资源。
  • 资源回收:及时释放不再使用的资源,避免内存泄漏。

3. 布局优化

  • 使用轻量级布局:选择最有效的布局方式,避免嵌套过多的布局容器,减少重绘和布局计算。
  • 响应式设计:确保布局在不同屏幕尺寸和分辨率上都能良好适应,减少布局调整的开销。

4. 数据库操作

  • 优化查询:使用索引,减少不必要的数据库查询,批量处理数据插入和更新。
  • 数据缓存:使用内存缓存或本地缓存存储频繁访问的数据,减少数据库访问次数。

5. 网络请求

  • 减少网络往返次数:合并请求,使用HTTP/2或更高版本协议,减少DNS解析和握手时间。
  • 压缩传输数据:使用GZIP等压缩技术减少数据传输量。
  • 缓存网络数据:合理设置缓存策略,减少不必要的网络请求。

6. 内存和CPU使用

  • 监测和分析:使用HarmonyOS提供的性能分析工具,如DevEco Studio中的性能分析器,监测应用的内存和CPU使用情况。
  • 减少内存占用:避免使用大数组和大对象,及时释放不再使用的资源。
  • 优化CPU使用:避免在主线程执行耗时操作,使用Worker线程或异步任务处理复杂计算。

7. 性能测试

  • 基准测试:定期进行性能基准测试,比较不同版本之间的性能差异。
  • 压力测试:模拟高负载场景,测试应用的稳定性和性能瓶颈。
  • 用户体验测试:确保应用在各种设备上都有良好的响应时间和流畅度。

8. 更新和迭代

  • 持续优化:性能优化是一个持续的过程,随着应用的发展和硬件的进步,定期审查和优化代码。
  • 用户反馈:关注用户反馈,及时修复性能相关的问题。

五、介绍下鸿蒙操作系统的安全机制

  1. 微内核架构: HarmonyOS采用了微内核架构,这有助于提高系统安全性。微内核架构意味着核心服务和功能被最小化,减少了攻击面,增强了系统整体的安全性。

  2. 权限管理: 系统提供了一套严格的权限管理系统,应用程序需要明确声明所需权限,并且用户可以控制和管理这些权限。权限管理变得更加透明,用户可以查看哪些应用访问了特定权限,以及访问的频率。

  3. 加密技术: HarmonyOS使用了加密技术来保护数据,包括网络传输加密和本地数据加密,确保数据在传输和存储过程中不易被窃取或篡改。

  4. 沙箱机制: 应用程序运行在沙箱环境中,这意味着它们被隔离在自己的运行空间内,不能随意访问其他应用或系统资源,限制了恶意软件的扩散能力。

  5. 分布式多端协同身份认证: 鸿蒙系统通过分布式多端协同身份认证确保只有合法用户才能访问数据,使用生物特征、设备信息等多种因素进行身份验证。

  6. 可信运行环境: 系统在设备上构建了可信运行环境,使用硬件级别的安全隔离和加密技术,保护用户数据在设备上的安全存储和处理。

  7. 数据分类分级管理: 对数据进行分类分级,根据数据的敏感性和重要性采取不同的保护措施,确保数据的正确使用。

  8. 启动可信根: HarmonyOS设备采用了PKI(公钥基础设施)和启动可信根技术,确保设备从启动阶段就开始处于安全状态。

  9. 元编程: 利用静态元编程技术,在源代码级别进行安全检查,提高应用的私密性和安全性。

  10. 智能风险检测和预警: 实施智能风险检测和预警机制,及时发现并应对潜在的安全威胁。

  11. 无root概念: 微内核设计没有传统的root概念,这增加了系统的安全性,因为不存在超级用户权限被滥用的风险。

  12. 代码质量: HarmonyOS的代码行数较少,理论上错误率低,这也有助于提升系统的安全性。

六、介绍下你自己在鸿蒙应用开发中确保应用安全性所做的措施

1. 遵守安全编码规范

  • 输入验证:确保所有输入都经过验证和清理,防止SQL注入、XSS攻击等。
  • 安全配置:避免硬编码敏感信息,如密码、密钥等,使用环境变量或安全存储。
  • 异常处理:妥善处理异常,避免泄露敏感信息,如数据库结构、系统路径等。
  • 代码审计:定期进行代码审计,使用静态代码分析工具查找潜在的安全漏洞。

2. 权限管理

  • 最小权限原则:只请求应用真正需要的权限,避免过度权限请求,减少潜在的安全风险。
  • 动态权限请求:在运行时向用户请求权限,解释为何需要该权限,增加透明度。

3. 数据安全

  • 加密:对敏感数据进行加密存储和传输,使用标准的加密算法,如AES、RSA。
  • 安全存储:利用HarmonyOS提供的安全存储API,如KeyStore,存储敏感信息,如密码、密钥。
  • 数据备份与恢复:确保有安全的数据备份和恢复机制,防止数据丢失。

4. 网络通信安全

  • HTTPS:使用HTTPS协议,确保数据传输过程中的安全,防止中间人攻击。
  • SSL/TLS:确保网络通信使用最新的SSL/TLS协议版本,关闭不安全的协议版本。

5. 用户隐私保护

  • 隐私政策:制定并公开隐私政策,明确告知用户数据的收集、使用和分享方式。
  • GDPR和CCPA合规:确保应用符合全球范围内的数据保护法规,如欧洲的GDPR和美国加州的CCPA。

6. 安全测试

  • 渗透测试:定期进行渗透测试,模拟黑客攻击,找出安全漏洞。
  • 单元测试:编写单元测试,包括安全相关的测试用例,确保代码的健壮性。
  • 集成测试:测试应用在不同设备和网络环境下的安全性。

7. 持续监控与响应

  • 日志记录:记录关键的操作和异常,便于安全事件的追踪和分析。
  • 安全事件响应计划:建立安全事件响应团队和流程,快速响应安全事件,减少损失。

8. 教育与培训

  • 安全意识培训:定期对开发团队进行安全意识和技能培训,提高团队的整体安全水平。

9. 合规性

  • 遵循HarmonyOS开发指南:严格遵守HarmonyOS的开发规范和安全指南,确保应用符合平台的安全要求。

七、介绍下鸿蒙APP的实际启动流程  

1. 用户操作

当用户在设备上点击应用图标时,系统接收到用户的触摸事件。

2. 系统响应

  • 事件分发:系统框架接收到触摸事件后,会识别出用户点击的是哪个图标,并将事件传递给Launcher(启动器)。
  • Intent解析:Launcher解析用户的意图(Intent),确定用户想要启动的是哪个应用的哪个Ability(功能单元)。

3. 启动Ability

  • 创建AbilityTaskManagerService:Launcher向系统AbilityTaskManagerService发送启动Ability的请求。
  • 调度与分配:AbilityTaskManagerService负责调度和管理应用的生命周期,它会检查请求的Ability是否已经在运行,如果不在运行,则创建一个新的Ability实例。
  • 初始化Ability:AbilityTaskManagerService创建Ability实例后,会调用Ability的 onStart() 方法,开始Ability的初始化过程。

4. 进程创建

  • 进程分配:如果需要,系统会为该Ability分配或创建一个新的进程。HarmonyOS采用按需启动的原则,只有当应用的Ability真正需要运行时,才会为其创建进程。
  • 加载代码:进程创建后,系统会加载应用的代码和资源到该进程中。如果是第一次运行,系统还需要解析和编译应用的资源文件。

5. 执行Application

  • 初始化Application:在Ability启动之前,如果应用定义了Application类,系统会先调用Application的 onCreate() 方法,进行全局的初始化工作。

6. Ability完全启动

  • 调用Ability生命周期方法:系统继续调用Ability的 onActive() 方法,此时Ability完全可见并可与用户交互。
  • 绘制UI:Ability的UI开始绘制,系统调用UI组件的绘制方法,将界面呈现到屏幕上。

7. 完成启动

  • 用户交互:一旦UI绘制完成,应用就进入了运行状态,可以接收和响应用户的输入事件。

8. 资源回收与管理

  • 进程管理:在应用不活跃或系统资源紧张时,系统会根据策略回收进程资源,释放不再需要的内存。

八、介绍下鸿蒙卡片的实际启动流程 

鸿蒙(HarmonyOS)中的卡片是一种轻量级的UI组件,用于展示简洁的信息和执行简单的任务,它们可以独立于应用程序主界面存在,并且能够在不同的设备上显示。卡片启动流程涉及以下几个主要步骤:

1. 用户触发

  • 用户可能通过多种方式触发卡片的加载,例如:
    • 在设备的主屏幕上长按某个应用图标来唤出卡片。
    • 通过控制中心或通知中心访问卡片。
    • 从另一个应用或卡片中跳转至目标卡片。

2. Intent解析

  • 当用户触发卡片加载时,系统解析对应的Intent,这个Intent包含了卡片的相关信息,如卡片所属的应用包名、卡片类型等。

3. 创建AbilitySlice

  • HarmonyOS中的卡片是基于AbilitySlice构建的,因此系统会创建一个对应的AbilitySlice实例。
  • AbilitySlice是HarmonyOS中用于构建用户界面的基本单元,它可以看作是Android中Activity的一部分功能。

4. 初始化卡片

  • 系统调用卡片对应的AbilitySlice的 onCreate() 方法,开始初始化过程。
  • 在此阶段,卡片可以加载必要的数据和资源,设置其布局和样式。

5. 绘制卡片

  • 卡片的UI开始绘制,系统调用UI组件的绘制方法,将界面呈现到屏幕上。
  • 卡片通常包含简短的信息和控件,如按钮、滑块等,用于快速操作。

6. 卡片激活

  • 系统调用AbilitySlice的 onActive() 方法,这表明卡片已经准备好与用户交互。
  • 在此状态下,卡片可以响应用户事件,如点击或滑动。

7. 更新与刷新

  • 卡片可以定期更新其内容,以反映最新的信息,这通常是通过后台服务或定时任务实现的。
  • 用户也可以手动刷新卡片,以便获取最新数据。

8. 卡片销毁

  • 当用户离开卡片或者系统资源紧张时,卡片可能会被销毁。
  • 系统调用AbilitySlice 的 onInactive() 和 onDestroy() 方法来释放资源和清理状态。
  • 12
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值