鸿蒙面试题一

265 阅读3分钟

3. **项目是只鸿蒙版本吗?**按情况定

当前仅支持鸿蒙OS,未来计划通过跨平台框架(如ArkUI-X)适配安卓/iOS。


4. 鸿蒙OS和安卓的区别?

  • 架构:鸿蒙为分布式微内核,安卓基于Linux宏内核。
  • 性能:鸿蒙更轻量,跨设备协同能力更强。
  • 生态:鸿蒙支持一次开发多端部署,安卓需针对性适配。

5. 鸿蒙为什么能实现多端部署?

  • 分布式架构:设备虚拟化技术统一资源池。
  • ArkTS语言:声明式UI适配多端布局。
  • 方舟编译器:跨平台字节码优化执行效率。

6. 多设备数据共享实现方式?

  • 分布式数据服务:数据对象(如DistributedDataObject)自动同步。
  • 统一账号体系:设备间通过华为账号鉴权共享数据。

7. 分布式数据共享技术细节?

  • KV数据模型:使用@ohos.data.distributedData管理键值对。
  • 数据同步策略:按需同步(如Wi-Fi下全量同步,移动网络增量同步)。

8. UIAbility启动模式

  • standard:默认模式,每次启动新实例。
  • singleton:单例模式,全局唯一实例。
  • specified:由开发者指定是否复用实例。

9. 启动模式使用场景

  • singleton:用于全局设置页,避免重复创建。
  • specified:特定场景如支付流程,复用同一实例保证数据连贯。

10. 组件/页面生命周期

  • 页面级onPageShow()onPageHide()onBackPress()
  • 组件级aboutToAppear()aboutToDisappear()

11. 组件生命周期中间阶段

  • 活跃状态onActive()(获取焦点)。
  • 后台状态onInactive()(失去焦点但未销毁)。

12. ArkTS与TS的区别

  • UI声明:ArkTS强制静态UI描述(@Component装饰器)。
  • 状态管理:内置@State@Link等装饰器简化状态同步。

13. 鸿蒙状态管理

  • 组件内状态@State管理私有状态。
  • 父子组件@Prop(单向)、@Link(双向)。
  • 全局状态AppStorageLocalStorage

14. 跨组件状态同步

  • @Provide/@Consume:跨层级组件状态共享。
  • EventHub:事件总线实现组件间通信。

15. 子组件变化通知父组件

  • 事件传递:子组件通过this.emit('eventName', data)触发,父组件监听处理。

16. 长列表局部渲染优化

  • LazyForEach:动态加载可视区域项,减少内存占用。
  • 复用机制:类似RecyclerView的ViewHolder复用策略。

17. 多线程并发实现

  • Worker:独立线程执行耗时任务,通过postMessage通信。
  • TaskPool:轻量级任务池,适合短期异步任务。

18. 多线程并发项目经验

  • 案例:图片批量压缩使用TaskPool分配任务,提升处理速度50%。

19. 视频列表压缩并发处理

  • 分片处理:将视频拆分为多个任务,通过TaskPool并行压缩。
  • 队列控制:限制并发数避免资源争抢。

20. Worker适用场景

  • 复杂计算:如大数据分析、图像处理。
  • 持久化任务:后台定位、实时数据同步。

21. 断点续传实现

  • 分块上传:文件切分为固定大小块,记录已上传块。
  • 持久化记录:使用Preferences存储上传进度,断网后恢复。

22. 第三方登录经验

  • 微信/谷歌登录:集成SDK获取Token,后端验证后生成JWT。

23. SDK无鸿蒙支持处理

  • 适配层:封装安卓SDK为HarmonyOS接口(需兼容模式)。
  • H5桥接:通过Web组件调用第三方H5登录页。

24. 鸿蒙实现QQ登录

  • WebView方案:内嵌QQ的H5登录页,通过JS桥接获取授权码。
  • 联合开发:联系腾讯提供HarmonyOS版SDK或REST API支持。