鸿蒙面试---1208

news/2024/12/12 3:38:22/
  1. HarmonyOS 三大技术理念
    • 分布式架构:HarmonyOS 的分布式架构使得设备之间能够无缝协同工作。例如,它允许用户在不同的智能设备(如手机、平板、智能手表等)之间共享数据和功能。比如,用户可以在手机上开始编辑文档,然后在平板上继续完成,数据能够实时同步,就像所有设备是一个整体一样。这种分布式能力打破了设备之间的界限,极大地提升了用户体验和设备的协同效率。
    • 原子化服务:原子化服务是 HarmonyOS 的一个创新理念。它可以将应用的功能拆分成一个个小的服务单元,这些服务单元可以独立运行并且能够被其他应用或服务调用。以一个智能家居控制应用为例,温度调节、灯光控制等功能可以被拆分成原子化服务,这些服务可以被不同的智能场景(如回家模式、睡眠模式)所调用,用户无需打开完整的应用,就能快速实现某个特定功能。
    • 一次开发,多端部署:这一理念大大提高了开发效率。开发者使用 HarmonyOS 开发工具和框架,通过一套代码就可以适配多种不同类型的设备。例如,一个简单的新闻阅读应用,开发者只需要编写一次代码,就可以将其部署到手机、智能手表等不同尺寸屏幕和硬件资源的设备上,系统会根据设备的特性自动适配界面和性能,减少了开发的工作量和成本。
  2. HarmonyOS 生态下应用安全核心理念
    • 硬件安全基础:HarmonyOS 从硬件层面就开始构建安全体系。它利用设备芯片的安全特性,如可信执行环境(TEE),确保在最底层的数据和操作是安全的。例如,在处理敏感数据(如支付信息、用户密码)时,这些数据会在可信执行环境中进行处理,防止外部恶意软件的访问。
    • 系统安全加固:在操作系统层面,通过多种安全机制进行加固。包括进程隔离,不同的应用和服务运行在相互隔离的进程空间中,防止一个应用对其他应用的非法访问。还有安全启动,确保系统在启动过程中不被篡改,只有经过验证的系统组件和应用才能被加载运行。
    • 应用安全防护:对于应用开发者,HarmonyOS 提供了一系列的安全防护措施。如应用签名机制,每个应用都需要经过签名才能在系统中安装和运行,这样可以保证应用的来源是可信的。同时,还提供了权限管理系统,应用在访问用户的敏感数据(如相机、麦克风、通讯录等)时,需要经过用户的授权,并且用户可以随时撤销授权。
  3. IDE 环境的搭建、编辑器的使用、预览器的使用、模拟器和真机的调试
    • IDE 环境搭建:以 DevEco Studio 为例,首先需要从官方网站下载适合 HarmonyOS 开发的版本,安装过程中要根据操作系统的要求进行配置,如安装相关的依赖库。安装完成后,需要配置 SDK 路径,以便能够使用 HarmonyOS 开发所需的各种工具和资源。
    • 编辑器使用:在 DevEco Studio 编辑器中,提供了丰富的代码编辑功能。例如,代码自动补全功能可以帮助开发者快速输入代码,提高编码效率。语法检查功能可以及时发现代码中的语法错误,并且在代码中以明显的标记提示。还可以通过代码导航功能,快速在项目的不同文件和代码块之间跳转。
    • 预览器使用:预览器允许开发者在开发过程中快速查看应用的界面效果。在编写界面代码(如 ArkUI)后,可以通过预览器实时查看界面的布局和样式。预览器能够模拟不同设备的屏幕尺寸和分辨率,帮助开发者及时调整界面设计,确保应用在各种设备上都能有良好的视觉效果。
    • 模拟器和真机调试:模拟器可以模拟 HarmonyOS 设备的运行环境。开发者可以在模拟器中运行应用,进行功能测试和调试。例如,在模拟器中可以模拟不同的网络环境、传感器数据等,以测试应用在各种场景下的性能。真机调试则是将开发的应用直接安装到真实的 HarmonyOS 设备上进行测试。这样可以更真实地体验应用的性能和功能,发现一些在模拟器中无法发现的问题,如设备硬件兼容性问题。
  4. ArkTS 基础语法,ArkUI 的基本概念、两种开发范式(声明式开发熟悉,类 Web 开发了解),两种应用模型(Stage 模型。FA 模型)
    • ArkTS 基础语法:ArkTS 是 HarmonyOS 的开发语言,它基于 TypeScript,具有类型安全的特点。例如,在定义变量时需要明确变量的类型,这有助于减少代码中的错误。它还支持面向对象编程的特性,如类、继承、接口等。在语法结构上,和传统的编程语言类似,有条件语句(if - else)、循环语句(for、while)等,用于实现不同的逻辑控制。
    • ArkUI 基本概念:ArkUI 是 HarmonyOS 的用户界面开发框架。它的核心目标是帮助开发者快速构建高效、美观的用户界面。ArkUI 采用了组件化的开发方式,开发者可以通过组合各种系统提供的组件(如文本组件、按钮组件等)来构建复杂的界面。
    • 声明式开发范式:声明式开发是 ArkUI 的主要开发范式。在这种范式下,开发者主要关注界面 “是什么”,而不是 “怎么做”。例如,在构建一个界面包含一个按钮和一段文字时,开发者只需要声明界面中有这个按钮和文字,以及它们的属性(如文字内容、按钮样式等),系统会自动根据这些声明来渲染界面。这种方式使得界面开发更加简洁、高效,代码的可读性也更强。
    • 类 Web 开发范式(了解):类 Web 开发范式在一定程度上借鉴了 Web 开发的思路。它和声明式开发有一些相似之处,但在语法和开发方式上可能更接近传统的 Web 开发。例如,在布局方式上可能会采用类似 CSS 的样式设置方法,通过选择器来选择元素并设置其样式。
    • Stage 模型和 FA 模型
      • Stage 模型:Stage 模型是 HarmonyOS 的一种应用模型,它更强调应用的独立运行和资源管理。在 Stage 模型下,应用具有自己独立的运行空间和生命周期管理。应用的组件和功能模块之间的通信更加规范化,通过特定的接口和机制进行。这种模型适合构建复杂的、功能完整的应用,能够更好地利用设备资源。
      • FA 模型(了解):FA(Feature Ability)模型是 HarmonyOS 的另一种应用模型,主要用于快速开发简单的功能模块。它相对来说更轻量级,组件之间的连接和交互方式比较灵活。通常用于开发一些原子化服务或者简单的应用功能扩展。
  5. 声明式 UI 语法、布局结构、常用的系统组件(图片、文本显示、文本输入、按钮等)
    • 声明式 UI 语法:在声明式 UI 中,使用类似于 HTML 标签的语法来构建界面。例如,要创建一个按钮,可以使用Button()函数来声明,并且可以在函数参数中设置按钮的属性,如文本内容{text: '点击我'}、样式{style: {width: '100px', height: '50px'}}等。对于文本显示组件,可以使用Text()函数,同样可以设置文本内容、字体大小、颜色等属性。
    • 布局结构:HarmonyOS 的声明式 UI 支持多种布局方式。常见的有线性布局(类似于 Android 中的 LinearLayout),可以通过设置组件的排列方向(水平或垂直)来布局组件。还有弹性布局(类似于 CSS 中的 Flexbox),可以根据组件的权重来分配空间。例如,在一个水平线性布局中,有两个按钮,通过设置不同的宽度权重,可以让一个按钮占据更多的空间。
    • 常用系统组件
      • 图片组件:用于显示图片,开发者可以通过设置图片的路径来加载本地或网络图片。并且可以设置图片的缩放模式(如按比例缩放、填充整个容器等)、裁剪方式等属性,以满足不同的视觉需求。
      • 文本显示组件:除了设置基本的文本内容外,还可以设置字体样式(如字体粗细、斜体等)、对齐方式(左对齐、居中对齐、右对齐)、行间距等属性,使文本在界面上呈现出更好的视觉效果。
      • 文本输入组件:提供用户输入文本的功能。可以设置输入框的类型(如普通文本输入、密码输入等)、最大输入长度、提示文字等属性。并且可以监听用户的输入事件,当用户输入内容后,能够及时获取输入的数据并进行处理。
      • 按钮组件:按钮是实现用户交互的重要组件。除了设置按钮的文本内容和样式外,还可以设置按钮的点击事件。当用户点击按钮时,可以触发相应的操作,如打开新的页面、执行某个计算任务、发送网络请求等。
  6. 应用程序框架基础、Stage 模型应用程序包结构
    • 应用程序框架基础:HarmonyOS 的应用程序框架提供了应用运行的基础支持。它包括了应用的启动和停止机制、组件的加载和管理、资源的分配等功能。例如,当用户点击应用图标启动应用时,应用程序框架会负责加载应用的主组件,并且根据应用的配置文件启动相应的生命周期流程。
    • Stage 模型应用程序包结构:在 Stage 模型下,应用程序包通常包含了多个模块。有应用的主模块,负责应用的整体启动和核心功能展示。还有一些资源模块,包含了应用所需的图片、音频、文字等资源。此外,还有配置文件模块,用于配置应用的属性(如应用名称、版本号、权限要求等)和组件之间的通信接口等信息。
  7. UIAbility 组件的生命周期、启动模式、基本用法、数据同步,以及设备内的组件通信
    • 生命周期:UIAbility 组件具有完整的生命周期,包括创建(onCreate)、启动(onStart)、恢复(onResume)、暂停(onPause)、停止(onStop)和销毁(onDestroy)等阶段。例如,当应用启动时,UIAbility 组件会经历 onCreate 和 onStart 阶段,在这两个阶段可以进行一些初始化操作,如加载界面资源、初始化数据等。当应用切换到后台时,会经历 onPause 和 onStop 阶段,在这些阶段可以进行资源的释放和数据的保存。
    • 启动模式:UIAbility 组件有多种启动模式,如标准模式、单实例模式等。标准模式下,每次启动 UIAbility 组件都会创建一个新的实例。而单实例模式下,整个应用生命周期内只有一个该组件的实例存在。例如,对于一些全局配置的页面,采用单实例模式可以保证数据的一致性和避免资源浪费。
    • 基本用法:通过继承 UIAbility 类来创建自己的组件。在组件内部,可以通过重写生命周期方法来实现自己的逻辑。例如,在 onCreate 方法中可以初始化一些数据和组件,在 onStart 方法中可以启动一些动画或者网络请求等。
    • 数据同步:在不同的 UIAbility 组件之间或者同一组件的不同生命周期阶段,可能需要进行数据同步。可以通过共享数据对象或者使用数据库等方式来实现数据同步。例如,在一个购物应用中,购物车数据可能需要在多个页面(UIAbility 组件)之间同步,这时可以通过一个全局的共享数据对象来存储和更新购物车数据。
    • 设备内组件通信:在同一设备内,不同的 UIAbility 组件之间可以通过事件总线或者接口调用等方式进行通信。例如,一个组件可以发送一个事件(如更新数据事件),其他感兴趣的组件可以监听这个事件并做出相应的反应。或者一个组件可以调用另一个组件的公开接口来获取数据或者执行某个操作。
  8. 高级容器组件,例如 List、Swiper、Grid、Tab、Navigation 等组件
    • List 组件:List 组件用于展示一组数据列表。例如,在一个新闻应用中,可以使用 List 组件来展示新闻列表。开发者可以自定义列表项的样式和内容,并且可以根据数据的变化动态更新列表。List 组件还支持滚动功能,方便用户浏览大量的数据。
    • Swiper 组件:Swiper 组件主要用于实现页面滑动切换效果。比如在一个图片展示应用中,用户可以通过左右滑动来查看不同的图片。Swiper 组件可以设置滑动的方向、自动滑动的间隔时间、滑动的动画效果等属性,增强用户的视觉体验。
    • Grid 组件:Grid 组件用于以网格的形式展示数据。例如,在一个商品展示应用中,可以使用 Grid 组件将商品以网格的形式排列,方便用户查看和比较。开发者可以设置网格的行数和列数、每个网格单元的样式等属性。
    • Tab 组件:Tab 组件用于创建选项卡式的界面。例如,在一个多功能应用中,不同的功能模块可以分别放置在不同的选项卡下。用户可以通过点击选项卡来切换不同的功能模块。Tab 组件可以设置选项卡的标题、样式、选中状态等属性。
    • Navigation 组件:Navigation 组件用于实现页面导航功能。它可以帮助用户在不同的页面之间进行跳转。例如,在一个多层级的应用中,Navigation 组件可以管理页面的栈,当用户返回上一层级页面时,可以正确地恢复页面状态。
  9. HTTP 网络请求,了解 RCP 网络请求,能封装 Axios 请求
    • HTTP 网络请求:在 HarmonyOS 开发中,通过 HTTP 协议进行网络请求是获取数据的重要方式。可以使用系统提供的网络请求库或者第三方库(如 Axios)来发送 HTTP 请求。例如,在一个天气应用中,通过向天气服务提供商的服务器发送 HTTP 请求,获取天气数据并展示给用户。
    • RCP 网络请求(了解):RCP(Remote Procedure Call)网络请求是一种远程过程调用的网络通信方式。它允许在不同的进程或者设备之间进行类似于本地函数调用的通信。在 HarmonyOS 生态中,这种方式可以用于设备之间的协同通信,例如在分布式应用场景下,不同设备之间通过 RCP 进行数据交换和功能调用。
    • 封装 Axios 请求:Axios 是一个流行的用于发送 HTTP 请求的 JavaScript 库。在 HarmonyOS 开发中,为了方便使用和管理网络请求,可以对 Axios 进行封装。例如,封装一个函数用于发送 GET 请求,在函数内部可以设置请求的 URL、参数、请求头信息等,并且可以对请求的响应进行统一的处理,如错误处理、数据解析等。
  10. 用户的首选项,可以通过用户首选项实现数据持久化,会封装持久化工具类,会使用 SQLite 轻型数据库,存储复杂关系数据类型
    • 用户首选项实现数据持久化:HarmonyOS 提供了用户首选项(Preferences)功能,用于存储一些简单的用户配置信息。例如,用户的应用主题设置、字体大小偏好等信息可以存储在用户首选项中。通过简单的 API 操作,可以方便地读取和写入这些信息,并且这些信息在应用重新启动后仍然可以获取到。
    • 封装持久化工具类:为了更好地管理数据持久化操作,可以封装一个持久化工具类。在这个工具类中,可以封装一些常用的操作方法,如保存数据、读取数据、删除数据等。这样可以提高代码的复用性和可维护性。例如,在一个具有多个页面都需要访问用户首选项的应用中,通过使用封装的工具类,可以统一管理数据的读写操作。
    • SQLite 轻型数据库使用:对于存储复杂关系数据类型,SQLite 轻型数据库是一个很好的选择。例如,在一个学生管理应用中,学生的个人信息(姓名、年龄等)和成绩信息(各科成绩)之间存在复杂的关系,可以使用 SQLite 数据库来存储这些数据。通过使用 SQL 的查询语句,可以方便地获取、更新和删除数据。在 HarmonyOS 开发中,可以使用系统提供的 SQLite 相关的 API 来操作数据库。
  11. 使用动画,以及页面转场
    • 动画使用:HarmonyOS 提供了丰富的动画支持。可以通过定义动画的属性(如动画的类型、持续时间、延迟时间等)来创建动画效果。例如,对于一个按钮组件,可以创建一个缩放动画,当用户点击按钮时,按钮会有一个缩放的视觉效果。动画可以应用于各种组件,包括图片、文本等,用于增强界面的交互性和趣味性。
    • 页面转场:页面转场是指在不同页面之间切换时的过渡效果。例如,在一个应用中,从首页切换到详情页时,可以设置一个淡入淡出的页面转场效果。HarmonyOS 提供了多种页面转场方式,如滑动转场、缩放转场等。通过在页面导航时设置相应的转场动画,可以提升用户的视觉体验。
  12. Web 组件的构建与使用
    • 构建 Web 组件:在 HarmonyOS 开发中,可以构建 Web 组件来嵌入 Web 内容。例如,可以使用系统提供的 WebView 组件来加载网页。在构建 Web 组件时,需要设置一些基本的属性,如 Web 页面的 URL、是否允许 JavaScript 执行等。并且可以通过相关的接口来控制 Web 组件的行为,如加载、暂停、重新加载等操作。
    • 使用 Web 组件:Web 组件可以用于多种场景。例如,在一个应用中,可以使用 Web 组件来展示一些在线文档、新闻网页或者嵌入一些第三方的 Web 服务。通过与本地组件的结合,可以创建出更加丰富的应用体验。例如,在 Web 组件旁边放置一个本地的导航按钮,方便用户在本地应用和 Web 内容之间进行切换。
  13. 应用通知
    • 通知创建:HarmonyOS 允许开发者创建应用通知。可以设置通知的标题、内容、图标等基本属性。例如,在一个消息应用中,当收到新消息时,可以创建一个通知,显示消息的发送者和消息的简短内容,提醒用户查看消息。
    • 通知发送和管理:通过系统提供的通知管理 API,可以将创建好的通知发送给用户。并且可以对通知进行管理,如设置通知的优先级、定时发送、重复发送等功能。还可以根据用户的操作

