Uniapp基础面试

UniApp 面试题 答案:UniApp 是一个基于 Vue.js 的跨平台应用开发框架,可以使用 Vue.js 的开发语法编写一次代码,然后通过编译生成可以在多个平台(包括iOS、Android、H5 等)上运行的应用。跨平台:开发者可以使用相同的代码基底构建多个平台的应用,避免了针对不同平台的重复开发。高性能:UniApp 在运行时使用原生渲染技术,具有接近原生应用的性能表现。开放生态:UniApp 支持原生插件和原生能力的扩展,可以调用设备的硬件功能和第三方原生 SDK。 阅读详情
AI摘要

本文探讨了uni-app的优点如跨端开发、学习成本低及拓展性,同时分析了其缺点如社区支持不足和平台兼容性问题。还介绍了uni-app的页面结构、路由机制、数据存储、生命周期管理、组件间通信以及自定义Nav表头的技术应用和一个字符串最长无重复字符子串的算法示例。,

1. uni-app的优缺点

优点:

a. 一套代码可以生成多端
b. 学习成本低,语法是vue的,组件是小程序的
c. 拓展能力强
d. 使用HBuilderX开发,支持vue语法
e. 突破了系统对H5条用原生能力的限制

缺点:

a. 问世时间短,很多地方不完善
b. 社区不大
c. 官方对问题的反馈不及时
d. 在Android平台上比微信小程序和iOS差
e. 文件命名受限

2. 描述一下uniapp的页面结构以及目录文件所代表的什么

pages.json
配置文件,全局页面路径配置,应用的状态栏、导航条、标题、窗口背景色设置等
main.js
入口文件,主要作用是初始化vue实例、定义全局组件、使用需要的插件如 vuex,
注意uniapp无法使用vue-router,路由须在pages.json中进行配置。
如果开发者坚持使用vue-router,可以在插件市场找到转换插件。
App.vue
是uni-app的主组件,所有页面都是在App.vue下进行切换的,是页面入口文件。
但App.vue本身不是页面,这里不能编写视图元素。
除此之外,应用生命周期仅可在App.vue中监听,在页面监听无效。
pages
页面管理部分用于存放页面或者组件
manifest.json
文件是应用的配置文件,用于指定应用的名称、图标、权限等。HBuilderX 创建的工程此文件在根目录,CLI 创建的工程此文件在 src 目录。
package.json
配置扩展,详情内容请见官网描述package.json概述

3. 说明uniapp页面跳转方式

1、uni.navigateTo: 保留当前页面,跳转到应用的某个页面,使用 uni.navigateBack 可以返回原页面。这种方式类似于网页的超链接跳转。

2、uni.redirectTo: 关闭当前页面,跳转大应用内的某个页面。这种方式类似于网页的重定向。

3、uni.switchTab: 跳转到tabBar页面,并关闭其他所有非tabBar页面。

4、uni.reLaunch: 关闭所有页面,打开到应用内的某个页面。

5、nui.navigateBack: 关闭当前页面,返回上一页或多级页面。

4. 分别写出jQuery、vue、小程序、uni-app中的本地存储数据和接受数据是什么?

jQuery:

存:$.cookie('key','value')
取:$.cookie('key')

vue:

存储:localstorage.setItem(‘key’,‘value’)
接收:localstorage.getItem(‘key’)

uni:

