IT评测·应用市场-qidao123.com

标题: 鸿蒙NEXT开辟-面试题库 [打印本页]

作者: 石小疯    时间: 2025-3-11 10:31
标题: 鸿蒙NEXT开辟-面试题库
 注意:博主有个鸿蒙专栏,里面从上到下有关于鸿蒙next的教学文档,各人感兴趣可以学习下
如果各人以为博主文章写的好的话,可以点下关注,博主会一直更新鸿蒙next相关知识
目录
1. 简历模板
2. 面试题
2.1 鸿蒙和安卓和IOS的区别
2.2 HarmonyOS应用打包后的文件扩展名是?
2.3  怎样举行数据持久化?
2.4 鸿蒙简单先容和发展进程
2.5 鸿蒙利用网络资源的时候,需要申请什么权限
2.6 父子组件怎样通信
2.6.1 @Prop装饰器:父子单向同步
2.6.2 @Link装饰器:父子双向同步
2.6.3 @Provide和@Consume装饰器:与后代组件双向同步
2.6.4 @Observed和@ObjectLink装饰器:嵌套类对象属性变化
2.7 UIAbility生命周期
2.8 页面和自定义组件生命周期
 2.9 自定义组件的创建和渲染流程
2.10 UiAbility页面启动的方式有哪些?
2.11 常用的修饰符有哪些先容一下
2.12 页面栈最大容量是多少
2.13 路由模式有几种
2.14 怎样设置沉浸式效果
2.15 兄弟组件怎样通信
2.16 Navigation组件跳转和router跳转有什么区别
2.17 ArkUI框架有哪些特点
2.18 跨设备通信的方式有哪些
2.19 HarmonyOS中的权限管理模型是怎样的
2.20 ArkTS基本先容
2.21 模块怎样导出导入的
2.22 说一下你做的这个项目,开辟鸿蒙项目标流程是什么
2.23 鸿蒙的系统能力你用过哪些,简单讲一下
2.24 你项目中的权限是怎样管理的
2.24 H5和原生是怎么通信的
2.26 鸿蒙云服务和微信小步伐的区别是什么
2.27 鸿蒙的革新机制是怎么样的,多层嵌套时,是从build开始革新吗
2.28 说一下全局存储状态用哪些方式
2.29 你在项目中用过线程通信吗,线程是怎么举行通信的?
2.30 你在项目中利用首选项主要用来做什么
2.31 组件通信的方式有哪些
2.32 弹窗UI是怎么在页面UI中利用的
2.33 Builder和BuilderParams的区别
2.34 对于一些公共的样式你是怎么做的?有没有什么优化的方式
2.35 共享库之间怎么举行页面跳转
2.36 websocker用过吗?说说你在项目中怎么用的
2.37 项目中有效到多线程嘛,具体说一下多线程的作用,怎样利用的
2.38 什么是鸿蒙应用签名
2.39  怎样引入本地的web页面?
2.40 @Provide和@Consume的利用中,消费者修改了值,提供者那边会变化吗?
2.41 鸿蒙客户端怎么实现长登陆的;再说说token的失效后是如那边理的?


1. 简历模板


鸿蒙next出来的时间没那么长,企业担当能力也基本不是要求纯鸿蒙开辟的,一般正常是安卓+鸿蒙大概前端+鸿蒙大概Java+鸿蒙,各人最好不要单独写鸿蒙技能,容易简历被筛选掉

示例


2. 面试题


2.1 鸿蒙和安卓和IOS的区别

HarmonyOS 是华为开辟的一个开源、分布式的操作系统。它设计用于多种设备,包括智能手机、平板电脑、智能电视和物联网设备。与Android和iOS的主要区别在于:


2.2 HarmonyOS应用打包后的文件扩展名是?

打包后的文件扩展名为.hap(HarmonyOS Ability Package),这是HarmonyOS应用的标准包格式

2.3  怎样举行数据持久化?


2.4 鸿蒙简单先容和发展进程

HarmonyOS 是新一代的智能终端操作系统,为不同设备的智能化、互联与协同提供了同一的语言。带来简便,流畅,连续,安全可靠的全场景交互体验。
鸿蒙操作系统发展进程


2.5 鸿蒙利用网络资源的时候,需要申请什么权限

