HarmonyOS 鸿蒙面试第一弹
鸿蒙面试第一弹答案持续更新中
1、自我先容
2、鸿蒙项目先容
3、你打仗鸿蒙多久了
4、项目给你,鸿蒙项目给你能独立完成吗?
5、装饰器有哪些
- @Component:用于定义可重用的UI组件。
- @Entry:用于标识页面的入口组件。
- @Reusable:实现组件复用,可以优化加载性能并减少应用卡顿。
- @Preview:用于预览器预览,与@Entry和@Component配合使用可在预览器上进行视图展示。
- @Observed(或@Observerd):与@ObjectLink装饰器联动,用于观察深层次的嵌套数据变化。
- @Require:用于校验构造传参。
- @BuilderParam 和 @Builder:自定义组件时,可只复用组件的逻辑,外部UI使用@BuilderParam传入。
- @State:用于标记状态信息,表示该属性会随时间推移而发生变化,并与组件的UI渲染相关联。
- @Prop:用于在子组件中定义那些需要从父组件接收的属性,建立单向同步关系。
- @Link:与其父组件中的数据源共享相同的值,实现双向数据同步。不可以设置默认值。
- @Provide 和 @Consume:用于祖先与后代组件的双向数据同步,实现跨层级传递。@Consume不可以设置默认值。
- @StorageProp 和 @StorageLink:应用级别的UI状态存储装饰器。
- @LocalStorageLink 和 @LocalStorageProp:页面级的UI状态存储装饰器。
- @Watch:用于监听状态变量的变化,当状态变量变化时,触发相应的回调函数。
- @Styles:用于定义并复用自定义样式,将多条样式设置提炼成一个方法。
- @Extend:在@Styles的基础上,用于扩展原生组件样式。
- @Concurrent:在使用TaskPool时,执行的并发函数需要使用该装饰器修饰。
- @Track:class对象的属性装饰器,当一个class对象是状态变量时,@Track装饰的属性发生变化,只会触发该属性关联的UI更新。
6、UIAbility、Page、Component生命周期 onCreate场景
[*]UIAbility生命周期
- Create:在应用加载过程中,UIAbility实例创建完成时触发。系统会调用onCreate()回调,在这个阶段,开发者可以进行页面初始化操作,例如变量定义、资源加载等。
- Foreground:UIAbility实例切换到前台时触发。对应的是onForeground()回调,在UI可见之前触发,开发者可以在这个回调中申请系统需要的资源。
- Background:UIAbility切换到后台时触发。也就是UIAbility的UI完全不可见之后,可以在onBackground()回调中释放资源或执行一些比较耗时的操作,如状态保存、停止定位功能等,以节省系统资源消耗。
- Destroy:在UIAbility实例销毁时触发。对应的回调是onDestroy(),开发者可以在这个回调中进行系统资源释放、数据保存等操作。
[*]Page生命周期(被@Entry装饰的组件)
- onPageShow:页面每次显示时触发一次,包括路由过程、应用进入前台等场景。这是进行页面数据加载、动画启动等操作的理想时机。
- onPageHide:页面每次隐藏时触发一次,包括路由过程、应用进入后台等场景。此时页面仍然保留在内存中,但不再对用户可见。开发者可以在此函数中暂停一些不必要的后台操作,以节省系统资源。
- onBackPress:当用户点击返回按钮或执行其他返回操作时触发。开发者可以在此函数中执行一些清理工作,如保存用户输入、确认用户是否真的要离开页面等。
[*]Component生命周期(被@Component装饰的自定义组件)
- aboutToAppear:组件即将出现时回调该接口。具体时机为在创建自定义组件的新实例后,在执行其build()函数之前执行。允许在aboutToAppear函数中改变状态变量,更改将在后续执行build()函数中生效。
- onDidBuild:组件build()函数执行完成之后回调该接口。但不建议在onDidBuild函数中更改状态变量、使用animateTo等功能,这可能会导致不稳定的UI表现。
- aboutToDisappear:在自定义组件析构销毁之前执行。不允许在aboutToDisappear函数中改变状态变量,特别是@Link变量的修改可能会导致应用程序行为不稳定。
7、API12、api9有什么区别
[*]这个题目我答的不是很好,也没有找到感觉很确切的答案,,各位年老有清楚的批评区发一下链接,感谢
9、状态存储有哪些
[*]这个答案在我博客里有详细写到
[*]HarmonyOS 状态管理-请跳转我的博客享用
10、长期化有哪些、怎样封装首选项
[*]长期化可以用 PersistentStorage 结合 appstorage实现
[*]还可以用 首选项 Preferences 实现
[*]关系型数据库 RelationalStore 和 键值型数据库 KV-Store
[*]首选项封装-请跳转我的博客享用
11、Web服务用过吗,如果实现H5传HM、HM传H5
[*]HarmonyOS webview - 请跳转我的博客享用
12、鸿蒙项目架构、har、hsp是否打仗过
13、Navigation 跨模块跳转
[*]navigation 拥有路由栈 navpathstack ,共同路由表实现跨模块跳转
[*]直接去官网看吧,讲的比较详细
14、FA模子、和Stage模子区别
[*]点击查看
15、怎样创建服务卡片、自己有做过吗
[*]HarmonyOS 卡片能力 - 请跳转我的博客享用
16、鸿蒙项目做过哪些优化
[*] 数据方面
[*]对于变量定义:能用常量就不使用@State,能使用@Prop就不消@Link
[*]对于全局数据:能用单例实现就不消@Provide 和 @Consume
[*]淘汰数据的频仍存取
[*]组件卸载的时候技能清理大数据,避免内存泄漏,实时释放内存
[*]在开发时留意淘汰循环,优化算法逻辑
[*] 页面性能
[*]淘汰组件嵌套。
[*]使用 LazyFor 优化长列表渲染,优化页面加载性能,避免一次性加载过多数据导致性能题目。
[*]合理使用@State
[*]合理使用组件复用可以显著提拔 UI 渲染性能,避免重复创建和销毁组件的开销。
[*] 资源类优化
[*]压缩静态资源并放到cdn上
[*]在app启动的时候可以延迟加载非关键资源。
17、鸿蒙特性
https://i-blog.csdnimg.cn/direct/6ffd015c4a01469683ffe0abcdf9f6b5.png
18、分层架构
[*]内核层:作为体系运行的基石,负责管理硬件资源、进程调度、内存管理、文件体系等底层操作
[*]体系服务层:提供体系基础服务,例如电源管理、网络管理、安全管理、图形显示、音频管理等。
[*]框架层:为应用提供开发框架和 API 接口,方便开发者快速开发应用。
[*]应用层:用户使用的各种应用步伐,例如欣赏器、音乐播放器、游戏等。
19、Navigation和router有什么区别?
[*] navigation 是路由容器,适用于模块内和跨模块的路由切换,一次开发多段摆设。router是页面栈管理节点,不提供导航容器的概念
[*] navigation和router跳转页面都可以携带参数,但是router中不支持方法变量
[*] navigation 可以打扫指定路由,页面栈没有上限。router 不支持清理路由栈,页面栈最大为32。
[*] navigation支持自定义转场动画和共享元素转场动画。router只支持简单自定义转场动画。
[*] navigation支持通过 setInterception方法设置路由拦截。router不支持路由拦截。
[*] navigation支持沉浸式页面和模态嵌套路由。router不支持,必要通过窗口配置实现沉浸式页面。
[*] 总之,Navigation 组件在功能上更具丰富性和机动性,特殊是在处理复杂的导航布局、动效和路由管理方面。而 Router 则提供了更基础的路由跳转功能,得当简单的路由需求。开发者可以根据应用的详细需求和设计选择最合适的路由方案
[*] 点击跳转官网查看详细区别
20、三层架构是什么
[*]点击跳转官网
[*]commons(公共能力层):用于存放公共基础能力聚集(如工具库、公共配置等)。commons层可编译成一个或多个HAR包或HSP包,只可以被products和features依赖,不可以反向依赖。
[*]features(基础特性层):开发页面、组件(HAR包或HSP包)。
[*]products(产品定制层):定义phone\pad两个ability,引用 features 的包和 commons 的包完成应勤奋能。
21、TaskPool是什么?TaskPool和Worker的区别是什么
[*]a. 任务池(TaskPool)作用是为应用步伐提供一个多线程的运行环境,降低整体资源的消耗、进步体系的整体性能,且您无需关心线程实例的生命周期。
[*]b. TaskPool和Worker均支持多线程并发能力。由于TaskPool的工作线程会绑定体系的调度优先级,而且支持负载均衡(主动扩缩容),而Worker必要开发者自行创建,存在创建耗时以及不支持设置调度优先级,故在性能方面使用TaskPool会优于Worker,因此大多数场景推荐使用TaskPool。
[*]c. TaskPool偏向独立任务维度,该任务在线程中实行,无需关注线程的生命周期,超长任务(大于3分钟且非长时任务)会被体系主动回收;而Worker偏向线程的维度,支持长时间占据线程实行,必要主动管理线程生命周期。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]