2024鸿蒙常见面试题

常用组件

Column
沿垂直方向布局的容器组件
Row
沿水平方向布局的容器组件
Tabs
通过页签进行内容视图切换的容器组件,每个页签对应一个内容视图
Swiper
滑块视图容器,提供子组件滑动轮播的能力,也可以被称为轮播图组件 跑马灯组件
Scroll
子组件超过Scroll组件的尺寸时(宽高都可以)内容可以滚动
Grid
网格容器组件 子组件只支持GridItem组件 可以设置几行几列 设置后GridItem组件就会根据设置排成网格 多用于APP页面中上图下文的快捷入口
Badge
可以附加在单个子组件上用于信息标记 也就是角标 基本就是用于消息未读条数

常用装饰器

@Entry
页面入口 一个页面只能有一个@Entry装饰器
@Component
装饰struct 使其拥有组件的能力 内部有且只能有一个build函数
@State
用来装饰变量 使其变为状态变量 只有状态变量可以引起UI的变化 必须有初始值
@Prop
用来接收父组件传入的值 跟父组件建立单向同步关系  @Prop装饰的变量可以修改但是无法同步回父组件 当父组件的值发生变化时, 子组件的值会被覆盖 可以不设置初始值
@Link
用来接受父组件传入的值 跟父组件建立双向同步关系 可以修改且会同步回父组件 可以理解为双向绑定 不能设置初始值

组件生命周期

aboutToAppear
创建自定义组件的新实例后,执行build()函数之前执行。允许在aboutToAppear函数中改变状态变量,更改将在后续执行build()函数中生效。一般在这发起网络请求
onPageShow
页面每次显示触发一次 包括路由过程 应用进入前台等场景 仅@Entry装饰的自定义组件生效。
onPageHide
页面每次隐藏时触发一次,包括路由过程、应用进入后台等场景,仅@Entry装饰的自定义组件生效。
onBackPress
当用户点击返回按钮 滑动返回时触发,返回值为Boolean 最后返回true表示自定义返回逻辑;返回false表示使用默认的路由返回逻辑,不设置返回值按照false处理。仅@Entry装饰的自定义组件生效
aboutToDisappear
在自定义组件析构销毁之前执行。不允许在aboutToDisappear函数中改变状态变量,特别是@Link变量的修改可能会导致应用程序行为不稳定。

页面生命周期

onPageShow
同上
onPageHide
同上
onBackPress
同上

<think>好的,我现在需要回答用户关于鸿蒙开发中安全控件下载的面试问题。首先,用户提到了安全控件下载的实现方式,所以我得先理解鸿蒙HarmonyOS)的相关机制。 首先,安全控件下载通常涉及网络请求、数据验证和存储安全。鸿蒙的文档中提到过使用@ohos.net.http模块进行网络请求,这可能是一个关键点。我需要确保在下载过程中使用HTTPS协议,并且验证服务器的证书,防止中间人攻击。 接下来,数据完整性校验也很重要。比如下载文件后计算MD5或SHA256哈希值,与服务器提供的对比,确保文件未被篡改。这可能涉及到鸿蒙的安全模块,比如@ohos.security.crypto,用来生成哈希值。 然后,存储安全方面,鸿蒙推荐使用安全目录来存放敏感文件,比如context.getFilesDir(),这可以防止其他应用访问。同时,下载后的控件如果涉及加载运行,可能需要动态加载技术,但要注意鸿蒙的安全策略是否允许,以及如何签名验证。 用户可能还会关心如何避免下载过程中的常见漏洞,比如使用第三方库时的依赖安全,或者如何应对后台返回错误数据的情况。参考用户提供的引用[2],提到后台给错数据类型时前端要做兼容处理,这里可能需要类似的思想,比如在下载后验证文件类型、大小,以及异常处理机制。 另外,面试题可能涉及代码实现,比如示例中的线程处理ProgressBar,引用[1]提到用线程控制进度条,这在下载时也需要考虑,比如在子线程中进行网络请求,主线程更新UI,避免阻塞。 最后,需要总结实现步骤,并生成相关问题,覆盖性能优化、安全加固、兼容性处理等,这些都能帮助面试者全面准备。</think>### 鸿蒙安全控件下载实现方式及面试解答 #### 1. 安全下载核心实现步骤 1. **加密通信**:使用HTTPS协议确保传输安全,需验证服务器证书有效性(防中间人攻击) 示例代码: ```typescript import http from '@ohos.net.http'; // 配置SSL证书验证 let sslOptions = { protocols: [http.Protocol.TLSv1_2], // 限定TLS版本 cipherSuites: ['TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384'] // 指定加密套件 }; ``` 2. **完整性校验**:下载完成后计算文件哈希值并与服务端比对 ```typescript import crypto from '@ohos.security.crypto'; // 计算SHA-256哈希 let sha256 = crypto.createHash("SHA256"); sha256.update(fileData); let hashValue = sha256.digest().toUpperCase(); ``` 3. **安全存储**:将控件保存在应用沙箱目录(需使用鸿蒙安全API) ```typescript let context = ... // 获取应用上下文 let securePath = context.getFilesDir() + "/security_components/"; ``` #### 2. 关键面试问题解答 **Q:如何防止下载文件被恶意替换?** A:采用四级验证机制: 1. 传输层:强制双向SSL证书验证[^4] 2. 文件头校验:检查文件魔数(Magic Number) 3. 哈希校验:使用国密SM3算法进行完整性验证 4. 数字签名:验证开发商签名(使用@ohos.security.verify模块) **Q:遇到后台返回非预期数据如何处理?** A:实施防御性编程: ```typescript // 示例:安全类型检查 if (typeof response.data !== 'ArrayBuffer') { throw new Error("INVALID_DATA_TYPE"); } // 数据范围校验 if (downloadFile.size > MAX_ALLOWED_SIZE) { context.deleteFile(filePath); // 立即删除异常文件 } ``` 参考前端容错处理思想[^2],需添加多重数据校验层 #### 3. 进阶优化方案 - **分块校验**:大文件采用分段哈希校验,实时验证每1MB数据块 - **可信执行环境**:在鸿蒙TEE环境中处理敏感操作 - **动态更新策略**:通过权限管控机制限制非授权更新
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值