存储:uni.setStorage({key:“属性名”,data:“值”})
接收:uni.getStorage({key:“属性名”,success(e){e.data//这就是你想要取的token}})

5.vue、小程序、uni-app的生命周期

vue

beforeCreate(创建前)
created(创建后)
beforeMount(载入前),(挂载)
mounted(载入后)
beforeUpdate(更新前)
updated(更新后)
beforeDestroy(销毁前)
destroyed(销毁后)

uniapp

onLoad:首次进入页面加载时触发,可以在 onLoad 的参数中获取打开当前页面路径中的参数。
onShow:加载完成后、后台切到前台或重新进入页面时触发
onReady:页面首次渲染完成时触发
onHide:从前台切到后台或进入其他页面触发
onUnload:页面卸载时触发
onPullDownRefresh:监听用户下拉动作
onReachBottom:页面上拉触底事件的处理函数
onShareAppMessage:用户点击右上角转发

6. uniapp中如何定义全局变量与Vue在定义全局变量的时候有什么不同

Vue

   使用Vue.js的全局属性 $store,UniApp中可以使用Vuex进行状态管理。
   通过将需要全局共享的数据存放在Vuex的状态中,
   就可以在任何一个组件中使用$store进行访问。
   比如:在main.js中创建一个Vuex的store:
import Vue from 'vue'
import Vuex from 'vuex'
 
Vue.use(Vuex)
 
const store = new Vuex.Store({
  state: {
    globalVar: '我是全局变量'
  }
})
 
export default store

使用全局变量

console.log(this.$store.state.globalVar)

uniapp

    使用Vue.js的全局属性 $uni

    除了使用Vuex来定义全局变量,UniApp还提供了一个全局对象$uni来保存全局变量:

    在main.js中定义全局变量:
import Vue from 'vue'
import App from './App'
 
Vue.prototype.$uni = {
  globalVar: '我是全局变量'
}
 
const app = new Vue({
  ...App
})
app.$mount()

使用

console.log(this.$uni.globalVar)

7.如何防止快速点击?

在需要防止按钮重复提交的组件上添加 :disabled 和 @click.stop.prevent 操作符即可。如下例:

<!-- 模板代码 -->
<template>
    <button @click.stop.prevent="submitForm" :disabled="submitting">提交</button>
</template>
 
<script>
    export default{
        data(){
            return{
                submitting: false // 提交状态
            }
        },
        methods:{
            submitForm() {
                if (this.submitting) return
                this.submitting = true
                setTimeout(() => {
                    this.submitting = false
                }, 3000)
            
            }
        }
    }
</script>

8. uniapp 中如何实现组件之间的通信?

在 uniapp 中,组件之间的通信可以使用 eventBus、$emit、$on、$parent、$children 等方式来实现。 

简述 rpx、px、em、rem、%、vh、vw的区别

rpx	相当于把屏幕宽度分为750份,1份就是1rpx
px	绝对单位,页面按精确像素展示
em	相对单位,相对于它的父节点字体进行计算
rem	相对单位,相对根节点html的字体大小来计算
%	一般来说就是相对于父元素
vh	视窗高度,1vh等于视窗高度的1%
vw	视窗宽度,1vw等于视窗宽度的1%

请解释 UniApp 中的跨平台兼容性问题和解决方案。

答案:由于不同平台的差异,UniApp 在跨平台开发时可能会遇到一些兼容性问题。为了解决这些问题,可以采取以下几个方面的策略:

使用条件编译:根据不同的平台,编写对应平台的代码,使用条件编译指令来控制代码块的执行。
使用平台 API:UniApp 提供了一些平台 API,可以通过条件编译指令来使用特定平台的功能和能力。
样式适配:不同平台的样式表现可能有差异,使用 uni-app-plus 插件中的 upx2px 方法来进行样式适配,使得在不同平台上显示一致。
原生扩展:使用原生插件和扩展来调用设备的原生功能和第三方 SDK,以解决特定平台的需求。

请解释 UniApp 中的条件编译是如何工作的。

UniApp 中的条件编译允许开发者根据不同的平台或条件编译指令来编写不同的代码。
在编译过程中,指定的平台或条件将会被处理,并最终生成对应平台的可执行代码。
条件编译通过在代码中使用 #ifdef、#ifndef、#endif 等指令进行控制。
例如,可以使用 #ifdef H5 来编写只在 H5 平台生效的代码块。

Vue 的父组件和子组件生命周期钩子函数执行顺序?

Vue 的父组件和子组件生命周期钩子函数执行顺序可以归类为以下 4 部分:

加载渲染过程
父 beforeCreate -> 父 created -> 父 beforeMount -> 子 beforeCreate -> 子 created -> 子 beforeMount -> 子 mounted -> 
父 mounted

子组件更新过程
父 beforeUpdate -> 子 beforeUpdate -> 子 updated -> 父 updated

父组件更新过程
父 beforeUpdate -> 父 updated

销毁过程
父 beforeDestroy -> 子 beforeDestroy -> 子 destroyed -> 父 destroyed

Vue 数据双向绑定原理

Vue实现数据双向绑定主要利用的就是: 数据劫持和发布订阅模式,利用的 Object.defineProperty() 方法进行的数据劫持,然后通知发布者(主题对象)去通知所有观察者,观察者收到通知后,就会对视图进行更新。

MVVM 框架主要包含两个方面,数据变化更新视图,视图变化更新数据。

视图变化更新数据,如果是像 input 这种标签,可以使用 oninput 事件…

数据变化更新视图可以使用 Object.definProperty() 的 set 方法可以检测数据变化,当数据改变就会触发这个函数,然后更新视图。

实现过程

我们知道了如何实现双向绑定了,首先要对数据进行劫持监听,所以我们需要设置一个 Observer 函数,用来监听所有属性的变化。

如果属性发生了变化,那就要告诉订阅者 watcher 看是否需要更新数据,如果订阅者有多个,则需要一个 Dep 来收集这些订阅者,然后在监听器 observer 和 watcher 之间进行统一管理。

还需要一个指令解析器 compile,对需要监听的节点和属性进行扫描和解析。

因此,流程大概是这样的:

实现一个监听器 Observer,用来劫持并监听所有属性,如果发生变动,则通知订阅者。

实现一个订阅者 Watcher,当接到属性变化的通知时,执行对应的函数,然后更新视图,使用 Dep 来收集这些 Watcher。

实现一个解析器 Compile,用于扫描和解析的节点的相关指令,并根据初始化模板以及初始化相应的订阅器。
在这里插入图片描述

虚拟 DOM 的优缺点?

优点:

保证性能下限: 框架的虚拟 DOM 需要适配任何上层 API 可能产生的操作,它的一些 DOM 操作的实现必须是普适的,所以它的性能并不是最优的;但是比起粗暴的 DOM 操作性能要好很多,因此框架的虚拟 DOM 至少可以保证在你不需要手动优化的情况下,依然可以提供还不错的性能,即保证性能的下限;

无需手动操作 DOM: 我们不再需要手动去操作 DOM,只需要写好 View-Model 的代码逻辑,框架会根据虚拟 DOM 和 数据双向绑定,帮我们以可预期的方式更新视图,极大提高我们的开发效率;

跨平台: 虚拟 DOM 本质上是 JavaScript 对象,而 DOM 与平台强相关,相比之下虚拟 DOM 可以进行更方便地跨平台操作,例如服务器渲染、weex 开发等等。

缺点:

无法进行极致优化: 虽然虚拟 DOM + 合理的优化,足以应对绝大部分应用的性能需求,但在一些性能要求极高的应用中虚拟 DOM 无法进行针对性的极致优化。

9.uniapp 中的路由是怎样实现的?请介绍基本用法。

Uniapp 中的路由是由框架自带的 Vue Router 实现的。基本用法如下:

在 pages.json 文件中配置页面路径和需要加载的页面组件。

在页面组件中使用 &lt;template>、&lt;script> 和 &lt;style> 标签,其中 &lt;template> 
标签中是页面的内容,&lt;script> 标签中定义页面组件的相关属性,&lt;style> 标签中定义页面的样式。

使用 uni.navigateTo() 或 uni.redirectTo() 方法进行页面跳转。

uni.navigateTo() 方法用于从当前页面跳转到新页面,并向新页面传递数据,即保留当前页面,跳转到新页面。
新页面可以通过 uni.getOpenerEventChannel() 获取当前页面的 EventChannel 对象,以便进行数据传递。

uni.redirectTo() 方法用于关闭当前页面,跳转到新页面,即不保留当前页面。

在页面组件中使用 this.$route.params 获取上一个页面传递的参数,并使用 this.$route.query 获取页面跳转时传递的参数。

使用 uni.navigateBack() 方法返回上一个页面,可以通过 delta 参数设置返回的层数。

除了基本用法,还可以通过路由守卫实现一些高级用法,例如页面访问权限控制、页面访问记录等。

8. 场景应用讲解

详细描述一下自定义封装Nav表头中所设计的技术点以及扩展点并通过某种技术点对该自定义组件减少代码工作量,提高开发人员的工作效率

无重复字符的最长子串

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

/**
 * @param {string} s
 * @return {number}
 */
var lengthOfLongestSubstring = function(s) {
  // 滑动窗口初始化为一个空数组
  let arr = [];
  // 要返回的字符串的长度
  let max = 0;
  for (let i = 0; i < s.length; i++) {
    // 使用 indexOf 判断是否在数组中出现过
    let index = arr.indexOf(s[i])
    // 如果出现过
    if (index !== -1) {
      // 从数组开头到当前字符串全部截取掉
      arr.splice(0, index + 1);
    }
    // 在窗口右边放进新的字符
    arr.push(s.charAt(i));//charAt(i)返回指定位置的字符
    // 更新下最大值
    max = Math.max(arr.length, max);//两个数比较
  }
  // 返回
  return max;
};

2025年最新关于uniapp 面试题及其答案解析,万字长文,建议收藏.. 和<style>标签定义组件。使用props和emit来实现父子组件之间的通信。<template><script>props: {滚动我 阅读详情

相关推荐

uniapp 高频面试题合集

uniapp面试题合集 ❗ ❗ ❗ ❗ ❗

蜗牛的博客 1万+

uniApp常见面试题

uniApp常见面试题

m0_63349753的博客 3万+

2024年前端最新01uni-app 基础教程 环境配置【uniapp 专题 1】,前端系统工程师面试题

选择自定义模板时,需要填写 uni-app 模板地址,这个地址其实就是托管在云端的仓库地址。以 GitHub 为例,地址格式为,如就是下载图片模板。整理面试题,不是让大家去只刷面试题,而是熟悉目前实际面试中常见的考察方式和知识点,做到心中有数,也可以用来自查及完善知识体系。开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】《前端基础面试题》,《前端校招面试题精编解析大全》,《前端面试题宝典》,《前端面试题:常用算法》

2301_82244509的博客 1374

uniApp常见面试题-附详细答案

【代码】uniApp常见面试题-附详细答案。

一步一个脚印,踏实努力,向着目标前进 2万+

基于Springboot+UniApp+Ai实现模拟面试小工具八:管理端基础功能实现

本文介绍了模拟面试小程序后端管理界面的核心功能实现,主要包括工作台数据统计、面试管理、简历管理等模块。工作台通过ECharts图表组件展示了会员数量、面试数据、积分使用等关键指标的趋势分析,包含折线图、柱状图等多种数据可视化形式。系统采用Vue.js+ECharts技术栈实现动态图表渲染,提供直观的数据监控界面。文章附带完整源码下载链接和功能演示视频,展示了系统登录界面、数据统计图表等实际效果。后端接口规范采用RESTful风格,通过异步请求获取动态数据并实时更新图表展示。

Java、前端、小程序学习笔记、问题汇总、项目实例分享,有需要请联系。 144

基于Springboot+UniApp+Ai实现模拟面试小工具四:后端项目基础框架搭建下

本文介绍了基于SpringBoot的后端基础框架搭建,主要包括Service层接口定义与实现。内容涵盖:1)通用基础服务IBaseService提供增删改查功能;2)用户管理IUserService实现密码修改、注册等功能;3)系统管理接口(日志、菜单、角色、设置);4)数据管理服务(面试、问题、简历)。文中提供了核心接口定义代码片段,展示了基础CRUD、权限控制、日志记录等功能的实现方案,并附有源码下载链接和视频讲解地址。

