一入鸿蒙深似海,从此Spring是路人:鸿蒙开发面试题

详细内容请参考最新的官方鸿蒙文档,不保证时效性

写得不对的地方请多多指点,本文仅代表个人所学知识范围

联系方式QQ 1219723557,可一同交流学习

欢迎补充,希望能做一个汇总版本出来


1. 网络编程基本知识(较为简单,推荐自行查找答案)

        1.1 http 和 https 的区别

                HTTPS是什么?加密原理和证书。SSL/TLS握手过程_哔哩哔哩_bilibili

                你知道HTTP与HTTPS有什么区别吗?

        1.2 OSI七层模型,分别包括哪些

                OSI七层模型详解-腾讯云开发者社区-腾讯云

        1.3 TCP和UDP的区别,TCP的三次握手以及作用、TCP的拥塞控制和流量控制

                相关书籍:计算机网络-谢希仁编著-微信读书  5.7和、5.8 、5.9章节,永远的经典

                简单过一遍的博客:网络协议:TCP和UDP什么区别?(附视频)

                图解TCP、UDP,流量控制,拥塞控制,一次看懂 - 知乎

        1.4 谈谈HTTP中POST和GET的区别

                post和get请求的区别是什么?

        1.5 输入一串URL到浏览器都经历了什么

                从输入一个URL到浏览器页面展现到底发生了什么? - 知乎


2. 数据结构与算法基本知识(较为简单,推荐自行查找答案)

        2.1 你知道的排序算法有哪些

                1.0 十大经典排序算法 | 菜鸟教程

        2.2 快速排序算法原理以及复杂度

                1.6 快速排序 | 菜鸟教程

        2.3 谈谈平衡二叉树、红黑树、B树、B+树

                数据结构--平衡二叉树 - 知乎

                一文搞懂红黑树

                B树和B+树详解-CSDN博客

        2.4 平衡二叉树节点插入和删除场景伪代码实现

                数据结构--平衡二叉树 - 知乎

        2.5 topK问题

                一次搞透,面试中的TopK问题!


3. ArkTS编程语言基本知识

        3.1 ArkTS 与 TS、JS的区别

                答: 

        3.2 ArkTS的内存管理机制

                解密方舟的高性能内存回收技术——HPP GC

        3.3 TS的基本类型有哪些
        3.4 TS中undefined和null的区别,他们的应用场景,undefined是一个全局常量吗?
        3.5 type和interface的区别
        3.6 谈谈闭包,以及优缺点
        3.7 为什么会有匿名函数或箭头函数的出现
        3.8 箭头函数和匿名函数在使用上的区别(this绑定相关知识)
        3.9 讲一下TS的装饰器、和java注解的区别
        3.10 ArkTS异步编程有哪些 以及他们演变来源
        3.11 Promise是如何实现的(宏任务和微任务以及执行顺序),setTimeout会做什么。
        3.12 同时发起十个请求,有三个失败时,即返回失败,如何设计该方案
        3.13 有一百个请求,但同一时间只能发送十个,如何设计该方案
        3.14 ArkTS并发编程有哪两种,两者的区别、是否共享内存、内存独立如何做到线程间通信?

        答:  两个均基于Actor并发模型,不共享内存,通过消息传递实现通信。

                系统源码中调用了libuv库的 uv_async_send 方法发送消息,可自行学习

                详细资料参考下面两个链接, 多线程并发概述 (TaskPool和Worker)    和    Actor并发模型对比内存共享并发模型


4. ArkUI 进阶知识

        4.1 ArkUI渲染机制,是如何把三棵树模型优化为一棵树模型的?

                ArkUI_Docs: ArkUI相关设计文档 - Gitee.com

        4.2 ArkUI的测算、布局、渲染流程(与Android的measure、layout、draw的区别)
        4.3 ArkUI 装饰器有哪些,分别适用于什么场景。
        4.4 ArkUI节点树如何初始化的
        4.5 har 和hsp、hap的区别
        4.6 鸿蒙如何实现不同设备上的UI布局适配
        4.7 ArkUI在性能上跟Android、ios的差别
        4.8 UI优化方案思路分享

