当前位置: 首页 > news >正文

一入鸿蒙深似海,从此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. 操作系统基本知识(较为简单,推荐自行查找答案)

        3.1 什么是死锁,死锁产生的必要条件,谈谈工作中有无遇到死锁的场景。

        答: 

                简单的说,就是两个或多个进程无限期的阻塞、相互等待的一种状态。

                死锁产生的四个必要条件:

                        互斥条件:一个资源每次只能被一个进程使用。

                        请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。

                        不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。

                        循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系

        3.2 非对称加密算法和对称加密算法

        答: 简单来说,只用一个密钥来进行加解密的算法为对称算法。通过“公钥加密 私钥解密”或者“私钥加密  公钥解密”的算法为非对称算法。

        3.3 进程间通信方式

        答: 管道、信号量、共享内存、socket通信


4. ArkTS编程语言基本知识

        4.1 ArkTS 与 TS、JS的区别

                答: 

        4.2 ArkTS的内存管理机制

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

        4.3 TS的基本类型有哪些

        答: number,string,boolean,undefined,数组,元祖(tuple),object,枚举(enum),any,null,void,Never

        4.4 TS中undefined和null的区别,他们的应用场景,undefined是一个全局变量吗?

        答: null表示空值,即该变量为空。undefined表示未定义,即该变量本该有值,但是未进行初始化。 undefined是一个全局变量,在早起版本时,开发者可修改undefined的值,现代浏览器基本不会。

        4.5 type和interface的区别
        4.6 谈谈闭包,以及优缺点
        4.7 为什么会有匿名函数或箭头函数的出现
        4.8 箭头函数和匿名函数在使用上的区别(this绑定相关知识)
        4.9 讲一下TS的装饰器、和java注解的区别
        4.10 == 和 === 的区别

        答: == 会对基础类型先进行转换之后,再进行对比, === 如果类型不同就会直接返回false。对于复杂对象或高级类型,只要地址不同就会返回false。

        4.10 ArkTS异步编程有哪些 以及他们演变来源

        答: 1. callback回调

                2. promise实现链式调用,解决回调地狱问题

                3. async 和 await,让开发者通过类似同步的代码调用写法,来优化实现思路。

        4.11 Promise是如何实现的(宏任务和微任务以及执行顺序),setTimeout会做什么。

        答: 

        4.12 同时发起十个请求,有三个失败时,即返回失败,如何设计该方案
        4.13 有一百个请求,但同一时间只能发送十个,如何设计该方案
        4.14 ArkTS并发编程有哪两种,两者的区别、是否共享内存、内存独立如何做到线程间通信?

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

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

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


5. ArkUI 进阶知识

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

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

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

6.  OpenHarmony 组件基本知识

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

                UIAbility组件生命周期

                启动Ability的方式

        6.2 Ability的启动模式有哪些

                UIAbility组件启动模式

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

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

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

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


7. OpenHarmony 进阶知识

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

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

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

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

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

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

                OpenHarmony之NAPI框架介绍

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


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

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

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

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

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


9.  项目工作内容

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

// 答案慢慢补充

相关文章:

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