Java、前端、小程序学习笔记、问题汇总、项目实例分享,有需要请联系。 139

UniApp 面试题 超基础

uniapp是基于vue.js构建的,所以uniapp可以使用vue.js的生命周期,模版语法等。实现 每个页面都是一个vue文件 页面跳转通过uni.navigateTo、uni.redirectTo 等 API 来进行跳转。同伙uni对象 如 uni.getSystemInfo 获取设备信息,uni.request 发起网络请求等。uni.redirectTo:关闭当前页面,跳转到目标页面,适合不需要返回的场景。uni.navigateTo:保留当前页面,跳转到目标页面,适合需要返回的场景。

weixin_51687565的博客 752

基于Springboot+UniApp+Ai实现模拟面试小工具三:后端项目基础框架搭建上

摘要 本项目后端框架基于SpringBoot+MybatisPlus搭建,包含基础功能模块如增删改查、权限校验、日志记录和参数校验。框架结构分为DAO/Mapper(数据库交互)、Service(业务逻辑)、Controller(API接口)、VO(前端数据交互)、Entity(数据库表映射)等核心包。关键配置包括MybatisPlus分页插件、静态资源映射和Spring上下文工具。系统启动类整合了组件扫描和AOP代理,并提供了实体类基类定义。源码和视频教程已配套提供,实现了一个完整的模拟面试小程序后端基础