5.  OpenHarmony 组件基本知识

        5.1 Ability的生命周期,如何创建、销毁一个Ability

                UIAbility组件生命周期

                启动Ability的方式

        5.2 Ability的启动模式有哪些

                UIAbility组件启动模式

        5.3 Ability的种类有哪些,都用于什么用途

                两大类: UIAbility(界面所在) 和ExtensionAbility(拓展类)

                ExtensionAbility具体细分类型见链接: OpenAtom OpenHarmony

        5.4 want的显式跳转和隐式跳转
        5.5 请描述Ability的启动流程,从桌面点击一个应用icon开始
        5.6 谈谈鸿蒙的路由机制,包括navigation、router等
        5.7 鸿蒙如何实现跨模块的信息传递,eventhub等


5. OpenHarmony 进阶知识

        5.1 谈谈鸿蒙系统与安卓系统的区别,谈谈整体的鸿蒙开发理念。
        5.2 鸿蒙系统是如何实现跨进程通信的,描述一下其整体方案、原理以及优点、以及如何防止数据被篡改。
        5.3 c++ 智能指针有哪些,如何实现的,鸿蒙为何自己设计一套智能指针方案?

        答: 特性文档:  c++智能指针

                至于为什么自己设计一套,个人猜测 :一是为了扩展性和灵活性,在特定场景下可以灵活的添加和修改功能。二是为了跨平台兼容,后续可能会涉及多种编程语言和框架(不可排除仓颉等语言的加入),直接使用c++自带的智能指针,可能会与其他语言或框架的内存管理机制冲突出现bug,自己设计可以更好的与系统的整体架构和内存管理策略相协调,确保一致性和稳定性。三,可能是c++自带的指针在某些场景下依旧存在性能瓶颈,因此通过自己设计的一套方案来进行性能上的优化,给用户带来更好的性能体验。

        5.4 谈谈从应用开发到系统API接口调用的流程

        答:  当前应用开发时调用系统API时,通过import方式即可加载对应库

                一是通过so提供接口,import路径会转换为requireNapi的函数去加载库

                OpenHarmony之NAPI框架介绍

                二是通过系统级HSP提供接口,路径会转换为 指定格式路径,在运行时通过系统配置的映射文件,去指定路径下加载hsp代码逻辑。 // todo 具体细节后续等官方文档出来了再补充


6. 性能内存功耗优化稳定性等基本知识

        6.1 如何发现内存问题、如何定位、使用什么工具、如何分析。
        6.2 稳定性问题种类

        答: 大体分为 Appfreeze、Sysfreeze、cppcrash、jscrash、jserror等问题

                // todo,补充具体场景以及分析方式

        6.3 案例分析(仅作者可见)


7.  项目工作内容

        7.1 谈谈所做的项目工作内容、角色
        7.2 工作中遇到的困难、或者觉得压力最大的任务以及如何处理
        7.3  其余内容较为保密,就这样吧。

// 答案慢慢补充

相关推荐

  1. 深度探讨鸿蒙工程师面试

    2024-04-15 07:32:05       30 阅读
  2. 鸿蒙开发 (二)、熟悉鸿蒙之剑 ArkTS

    2024-04-15 07:32:05       17 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-15 07:32:05       17 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-15 07:32:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-15 07:32:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-15 07:32:05       18 阅读

热门阅读

  1. Linux kernel 墙上时间

    2024-04-15 07:32:05       29 阅读
  2. Spark开窗函数之ROW

    2024-04-15 07:32:05       14 阅读
  3. C#去掉字符串中所有匹配的字符String.Replace方法

    2024-04-15 07:32:05       15 阅读
  4. 最短路计数

    2024-04-15 07:32:05       48 阅读
  5. MATLAB初学者入门(1)—— 基础知识和功能介绍

    2024-04-15 07:32:05       20 阅读
  6. MATLAB结合C+混编循环计算多孔结构的孔径分布

    2024-04-15 07:32:05       19 阅读