详细内容请参考最新的官方鸿蒙文档,不保证时效性 写得不对的地方请多多指点,本文仅代表个人所学知识范围 联系方式QQ 1219723557,可一同交流学习 欢迎补充,希望能做一个汇总版本出来 1. 网络编程基本知识(较为简单&…...

【Python】使用OPC UA创建数据服务器

目录 准备工作服务器设置创建或获取节点设置节点值启动服务器查看服务器客户端总结 在工业自动化和物联网(IoT)领域,OPC UA(开放平台通信统一架构)已经成为一种广泛采用的数据交换标准。它提供了一种安全、可靠且独立于…...

JavaScript(六)-高级篇

文章目录 作用域局部作用域全局作用域作用域链JS垃圾回收机制闭包变量提升 函数进阶函数提升函数参数动态参数多余参数 箭头函数 解构赋值数组解构对象解构 遍历数组forEach方法(重点)构造函数深入对象创建对象的三种方式构造函数实例成员 & 静态成员…...

速盾:游戏cdn什么意思

CDN(Content Delivery Network)是指内容分发网络,它是由一组位于世界各地的服务器组成的网络,用于将内容有效地传输给用户。游戏CDN,顾名思义,就是用于游戏内容分发的网络。 在传统的网络传输模式中&#…...

数据库-Redis(11)

目录 51.什么是Redis事务? 52.Redis事务相关命令? 53.Redis事务的三个阶段?...

【网安小白成长之路】6.pikachu、sql-labs、upload-labs靶场搭建

🐮博主syst1m 带你 acquire knowledge! ✨博客首页——syst1m的博客💘 🔞 《网安小白成长之路(我要变成大佬😎!!)》真实小白学习历程,手把手带你一起从入门到入狱🚭 &…...

(七)C++自制植物大战僵尸游戏关卡数据加载代码讲解

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/xjvbb 打开LevelData.h和LevelData.cpp文件。文件位置如下图所示。 LevelData.h 此头文件中定义了两个类,分别是OpenLevelData、LevelData,其中OpenLevelData用于加载文件数据。LevelData解析数据…...

wpf下RTSP|RTMP播放器两种渲染模式实现

技术背景 在这篇blog之前,我提到了wpf下播放RTMP和RTSP渲染的两种方式,一种是通过控件模式,另外一种是直接原生RTSP、RTMP播放模块,回调rgb,然后在wpf下渲染,本文就两种方式做个说明。 技术实现 以大牛直…...

Element-UI 自定义-下拉框选择年份

1.实现效果 场景表达&#xff1a; 默认展示当年的年份&#xff0c;默认展示前7年的年份 2.实现思路 创建一个新的Vue组件。 使用<select>元素和v-for指令来渲染年份下拉列表。 使用v-model来绑定选中的年份值。 3.实现代码展示 <template><div><el-…...

二叉树的链式存储

二叉树是一种非常重要的数据结构&#xff0c;它能够高效地进行数据的插入、删除和查找操作。二叉树的每个节点最多有两个子节点&#xff0c;分别是左子节点和右子节点。二叉树可以采用多种不同的存储方式来实现&#xff0c;其中链式存储是最为直观和常用的一种方法。本文将深入…...

[计算机效率] 鼠标手势工具:WGestures(解放键盘的超级效率工具)

3.22 鼠标手势工具&#xff1a;WGestures 通过设置各种鼠标手势和操作进行绑定。当用户通过鼠标绘制出特定的鼠标手势后就会触发已经设置好的操作。有点像浏览器中的鼠标手势&#xff0c;通过鼠标手势操纵浏览器做一些特定的动作。这是一款强大的鼠标手势工具&#xff0c;可以…...

Linux useradd命令教程:如何创建新的用户账户(附实例详解和注意事项)

Linux useradd命令介绍 useradd是Linux中用于添加用户账户的命令。它可以用于创建新的用户&#xff0c;并可以配合不同的选项来指定用户的主目录、UID、GID、组等信息。 Linux useradd命令适用的Linux版本 useradd命令在大多数Linux发行版中都可以使用&#xff0c;包括但不限…...

基于ollama搭建本地chatGPT

ollama帮助我们可以快速在本地运行一个大模型&#xff0c;再整合一个可视化页面就能构建一个chatGPT&#xff0c;可视化页面我选择了chat-ollama&#xff08;因为它还能支持知识库&#xff0c;可玩性更高&#xff09;&#xff0c;如果只是为了聊天更推荐chatbox 部署步骤 下载…...

C++11 数据结构3 线性表的循环链式存储,实现,测试

上一节课&#xff0c;我们学了线性表 单向存储结构&#xff08;也就是单链表&#xff09;&#xff0c;这个是企业常用的技术&#xff0c;且是后面各种的基本&#xff0c;一定要牢牢掌握&#xff0c;如果没有掌握&#xff0c;下面的课程会云里雾里。 一 &#xff0c;循环链表 1…...

初识DOM

目录 前言: 1.初识DOM: 1.1DOM树: 1.2节点&#xff08;Node&#xff09;: 1.2.1元素节点&#xff1a; 1.2.2属性节点&#xff1a; 1.2.3文本节点&#xff1a; 1.3Document对象: 2.操作网页元素: 2.1找出元素&#xff1a; 2.1.1document.getElementById(id)&#xff1…...

计算机视觉实验五——图像分割

计算机视觉实验五——图像分割 一、实验目标二、实验内容1.了解图割操作&#xff0c;实现用户交互式分割&#xff0c;通过在一幅图像上为前景和背景提供一些标记或利用边界框选择一个包含前景的区域&#xff0c;实现分割①图片准备②代码③运行结果④代码说明 2.采用聚类法实现…...

移动Web学习06-移动端适配Less预处理器项目案例

项目目标&#xff1a;实现在不同宽度设备中等比缩放的网页效果 Less代码 import ./base; import ./normalize;// 变量: 存储37.5 rootSize: 37.5rem; *{margin: 0;padding: 0; } body {background-color: #F0F0F0; }// 主体内容 .main {// padding-bottom: (50 / 37.5rem);pa…...

LangChain-25 ReAct 让大模型自己思考和决策下一步 AutoGPT实现途径、AGI重要里程碑

背景介绍 大模型ReAct&#xff08;Reasoning and Acting&#xff09;是一种新兴的技术框架&#xff0c;旨在通过逻辑推理和行动序列的构建&#xff0c;使大型语言模型&#xff08;LLM&#xff09;能够达成特定的目标。这一框架的核心思想是赋予机器模型类似人类的推理和行动能…...

24/04/15总结

多线程&#xff1a; 线程 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中&#xff0c;是进程中的实际运作单位 并发:在同一时刻&#xff0c;有多个指令在单个cpu上交替执行 并行:在同一时刻&#xff0c;有多个指令在多个cpu上同时执行 多线程的实现方式 1.继承…...

vue3、vue2中nextTick源码解析

nexttick是啥 nextTick是Vue提供的一个全局API&#xff0c;由于Vue的异步更新策略导致我们对数据的修改不会更新&#xff0c;如果此时想要获取更新后的Dom&#xff0c;就需要使用这个方法. vue的异步更新策略意思是如果数据变化,vue不会立刻更新dom,而是开启一个队列,把组件更…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解&#xff0c;涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容&#xff0c;并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念&#xff08;ACID&#xff09; 事务是…...