Java、前端、小程序学习笔记、问题汇总、项目实例分享,有需要请联系。 154

零基础通关UniApp面试:50道必考题详解

通过这个项目,我不仅巩固了自己的UniApp知识,还学到了如何设计一个用户友好的学习应用。分步骤教程:对于新手来说,分步骤的教程非常重要,能够帮助他们逐步掌握知识点。交互式练习:通过实际操作来学习,效果远胜于单纯的阅读。实时反馈:错误提示和参考答案能够帮助用户快速纠正错误,提高学习效率。如果你也对UniApp感兴趣,或者正在准备相关的面试,不妨试试这个学习应用。在InsCode(快马)平台上,你可以直接体验并运行这个项目,无需任何复杂的配置。希望这个工具能帮助你更快地掌握UniApp,顺利通过面试!

OnyxPanther23的博客 905

sentinel滑动时间窗口算法学习

滑动时间窗口 先不说sentinel的算法实现,先说什么是滑动时间窗口, 我们在进行限流的时候,比如通过QPS进行限流,那假如我们以秒为单位,举个例子: 我设置了限流规则,qps是10 如果不使用滑动窗口算法,在统计qps的时候,就有可能会有问题,比如: 在0 - 500ms中的请求数是0,但是在500ms - 1000 ms的请求数是10;在1000ms - 1500ms 之间又进来了5个请求,此时只判断了1000ms - 2000 ms之间的请求数 因为没有把1S进行拆分多个窗口,所以在1000ms之后