利用网络资源时,需要申请权限ohos.permission.INTERNET
在module.json5文件中加上(也就是在module下面加上requestPermissions)
  1. {
  2.   "module": {
  3.     "name": "entry",
  4.     "type": "entry",
  5.     "description": "$string:module_desc",
  6.     "mainElement": "EntryAbility",
  7.     "deviceTypes": [
  8.       "phone",
  9.       "tablet",
  10.       "2in1"
  11.     ],
  12.     "requestPermissions":[
  13.       {
  14.         "name" : "ohos.permission.INTERNET",
  15.         "reason": "$string:reason",
  16.         "usedScene": {
  17.           "abilities": [
  18.             "FormAbility"
  19.           ],
  20.           "when":"inuse"
  21.         }
  22.       }
  23.     ],
复制代码

2.6 父子组件怎样通信


2.6.1 @Prop装饰器:父子单向同步

@Prop装饰的变量可以和父组件创建单向的同步关系。@Prop装饰的变量是可变的,但是变化不会同步回其父组件。
2.6.2 @Link装饰器:父子双向同步

子组件中被@Link装饰的变量与其父组件中对应的数据源创建双向数据绑定。
2.6.3 @Provide和@Consume装饰器:与后代组件双向同步

@Provide和@Consume,应用于与后代组件的双向数据同步,应用于状态数据在多个层级之间通报的场景。
@Provide/@Consume装饰的状态变量有以下特性:

2.6.4 @Observed和@ObjectLink装饰器:嵌套类对象属性变化

上文所述的装饰器仅能观察到第一层的变化,但是在实际应用开辟中,应用会根据开辟需要,封装自己的数据模型。对于多层嵌套的环境,比如二维数组,大概数组项class,大概class的属性是class,他们的第二层的属性变化是无法观察到的。这就引出了@Observed/@ObjectLink装饰器。
@ObjectLink和@Observed类装饰器用于在涉及嵌套对象或数组的场景中举行双向数据同步:


2.7 UIAbility生命周期


Ability创建时回调,执行初始化业务逻辑操作。

Ability生命周期回调,在销毁时回调,执行资源清理等操作。

当WindowStage创建后调用。

当WindowStage销毁后调用。

Ability生命周期回调,当应用从后台转到前台时触发。

Ability生命周期回调,当应用从前台转到后台时触发

2.8 页面和自定义组件生命周期

在开始之前,我们先明确自定义组件和页面的关系:

页面生命周期,即被@Entry装饰的组件生命周期,提供以下生命周期接口:

组件生命周期,即一般用@Component装饰的自定义组件的生命周期,提供以下生命周期接口:


 2.9 自定义组件的创建和渲染流程

当应用在后台启动时,此时应用进程并没有销毁,所以仅需要执行onPageShow。

2.10 UiAbility页面启动的方式有哪些?

单例/多例

2.11 常用的修饰符有哪些先容一下



2.12 页面栈最大容量是多少

页面栈的最大容量是32个页面

2.13 路由模式有几种

路由提供了两种不同的跳转模式
1、Standard:无论之前是否添加过,一直添加到页面栈(默认)
2、Single:如果目标页面已存在,会将已有的最近同url页面移到栈顶(看环境利用)

2.14 怎样设置沉浸式效果


2.15 兄弟组件怎样通信

1、通过公共父组件通报
如果两个组件是同一个父组件的子组件,可以通过父组件来通报数据或事故。父组件可以作为中介,将一个子组件的数据或事故通报给另一个子组件。
2、利用全局状态管理
利用全局状态管理(如 AppStorage、LocalStorage)来存储共享数据。兄弟组件可以独立地读取和更新这个全局状态,从而实现通信。

2.16 Navigation组件跳转和router跳转有什么区别

1、Navigation:是路由容器组件,实用于模块内和跨模块的路由切换,一次开辟,多端部署场景。Router位于页面栈管理节点 stage 下面,不提供导航容器的概念。
2、Navigation和 Router都支持跳转传参,但 Router对象中暂不支持方法变量。
3、Navigation:支持清理指定路由,页面栈没有上限,可以无穷跳转。Router不支持清理指定路由且页面栈最大为32,页面栈到达32之后必须清除之后才气继承跳转。
4、Navigation:支持自定义转场动画和共享元素转场动画。 Router:仅支持简单自定义转场动画。
5、Navigation:支持通过 setInterception 方法设置路由拦截。Router:不支持路由拦截。
6、Navigation:支持沉浸式页面和模态嵌套路由。Router:不支持,需要通过窗口配置实现沉浸式页面

2.17 ArkUI框架有哪些特点


ArkUI框架是鸿蒙(HarmonyOS)中的一个重要组件框架,具有以下几个特点:
1、组件树布局 : ArkUI框架通过布局组件和基础组件构建界面形貌树(组件树),其中基础组件为叶子节点,布局组件为中间节点 。当用户举行交互时,会触发界面修改,通过重新渲染组件树来实现应用界面更新 。

2、数据与UI更新过程 : ArkUI框架的数据处置惩罚过程和UI更新过程是分开举行的。数据处置惩罚过程中,主要是对状态数据举行更新,并通过标脏过程确定布局最小影响范围,减少不须要的重新布局 。UI更新过程包括组件标脏、布局、测量和渲染等阶段 。

3、布局组件 : ArkUI框架提供了多种布局组件,如Row、Column、Stack、Flex、List、Grid、RelativeContainer等。开辟者可以根据场景选择合适的布局组件,以优化性能 。例如,线性布局(Row、Column)实用于横向或纵向分列组件,而弹性布局(Flex)实用于需要弹性分列的场景。

4、性能优化 : ArkUI框架在性能优化方面做了很多工作。例如,通过减少不须要的组件嵌套和节点数量,降低布局测算的复杂度,从而提升性能。开辟者可以利用DevEco Studio提供的工具(如Profiler和ArkUI Inspector)来查看性能瓶颈和组件树布局,进一步优化应用性能。

5、状态管理 : ArkUI框架支持状态管理最佳实践,通过有效的状态管理减少无效的UI更新操作,提升性能。例如,在状态变量变化导致UI更新时,只更新部分组件,而不是重新渲染整个界面。

2.18 跨设备通信的方式有哪些


HarmonyOS支持多种跨设备通信方式,包括:

2.19 HarmonyOS中的权限管理模型是怎样的



2.20 ArkTS基本先容

ArkTS是HarmonyOS优选的主力应用开辟语言。
ArkTS围绕应用开辟在TypeScript(简称TS)生态基础上做了进一步扩展,保持了TS的基本风格,同时通过规范定义强化开辟期静态查抄和分析,提升步伐执行稳定性和性能。
从API version 10开始,ArkTS进一步通过规范强化静态查抄和分析,对比标准TS的差异可以参考从TypeScript到ArkTS的适配规则:

ArkTS它是纯新的一门语言,它不是前端也不是TypeScript,它是TS的超集



2.21 模块怎样导出导入的

步伐可划分为多组编译单元或模块。
每个模块都有其自己的作用域,即,在模块中创建的任何声明(变量、函数、类等)在该模块之外都不可见,除非它们被显式导出。
与此相对,从另一个模块导出的变量、函数、类、接口等必须起首导入到模块中。
导出
可以利用关键字export导出顶层的声明。
导入
可以利用关键字import导入

2.22 说一下你做的这个项目,开辟鸿蒙项目标流程是什么



2.23 鸿蒙的系统能力你用过哪些,简单讲一下



2.24 你项目中的权限是怎样管理的



2.24 H5和原生是怎么通信的

鸿蒙原生和h5通信有大概两种方式
原生端可以通过javascriptProxy给h5页面注入可用的sdk应用方法聚集,在h5完成初始化后,可以直接调用原生的方法,这是h5调用原生
原生端也可以直接调用h5端的方法 runJavascript,在这个方法里面传入方法调用传参数就可以
需要注意的点: 如果原生端的sdk方法是个异步方法,在h5端无法及时得到结果,此时需要再用原生反调h5举行通报结果

2.26 鸿蒙云服务和微信小步伐的区别是什么

本质上很像,由于他们都遵循即用即走的模式,都可以免安装,轻量级的利用。
但是微信小步伐本质上是在微信的安卓架构/ios架构上做了一层代码框架的机制,也就是说本质上- 微信利用安卓/ios的开辟语言完成,小步伐是微信自创的一套小步伐的开辟语言-类似于Vue的MVVM的框架,然后微信举行了同一的代码编译和代码表明,终极实现如今的小步伐的效果
鸿蒙的元服务实现了代码大一统的效果,也就是开辟一个鸿蒙应用和鸿蒙元服务本质上都直接利用鸿蒙的arkTS和arkUI来举行,调用通用能力和api方式同等,而且把应用变成元服务变得非常简单,只需要加个参数即可

2.27 鸿蒙的革新机制是怎么样的,多层嵌套时,是从build开始革新吗

一个组件的渲染- aboutToAppear - build函数(构建UI视图)
当相应式数据发生变化 =》 builde的重新执行
全部的鸿蒙的相应式监测都只能监测到一层
多层嵌套时-执行的顺序 。洋葱圈模式- 一定时先最里面的组件渲染完毕,一定是最外层的组件最后渲染。
关于更新机制的问题
比较机制- 列表比较-ForEach-有三个参数, 第三个参数需要返回一个唯一的key, 如果不写,系统会自动帮我们天生一个函数 规则 index_JSON.stringfy(item) { a: 1, b: 2 } => { a: 2: b: 2 }
如果列表中key发生变化,更新机制直接销毁该组件,然后重新创建, 但是反之,你给的key如果没有发生变化,但是数据变化了,就会出现页面不更新征象。

2.28 说一下全局存储状态用哪些方式



2.29 你在项目中用过线程通信吗,线程是怎么举行通信的?

emitter和eventHub
都是基于事故总线的
区别是:
eventHub当前线程内通信
emitter是同一进程不同线程大概同一进程和同一线程也可以通信

2.30 你在项目中利用首选项主要用来做什么

存任何持久化的东西都可以,比如token,用户信息等。
首选项有长度限定 每一项的长度8192个字节

2.31 组件通信的方式有哪些

父传子
子传父
跨层
跨ability
跨页面

2.32 弹窗UI是怎么在页面UI中利用的

CustomtDialogController
创建子窗口的形式创建弹层
弹层
bindSheet 半层
bindContentCover 全层

2.33 Builder和BuilderParams的区别

Builder是当前组件的UI复用布局
BuilderParams是吸收父组件传入的UI复用布局, 传过来的范例是UI复用布局范例
Builder传值 想要相应式必须是对象,如果基础数据范例,不具备相应式

2.34 对于一些公共的样式你是怎么做的?有没有什么优化的方式



2.35 共享库之间怎么举行页面跳转



2.36 websocker用过吗?说说你在项目中怎么用的

主要用在发消息和接消息,用于客服模块的消息
用过,和前端用法是一样的
const socket = new WebSocket(url)
socket.on("connect", () => {
})
socket.on("message", () => {
})
socket.on("disconnect", () => {
})
socket.send()

2.37 项目中有效到多线程嘛,具体说一下多线程的作用,怎样利用的

用了,由于我们要提高性能。
自定义组件创建完成之后,在build函数执行之前,将先执行aboutToAppear()生命周期回调函数。此时若在该函数中执行耗时操作,将壅闭UI渲染,增加UI主线程负担。因此,应只管避免在自定义组件的生命周期内执行高耗时操作。在aboutToAppear()生命周期函数内建议只做当前组件的初始化逻辑,对于不需要等待结果的高耗时使命,可以利用多线程处置惩罚该使命,通过并发的方式避免主线程壅闭;也可以把耗时操作改为异步并发或延后处置惩罚,保证主线程优先处置惩罚组件绘制逻辑。


worker帮我们处置惩罚图片压缩处置惩罚完成之后再去执行其它使命

2.38 什么是鸿蒙应用签名

指纹-就是一堆证明当然项目可被agc识别并允许调试到设备的分析文件
p12
csr
ce
p7b

2.39  怎样引入本地的web页面?

web({ src: $rawfile("index.html"),controller: new weview.WebviewController() })
组件


2.40 @Provide和@Consume的利用中,消费者修改了值,提供者那边会变化吗?

当然会,由于都是双向的


2.41 鸿蒙客户端怎么实现长登陆的;再说说token的失效后是如那边理的?



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4