http://www.ppmy.cn/news/1554388.html

相关文章

如何解决压测过程中JMeter堆内存溢出问题

如何解决压测过程中JMeter堆内存溢出问题 背景一、为什么会堆内存溢出?二、解决堆内存溢出措施三、堆内存参数应该怎么调整?四、堆内存大小配置建议 背景 Windows环境下使用JMeter压测运行一段时间后,JMeter日志窗口报错“java.lang.OutOfMe…

优化移动端H5:常见问题与解决方案

移动端H5开发中的“坑”与解决方案 本文介绍了开发中遇到的几个关于移动端H5开发中的小问题,以及解决的方法。 一、iOS滑动不流畅问题 在iOS设备上,H5页面的滑动效果有时会出现不流畅的情况,特别是在页面高度超过一屏时。这通常是由于iOS的…

GO泛型

泛型是goSDK1.18版本之后才引入的新特性,即C中的模板。 为什么要有泛型? 我们现在要写一个两数相加的函数,相加的逻辑很简单,但是如果传入不同的类型,那么我们就需要再写一个函数,定义不同的参数类型&#…

2021高等代数【南昌大学】

证明多项式 f ( x ) = 1 + x + x 2 2 ! + ⋯ + x n n ! f(x) = 1 + x + \frac{x^2}{2!} + \cdots + \frac{x^n}{n!} f(x)=1+x+2!x2​+⋯+n!xn​ 无重根。f ( x ) − f ′ ( x ) = x n n ! f(x) - f(x) = \frac{x^n}{n!} f(x)−f′(x)=n!xn​ ( f ( x ) , f ′ ( x ) ) = ( f (…

【Unity高级】如何动态调整物体透明度

本文介绍了如何设置及动态调整物体的透明度。 一、手动设置的方法 我们先来看下如何手动设置物体的透明度。 物体的透明与否是通过材质来设置的。只有我们把具有透明度的材质指给物体的渲染器(Render),物体就被设置成相应的透明度了。 看一…

石头剪子布

石头剪子布 C语言实现C实现Java实现Python实现 💐The Begin💐点点关注,收藏不迷路💐 石头剪子布,是一种猜拳游戏。起源于中国,然后传到日本、朝鲜等地,随着亚欧贸易的不断发展它传到了欧洲&…

三、【docker】docker和docker-compose的常用命令

文章目录 一、docker常用命令1、镜像管理2、容器管理3、容器监控和调试4、网络管理5、数据卷管理6、系统维护7、实用组合命令8、常用技巧二、docker-compose常用命令1、基本命令2、构建相关3、运行维护4、常用组合命令5、实用参数 一、docker常用命令 1、镜像管理 # 查看本地…

力扣--LCR 177.撞色搭配

题目 整数数组 sockets 记录了一个袜子礼盒的颜色分布情况,其中 sockets[i] 表示该袜子的颜色编号。礼盒中除了一款撞色搭配的袜子,每种颜色的袜子均有两只。请设计一个程序,在时间复杂度 O(n),空间复杂度O(1) 内找到这双撞色搭配…