小小少年的博客 3979

【Get深一度】小波分析概念1——紧支撑集是什么意思,通俗解释

最近学到小波,在仿真中也用到了紧支撑函数;紧支撑性越好,说明能量越集中;用最通俗的话来讲,紧支撑是这样的: 对于函数f(x),如果自变量x在 0附近的取值范围内,f(x)能取到 C; 而在此之外,f(x)取值为 0; 那么这个函数f(x)就是紧支

Trey_优快云 的优快云博客 8348

uniapp面试基础

uniapp

qq_44749275的博客 3485

Foxmail 7.2.25以下版本XSS漏洞实战复现:手把手教你如何构造恶意邮件(含防御方案)

本文深入解析Foxmail 7.2.25以下版本的XSS漏洞(CNVD-2025-06036),详细展示如何构造恶意邮件进行跨站脚本攻击,并提供从客户端升级到企业级防护的多层次防御方案,帮助用户有效防范安全风险。

view3的博客 163

2022 uniapp基础掌握及面试题整理

注意:uni.e m i t 、 u n i . emit、 uni.emit、uni.on 、 uni.o n c e 、 u n i . once 、uni.once、uni.off 触发的事件都是 App 全局级别的,跨任意组件,页面,nvue,vue 等。uniapp的页面跳转和小程序是一样的,都是跳转配置好的页面路径, 并且tab页面也是需要使用switchTab才能实现跳转,总体上和小程序保持一致,对于熟练小程序的朋友上手没有难度,反之,当你习惯了uniapp的页面切换组件后上手小程序也很快。

