💡应聘技术问题
问题:"ArkTS 和 TypeScript 是什么关系?ArkUI 的声明式 UI 框架有什么特点?"
参考答案:ArkTS 是 HarmonyOS 在 TypeScript 基础上扩展出来的语言,保留了静态类型、类和装饰器这些 TS 特性,再针对鸿蒙的运行环境和渲染管线做了增强。写法像 TS,运行时跑在方舟编译器上。
ArkUI 走的是声明式范式,UI 从状态里推出来,不用手动改视图。组件用 struct 声明,@State、@Link、@Provide/@Consume 这些装饰器管状态绑定和跨组件共享,状态变了 UI 就自动 diff 重渲染。Flex、Grid、List、Swiper 这些容器组件拿过来就能搭页面,组件化和 React 那一套思路是通的。
问题:"Stage 模型下 Ability 的生命周期是什么样的?和 FA 模型有什么区别?"
参考答案:Stage 模型是鸿蒙现在主推的应用模型。UIAbility 的生命周期走 Create、Foreground、Background、Destroy 四段,加 WindowStage 的创建销毁,配合起来把页面"挂上去/摘下来"的过程拆得很清楚。Create 里做初始化,Foreground 时页面可见,Background 时释放前台资源,Destroy 收尾。写 UIAbility 子类时这几个回调基本都要重写。
和早期 FA 模型对比,最大的差别是 UIAbility 和 WindowStage 解耦了。FA 那会儿每个 Ability 自带 AbilitySlice,跨设备迁移和状态同步要自己拼,体验比较碎。Stage 里 UI 上下文是单独拿的,Ability 之间、跨设备之间协同更顺,写法也更接近 Android Activity + Fragment 那一套。
问题:"鸿蒙应用里如何做性能优化?常见的卡顿和内存问题怎么排查?"
参考答案:性能优化通常从启动、渲染、内存、功耗四个方向看。
启动阶段 Ability Create 里要避免同步逻辑,能异步的异步、能懒加载的懒加载,否则首屏白屏会很明显。渲染层面 build() 里不能放重计算,列表用 LazyForEach 渲染,长列表和长文本用 cachedCount 控制缓存数量,避免内存涨太快。功耗方面,定位、传感器、网络请求要按需申请和释放。
排查工具主要是 DevEco Studio 的 Profiler,能看 CPU、内存、帧率、耗电。卡顿先抓主线程耗时操作,内存问题看 Leak 报告,盯住闭包、定时器、Context 这类容易泄漏的引用。DevEco 里 ArkTS Inspector 也能看组件树和状态,比纯猜要快。
问题:"讲一个你做过的项目,重点说一个技术难点和怎么解决的。"
参考答案:这道题没有标准答案,面试官想确认两件事:项目是不是你真的干过,技术细节经不经得住追问。
按 STAR 思路讲比较稳:项目背景、你的角色、用到的技术、碰到的具体问题、你做的分析和尝试、最后的结果和反思。难点选能体现排查能力的,比如"列表滑动掉帧"、"首屏白屏"、"某个边界场景崩溃",重点说你用了什么工具、看了什么数据、走了哪些弯路、最后怎么定位到原因。
准备两个项目比较保险。一个"主流通用",体现你能干活;一个"挖得够深",里面某个模块从方案到代码你都能讲清楚。面试官深挖的往往就是后一个,提前预演两遍被追问的感觉,到时候不容易卡壳。
问题:"如果让你来设计一个鸿蒙电商 App 的商品详情页,需要考虑哪些点?"
参考答案:商品详情页是电商 App 里最复杂的页面之一,要拆开想。
首屏体验最关键。头部轮播、标题、价格、SKU 这些核心信息要优先出来,没加载完时用骨架屏占位。评价、详情图、推荐这些次要内容用懒加载,进入视口再请求,避免一上来就把接口全打出去。
图片是另一个大头。列表用缩略图,进入详情再加载大图,配合缓存复用避免快速滑动时闪烁。鸿蒙里 Image 组件本身有缓存策略,关键是把占位图、错误图、懒加载时机配好。
状态管理上,选中规格、加购数量、收藏这些数据要跨页面同步,可以用 AppStorage,或者自建一个轻量的 EventBus,看团队习惯。
离线场景也必须考虑。弱网时显示本地缓存,图片加载失败显示占位图,关键链路要做埋点上报,事后才能定位问题。
答这种题不用面面俱到,挑两三个点讲深,比平铺五个点更能让面试官记住你。
🎯应聘面试准备
问:想应聘上述岗位,需要做哪些准备?
答:
简历优化
简历顶端用 4-6 行把最相关的信息写清楚:本科在读、计算机相关专业、意向"鸿蒙移动端开发实习生"、技术栈以 ArkTS/ArkUI/Stage 模型为主,有 Android/iOS 经验就单独写一行加分项。这样 HR 一眼能看出你贴着岗位 JD 来。
项目经历和技能清单部分,对照 JD 的关键词铺一遍:ArkTS、TypeScript、ArkUI、HarmonyOS SDK、Stage 模型、状态管理这些都写上。工程能力重点写数据结构与算法、面向对象设计、模块化开发。工具链那行就写 DevEco Studio、Profiler、Hilog、Git,不用铺太长。能力标签里挑两条贴 JD 的——"学习能力强"、"对鸿蒙生态有热情"这种关键词直接照搬,比自己造词更有效。
技能梳理
鸿蒙原生开发(核心)
ArkTS 语法和 TypeScript 基础要扎实,ArkUI 的声明式开发、组件化思想是基本功。Stage 模型和 UIAbility 生命周期要清楚,状态管理那几个装饰器(@State、@Link、@Provide/@Consume、AppStorage)写项目时一定会用。List、Grid、Swiper、Navigation、Tabs 这些常用组件心里要有数。
移动端开发基础
Android 或 iOS 原生开发有就写进简历,是实打实的加分项。没原生经验,Flutter、React Native 挑一个简单了解也行,至少能跨平台开发的优劣聊一聊。性能优化思路要建立起来:启动、渲染、内存、功耗这四个方向分别能做什么。
计算机基础
数据结构与算法是必考的,数组、链表、树、图、排序、查找这些得能写。设计模式挑常用的几个:单例、工厂、观察者、策略。操作系统看进程、线程、内存管理;网络看 HTTP/HTTPS、TCP/IP 基础。鸿蒙面试不会像后端那样深挖,但基础不扎实会被追问得很狼狈。
工程能力
Git 用熟是底线,commit 规范、分支策略要清楚。DevEco Studio Profiler 跑过几次、Hilog 日志查过、远程真机调过,这些工程动作在简历和面试里都能用上。代码规范、单元测试、写技术文档这些软技能别忽略,导师带教时很看重。
面试准备
经典问题
鸿蒙岗的常考点就那些:ArkTS 和 TypeScript 的关系、ArkUI 声明式框架的特点、Stage 模型下 UIAbility 生命周期、UIAbility 和 WindowStage 怎么配合、性能优化从哪几个方向入手。把这五道题答清楚,能覆盖一半的技术面。
系统设计
系统设计题挑两三个电商场景重点练:商品详情页怎么分层加载、列表页怎么控制懒加载和复用、App 崩溃监控和日志上报怎么搭。不用每个都做过,但要能讲出思路和取舍。
项目经验准备
挑 1-2 个最熟的项目,准备好这些点:项目背景和你负责的部分、用到的具体技术、踩过的坑和怎么解决的、最终效果(最好有数据)。鸿蒙相关的 Demo 或仿写项目也算数,面试前在 DevEco Studio 里跑一遍,截图或者录屏留存,简历上能附链接就更好了。
开源贡献、竞赛获奖、博客文章这些有就都列上,没有不强求。