鸿蒙原生开发 (ArkTS) 面试指南:50 题
基于 HarmonyOS NEXT (API 11/12+) 编写,聚焦于 ArkTS、ArkUI、Stage 模型及底层原理。
ArkTS 语言基础
-
什么是 ArkTS?它与 TS、JS 的关系?
- 答:ArkTS 是 TS 的超集(保留静态类型)+ UI 扩展(声明式语法),同时也是 TS 的子集(为了性能,禁止了
any、动态类型修改等)。
- 答:ArkTS 是 TS 的超集(保留静态类型)+ UI 扩展(声明式语法),同时也是 TS 的子集(为了性能,禁止了
-
为什么 ArkTS 禁止使用
any类型?- 答:为了支持 AOT(Ahead-Of-Time)预编译。确定类型后,编译器可以直接生成机器码,无需运行时进行类型推导,大幅提升启动和运行速度。
-
struct和class在 ArkTS 组件中的区别?- 答:自定义组件必须用
struct定义,不可继承;纯逻辑类可以用class。
- 答:自定义组件必须用
-
@Builder和@BuilderParam的作用?- 答:
@Builder用于提取 UI 逻辑,实现轻量级复用;@BuilderParam类似 React 的render props或 Vue 的slot,让父组件可以向子组件传递 UI 内容。
- 答:
-
@Styles和@Extend有什么区别?- 答:
@Styles是通用属性集合(如 .width, .height);@Extend是针对特定组件(如 Text, Button)的私有属性扩展(如 .fontColor)。
- 答:
-
ArkTS 中的
foreach和LazyForEach区别?- 答:
ForEach全量渲染,适合少量数据;LazyForEach按需渲染,配合IDataSource使用,长列表必用。
- 答:
-
什么是闭包(Closure)?在 ArkTS 中有什么坑?
- 答:坑点在于
this指向。在回调函数中访问组件状态时,建议使用箭头函数() => {}来绑定上下文。
- 答:坑点在于
-
接口(Interface)和类型别名(Type)怎么选?
- 答:定义对象结构优先用
Interface(支持合并);定义联合类型或基本类型别名用Type。
- 答:定义对象结构优先用
ArkUI 与 布局渲染
-
请列举 5 种常用布局容器?
- 答:
Column(垂直),Row(水平),Stack(层叠),Flex(弹性),RelativeContainer(相对).
- 答:
-
RelativeContainer解决了什么痛点?