weixin_48494427的博客 2万+

基于SVPWM控制策略的二极管钳位型NPC逆变器并网闭环simulink仿真

本文介绍了二极管钳位型三电平SVPWM技术在逆变器中的应用,通过控制IGBT的开关状态,将直流电压转换为三相交流电压,并采用钳位技术降低谐波失真,提高输出质量。文章还描述了基于SVPWM控制策略的二极管钳位型NPC逆变器并网闭环的Simulink仿真模型,该模型实现了并网控制,具有优异的性能,THD小于1%,适用于新手学习。仿真模型参数包括DC 800V、AC 380V、功率100kw,采用三电平NPC拓扑结构和SVPWM闭环控制策略,配备LCL滤波器,生成三电平波形,监测交流侧电压电流、有功功率和无功功率

2510_91195931的博客 465

IDEA集成selenium自动化测试(Java+Selenuim+testNG+Maven)

文章目录写在前面01 | 新建Maven项目02 | idea集成Selenium03 | 写在前面 因为软件测试的需求和博主比较经常使用Java,于是,想在Idea中集成selenuim,用Java编写测试代码,因此有了这篇文章来记录一下过程。 资源指路: java使用selenium实现模拟浏览器操作API大全 模拟登录 TestNG入门教程 感谢上面博客的大佬。 01 | 新建Maven项目 不使用骨架创建,直接点击左侧Maven,然后一路next即可。 02 | idea集成Sele

aLinxi的博客 8279

uniapp基础掌握及面试题整理(2022持续更新...)

uniapp浅析

老古懂的博客 7万+

人工智能智能体研究综述:从理论架构到前沿应用

AI Agent,即人工智能智能体,是指能够在特定环境中自主感知、推理、决策并执行行动以实现特定目标的智能系统[1]。自主性反应性主动性(Pro-activeness)和社会性fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;AI Agent核心特征自主性 Autonomy反应性 Reactivity主动性 Pro-activeness。

nmdbbzcl的博客 902

uni-app基础与面试题

基础笔记和面试题均由uni-app官网查阅,详细了解uni-app建议前往官网https://uniapp.dcloud.net.cn/tutorial/

weixin_47211345的博客 1866

【机器学习|评价指标8】混淆矩阵(Confusion Matrix)、Cohen‘s Kappa 系数、详解,平均交并比(mIoU)、列联表(Contingency Table)附代码。

【机器学习|评价指标8】混淆矩阵(Confusion Matrix)、Cohen's Kappa 系数、详解,平均交并比(mIoU)、列联表(Contingency Table)附代码。

2401_89898861的博客 1425

【单点登录】SSO单点登录sa-token接入流程详解

Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权 等一系列权限相关问题。Sa-Token 目前主要五大功能模块:登录认证、权限认证、单点登录、OAuth2.0、微服务鉴权。

Hello, New World! 1789

Uniapp及其他面试题汇总

uniapp及其他面试题汇总

qq_36519327的博客 4303

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

uniapp 面试题目整理100道加解析

以上题目覆盖了 UniApp 开发的核心知识点,从基础到进阶,结合了理论和实战场景。面试时不仅要记住答案,更要理解原理和应用场景,尤其是跨平台适配、性能优化等高频考点。实际开发中需多实践,积累调试和问题解决经验,才能更好地应对面试挑战。

m0_59090162的博客 4355

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

2024年网络安全最全uniapp和小程序如何分包,详细步骤手把手(图解)_uni分包,2024年最新网络安全程序基础教程

对小程序进行分包,可以优化小程序首次启动的下载时间,以及在多团队共同开发时可以更好的解耦协作。

2401_84297796的博客 1660

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

2024年前端最全uniapp实现搜索功能详细步骤【前端开发】,2024最新京东前端面试题目

表示它希望前端给它这个数据;

2301_82244330的博客 859

Vue、微信小程序、Uniapp 面试题整理最新整合版

在路由配置文件中定义路径与组件的映射关系。

qq_64392336的博客 1196
上一篇: Vue3生命周期
KeepLearningDay
博客等级 码龄6年 18粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值