鸿蒙基础语言

一、ArkTS 语言基础(重中之重)

ArkTS 是鸿蒙应用的官方主力开发语言,它是 TypeScript 的超集

1. ArkTS 的起源与特点

  • 面试点:ArkTS 和 TypeScript/JavaScript 的关系?
  • 回答要点
    • ArkTS 基于 TypeScript,继承了 TS 的所有特性(静态类型、类、接口、泛型等)。
    • 鸿蒙对 TS 进行了扩展,主要是声明式UI状态管理的增强。
    • 核心特点:声明式UI、状态驱动、高性能。

2. 基础语法(必须熟练掌握)

  • 变量声明letconst 的区别。
  • 数据类型number, string, boolean, Array, Object, null, undefined。ArkTS 是强类型语言,理解类型注解的重要性。
    let name: string = "鸿蒙";
    let isDone: boolean = false;
    let list: number[] = [1, 2, 3];
    
  • 函数:如何定义函数,可选参数,默认参数,箭头函数。
    // 普通函数
    function greet(name: string): string {
      return `Hello, ${name}`;
    }
    // 箭头函数
    const add = (a: number, b: number): number => a + b;
    
  • 类与对象class, constructor, 属性,方法,继承(extends)。这是面向对象的基础。
    class Person {
      name: string;
      constructor(name: string) {
        this.name = name;
      }
      sayHello() {
        console.log(`Hello, I'm ${this.name}`);
      }
    }
    
  • 模块化:如何使用 importexport 来导入导出模块。

3. ArkTS 特有的核心特性(面试高频区)

a. 装饰器

装饰器是 ArkTS 中非常重要的语法,用于装饰类、结构体、方法、属性,赋予它们特定的能力。

  • @Entry:装饰页面的入口组件。
  • @Component:装饰自定义组件。必须掌握,每个UI组件都是一个被 @Component 装饰的 struct。
  • @State重中之重!
    • 面试点@State 装饰器的作用是什么?
    • 回答要点
      • 它装饰的变量是状态数据
      • 当状态数据发生变化时,会触发UI的自动更新(重新渲染)。
      • 这是数据驱动UI的核心体现。
      @Component
      struct MyComponent {
        @State count: number = 0; // count变化,UI自动更新
      
        build() {
          // UI描述
        }
      } // @State 只在鸿蒙/ArkTS组件内用, 不能跨组件
      
b. 状态管理

除了 @State,还有其他几个关键的状态管理装饰器,理解它们的区别和应用场景是面试的关键。

  • @State:组件内部的状态,仅在本组件内使用。
  • @Prop:子组件中,用于接收父组件传递过来的状态,并且是单向绑定。父组件变化会通知子组件,但子组件修改它不会影响父组件。
  • @Link:子组件中,用于与父组件双向绑定的状态。父子组件任何一方修改,都会同步到另一方。
  • @Provide@Consume:跨组件层级的状态共享,可以理解为“一对多”的提供和消费关系。

面试常考题@State, @Prop, @Link 的区别?请举例说明。


二、ArkUI 声明式开发范式

ArkUI 是鸿蒙的UI开发框架,采用声明式语法。

1. 基本概念

  • 面试点:声明式UI 和 命令式UI(如 Android 的 Java/Kotlin)的区别?
  • 回答要点
    • 命令式:手动用代码操作UI组件(findViewById, setText)。你需要“命令”UI每一步该怎么做。
    • 声明式:你只需要描述UI应该长什么样子(状态+视图),框架负责根据状态自动渲染和更新。当状态(如 @State 变量)改变时,UI自动更新。

2. 组件和构建函数

  • @Componentbuild() 函数:每个组件必须用 @Component 装饰,并且必须有一个 build() 函数。build() 函数中描述了组件的UI结构。
    @Component
    struct HelloComponent {
      build() {
        // 必须在build函数中描述UI
        Column() {
          Text('Hello World')
            .fontSize(30)
        }
      }
    }
    

3. 常用组件(必须会用的)

  • 布局组件Column(列),Row(行),Stack(堆叠),Flex(弹性布局),List(列表)。
  • 基础组件TextImageButtonTextInput

面试点:如何实现一个常见的布局,例如:顶部标题栏,中间可滚动列表,底部选项卡?


三、生命周期

了解组件的生命周期是应用开发的基础。

  • 页面生命周期onPageShow, onPageHide, onBackPress
  @Component
struct MainPage {
  onPageShow() {
    console.log('页面显示')
  }

  onPageHide() {
    console.log('页面隐藏')
  }

  onBackPress(): boolean {
    console.log('返回键被按下')
    // 返回 true 表示拦截返回,false 表示允许返回
    return false
  }

  build() {
    Column() {
      Text('页面内容')
    }
  }
}
  • 自定义组件生命周期aboutToAppear(组件即将出现时调用),aboutToDisappear(组件即将销毁时调用)。
@Component
struct MyCard {
  aboutToAppear() {
    // 组件刚显示时执行,比如请求数据、埋点
    console.log('组件出现')
  }

  aboutToDisappear() {
    // 组件销毁前执行,比如清理定时器、取消订阅
    console.log('组件销毁')
  }

  build() {
    // 组件内容
    Text('自定义卡片')
  }
}

面试点aboutToAppear 里适合做什么操作?(例如:初始化数据,请求网络)。


四、常用功能(展示综合能力)

  • 路由导航:如何使用 router 实现页面跳转、传参和返回。
  • 网络请求:知道如何使用 @ohos.net.http 模块发起 HTTP 请求。
  • 数据存储:了解轻量级存储 Preferences 的基本用法。

给初学者的面试准备建议

  1. 理解概念,而非死记硬背:重点理解“声明式”、“状态驱动”、“单向数据流”这些核心思想。
  2. 动手实践:在 DevEco Studio 中创建一个最简单的 “Hello World” 应用,然后逐步添加功能:
    • 做一个计数器(使用 @StateButton)。
    • 做一个待办事项列表(使用 @State, List, TextInput)。
    • 尝试组件拆分,使用 @Prop@Link 在父子组件间传递数据。
  3. 准备项目:哪怕是一个很小的、完整的项目(如笔记App、天气App),都能极大提升你的竞争力。在面试时,可以清晰地讲解你的代码结构和设计思路。
  4. 官方文档是你的最佳伴侣:遇到问题,首先查阅 鸿蒙开发者官方文档。里面的概念和示例都非常清晰。

模拟面试问题清单

  1. 请简单介绍一下 ArkTS。
  2. @State@Link 有什么区别?分别在什么场景下使用?
  3. 请解释一下 ArkUI 的声明式开发范式。
  4. 如何在鸿蒙应用中实现页面跳转?
  5. 当组件的状态数据发生变化时,UI是如何更新的?
  6. 你如何学习鸿蒙开发的?做过哪些练习或项目?
  7. (现场编码)请写出一个简单计数器的组件代码。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容