HarmonyOS大厂面试总结大全

发布时间:2026/7/28 9:35:16
HarmonyOS大厂面试总结大全 目录1、State装饰器响应式失效原因、如何解决纵纵2、如何复用样式3、Styles、Extend有什么区别4、Builder传参响应式失效如何解决5、如何实现全局Builder6、如何侦听State的数据变化7、文本组件内容溢出如何解决7、鸿蒙实现并发的几种方式8、prop和link的区别9、AppStorage/LocalStorage有什么区别10、StorageProp 和 StorageLink的区别11、为什么不建议使用 StorageLink 和 AppStorage 的双向同步机制实现事件通知12、PersistentStorage的用涂13、购物车逻辑为啥都放在index.ets中实现而不写成组件实现14、鸿蒙代码的组织架构15、公共层Common、Product产品配置和Feature功能模块详细介绍16、鸿蒙实现多线程处理的方式17、鸿蒙实现多线程之间的通信18、TaskPool任务池 vs Worker工作线程一、什么是 TaskPool二、基本使用流程1、State装饰器响应式失效原因、如何解决纵纵鸿蒙规定一维数据变化有响应式二维没有解决:修改一维数据或者通过 Observed、ObjectLink装饰一下 放到子组件中用或者入v2版2、如何复用样式通过装饰器 Styles、Extend3、Styles、Extend有什么区别Extend更强 支持font-size、font-weigth等等、并且可以传递参数4、Builder传参响应式失效如何解决可以不传直接组件状态或者引用传参(就是传对象)5、如何实现全局BuilderwrapBuilder函数把Builder包括导出就行6、如何侦听State的数据变化7、文本组件内容溢出如何解决其他方式自行参考官方文档。7、鸿蒙实现并发的几种方式8、prop和link的区别9、AppStorage/LocalStorage有什么区别10、StorageProp 和 StorageLink的区别11、为什么不建议使用 StorageLink 和 AppStorage 的双向同步机制实现事件通知解决方案12、PersistentStorage的用涂13、购物车逻辑为啥都放在index.ets中实现而不写成组件实现如果是大型项目建议做功能拆分14、鸿蒙代码的组织架构15、公共层Common、Product产品配置和Feature功能模块详细介绍16、鸿蒙实现多线程处理的方式17、鸿蒙实现多线程之间的通信18、TaskPool任务池 vs Worker工作线程一、什么是 TaskPoolTaskPool 是一个轻量级的并行任务调度框架你可以把它理解为鸿蒙版的“线程池”或“多线程编程工具”。它的设计目的是为了简化并发编程提高多核CPU的利用率同时保证线程安全。核心特点轻量高效相比传统线程创建和销毁的开销极小。自动调度系统自动负责任务的负载均衡和线程管理开发者无需关心底层线程。生命周期独立TaskPool 任务的执行不受 UIAbility 组件生命周期的制约即使页面进入后台任务也可以继续执行但有系统资源管控。用法简单使用 execute() 方法即可投递任务。二、基本使用流程使用 TaskPool 主要包括三个步骤1. 定义任务函数 → 2. 投递任务 → 3. 处理返回结果。示例 批量处理任务数组常用场景importtaskpoolfromohos.taskpool;//数据处理任务函数 function processItem(item:string):string{console.log(TaskPool:processing item ${item});//模拟耗时操作for(let i0;i1000000;i){//空循环模拟计算}returnProcessed:${item.toUpperCase()};}EntryComponentstruct BatchTaskExample{Stateresults:string[][];runBatchTasks(){const sourceData:string[][apple,banana,cherry,date];let tasks:taskpool.Task[][];//为每个数据项创建任务 sourceData.forEach((item:string){let tasknew taskpool.Task(processItem,item);tasks.push(task);});//批量执行所有任务 taskpool.execute(tasks).then((rets:string[]){this.resultsrets;console.log(TaskPool:allbatch tasks finished:${JSON.stringify(rets)});}).catch((err:Error){console.error(TaskPool:batch tasks error:${err.message});});}build(){Column({space:15}){Button(批量处理数据).onClick((){this.runBatchTasks();})ForEach(this.results,(item:string){Text(item).fontSize(16).margin(5)})}.padding(20)}}