面试刷题9-27

如何处理高并发

 

  • const用法,const函数等;
  • vector的push_back原理;
  • vector和list有什么区别;
  • 查找较多的情况vector还是list?
  • 构造函数可以是虚函数吗?
  • 析构函数可以是虚函数吗?
  • 说一下你知道的排序算法;
  • 说一下快速排序原理;
  • 有哪些查找算法?
  • 哈希表处理冲突方法;
  • TCP和UDP区别;
  • TCP三次握手四次挥手;
  • 如果服务端和客户端同时关闭连接会发生什么?
  • 进程和线程之间的区别;
  • 共享内存原理;
  • 手撕代码,变种冒泡排序,将1、6、3放到数组后面,并且保证1、6、3相对位置不变,而且其他数的相对位置不变。

冒泡排序的应用。

上面的C++问的比较简单,基本属于白送难度。


 

早上10点刚面的三面,就把面经整理一下回馈牛友。希望大家早日上岸!!!

BIGO一面(35分钟)

1、讲项目

2、集合类List、Set、Map讲了几个类的源码

3、JVM内存模型、垃圾回收算法、类加载机制

4、MySQL事务、隔离级别

5、TCP和UDP的区别

6、HTTP状态码

7、进程和线程是什么、区别?

8、泛型擦除

基本问的都是基础,不难

BIGO二面(1小时)

1、聊项目

2、volatile、CAS、synchronized原理

3、AQS源码

4、线程池

5、NIO怎么实现

6、5种网络IO

7、select、poll、epoll实现和区别

8、场景题:如何减少TCP的时延问题(可以从应用层、系统层回答)

9、场景题:如何提高HTTPS的效率

10、K个有序链表合并成一个有序链表      (高频面试题)

11、有一个二维空间,上面有很多个点,给定一个点的坐标和一个半径r。求出该点为圆心,半径为r内有哪些点(答的倒排索引)

BIGO三面(45分钟)

1、Redis项目里面怎么用的,用的什么数据类型做哪些事

2、说下跳表,Redis为什么用跳表不用其他的?

3、知道哪些页面置换算法

在地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断。当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。

1.最佳置换算法(OPT)(理想置换算法):从主存中移出永远不再需要的页面;如无这样的页面存在,则选择最长时间不需要访问的页面。于所选择的被淘汰页面将是以后永不使用的,或者是在最长时间内不再被访问的页面,这样可以保证获得最低的缺页率。 

2先进先出置换算法(FIFO):是最简单的页面置换算法。这种算法的基本思想是:当需要淘汰一个页面时,总是选择驻留主存时间最长的页面进行淘汰,即先进入主存的页面先淘汰。其理由是:最早调入主存的页面不再被使用的可能性最大。

3.最近最久未使用(LRU)算法:这种算法的基本思想是:利用局部性原理,根据一个作业在执行过程中过去的页面访问历史来推测未来的行为。它认为过去一段时间里不曾被访问过的页面,在最近的将来可能也不会再被访问。所以,这种算法的实质是:当需要淘汰一个页面时,总是选择在最近一段时间内最久不用的页面予以淘汰。

4、出了一个TCP的选择题,选出答案说理由

5、TCP客户端发出第一个报文后状态是什么,服务端收到这个报文的状态?

6、TIME-Wait和Close-Wait出现在什么时候,为什么需要它们?

四次挥手

7、智力题:8个球,其中有1个球的重量比另外7个轻,另外7个重量一样。现给你一个天秤,请问至少用几次称量可以取出那个轻的球?说明称量过程?  乍一看以为是三次,其实两次就可以了

开始4个球,4个球比一次

8、代码题:大数相加。写纸上发给面试官

 

作者:莫回首
链接:https://www.nowcoder.com/discuss/46100
来源:牛客网
 

一面(1h 40min)

两个面试官问了不同方向的问题

0. 自我介绍

1. 详细的介绍了两个项目

2. 一道算法题 求n!末尾有多少个0

计算n!中因子5的个数。

面试官很好,引导着做的

3. 进程、线程、协程对比

4. 协程为什么可以有成千上万个,线程呢

协程不需要进行用户态和内核态的切换。

5. Ruby什么时候学的,从开始接触到写项目之间用了多久

实习的时候初学,用了3天

6. Golang 切片如何删除数据

7. Golang 的结构体的组合

8. Golang interface的设计

9. Mysql的两种引擎的对比

10. 可不可以提前实习

11. 愿不愿意去他的部门

还有很多问题忘记了

二面 (1h 20min)

0. 自我介绍

1. 详细的介绍了1个项目

2. 进程、线程、协程对比

3. PHP数组在内核当中如何实现

4. PHP和Golang的区别

5. 能不能提前实习

还有很多问题忘记了


 

面试官憨憨的 很好玩,整体感觉不错

1.输入URL解析网页的整个过程

2.TCP的三次握手和四次挥手
3.HTTP的请求方式 post、get还有其他的
4.如何检测跳转页面的登录状态session,cookie
5.java多线程介绍一下

继承Thread类和实现Runalbe接口实现多线程
6.session 和 cookie的区别
7.https的加密过程

CA证书认证,非对称加密,对称加密过程
8.介绍TCP
9.状态码介绍
10.有一个巨大的ip白名单池子,判断一个ip是否命中白名单
散列表 hash一下  或者字典树
11.有一张订单(Order)表,有以下几个字段:
字段        含义
ID        自增ID
UserID        用户ID
ProductID        产品ID
CreateDate        订单的创建日期
有几个需求:
1.查询某一款产品的所有订单。
2.查询某一天的所有订单。
3.查询最近N天(不超过30天)某一款产品的订单。从第10条开始取5条,ID从大到小倒序。
问题:
1.请实现上述需求的SQL。
2.优化索引。
写代码 创建索引,讲解创建索引的好处和为什么这样创建

12.map结构(介绍散列表)

Java HashMap必问
13.hashmap的加锁方式
14.jdk1.7
15.jdk1.8 加锁方式()

16.b++、b树讲解一下 结构 适用于什么地方
17.对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。
给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。
测试样例:
1->2->2->1
返回:true

找到中点,反转后一半比较。

 

 

一面

1.写个单例,volatile的作用,不用static行不行

2.volatile的原理,mesi怎么实现的?

3.sync的膨胀机制实现原理

4.redis的pub/sub

5.redis的过期淘汰和内存淘汰

6.哨兵模式

7.redis各个数据结构实现原理,数据量大和小分别默认用哪种

8.mq怎么保证数据不丢失

9.手撕观察者模式

10.ddos攻击

11.聚簇索引和费聚簇索引

12.堆排序

13.搜索螺旋排序树组                       好像是二分

14.记录了昨天的股票,今天想实时统计top20怎么设计      topK问题

 

二面

1.各种基java基础+计网+数据库 省略

2.o(n)复杂度找第k大的数组           快排

3.两个数组寻找中位数,时间复杂度 O(log(m + n))        这道题比较难

 

 

三面

1.netty相关

2.dubbo相关以及rpc相关

3.zk

4.nio

5.多路复用epoll

6.redis的模型

7.股票算法的各种变种

8.最大矩形

9.阻塞队列

10.二叉搜索树数量

 

这一个面试难度过大。


 

滴滴后端面经9.26

同学内推,笔试有前端的题,不懂,就做了选择交卷了。9.25下午约9.26面试

一面:和蔼胖老哥

问:先自我介绍一下

答:xx大学,本科生,大四,一直在实验室做科研,没有后端经验,秋招想找个后端工作(放弃梦想)

看简历,问:我看你简历写了个STL库,实现了B+树,数据库懂吗,这是innoDB的后端实现,给我讲一下B树和B+树

答:讲b+树先要讲b树,思想和二叉搜索树类似,二叉树二路搜索,i/o较高,b树又叫m路多路平衡搜索树···,是为了多级储存设计balabala,讲了一下搜索、插入删除,上下溢,节点既存key也寸value,调整消耗大,不适合顺序遍历。b+树解决顺序搜索问题,数据链式维护在硬盘,仅把key提出来做索引,类似B树,key定位到有指针指向物理位置,遍历即可。特点1.非叶节点仅存key,小,好维护,2.没个节点大小设置为扇区大小,查找下一节点顺序遍历,不用寻道了,快。另外数据库一点不会不会。

问:那节点设置成多大好呢?

答:一般设置成扇区大小啊,扇区硬盘厂商设定的。

问:那我换个问法,现在一块HDD7200转,寻道时间2ms,寻址时间4ms,问块大小设置成多少,最大qps最大能到多少?

我:蒙了。算,嗯?寻址时间给我来我还算啥?没搞懂。 iops=巡道+旋转+寻址=2+60*1000/7200/2(平均转半个盘定位)+4。qps=1000/iops

问:嗯,平均查找是半圈,之前你说到块,块大小设置成多少呢?

答:一般都是4kB对齐,咦?为什么是4KB?哦我知道了,是最小换页单位,内存frame大小。

B树 B+树,涉及到一点计组硬盘和操作系统。

问:嗯,不错,页大小4kB,你写过类unix系统啊,看你写的熟练掌握并发编程,讲一下进程调度
答:cpu,中断,陷入,换页,tack_struct切换,PCB内容,内核态用户态切换bala

 


问:死锁产生条件
答:非抢占、互斥、占有并等待,第四个有点紧张想不起来
问:我们学的时候是循环等待
我:对对对


问:进程通行方式
我:五大件 管道、共享内存、消息队列,信号量,每个特性讲一下(第五个想不起来,是FIFO文件访问。。。因为没用过也没记过)


问:网络三次握手
我:画并讲
问:第二次确认啥用,没有造成啥后果?          (第三次挥手)
我:防过期请求SYN,服务器连接资源浪费耗尽

问:要是第二步也没了呢?
我:服务器资源浪费耗尽,客户端也是
问:哈哈,那就是个UDP
我:恍然大悟(憨憨
问:考考算法吧,出个简单的题,一栋楼10层,每层有钻石,你坐电梯,只能上,只能拿一次,你用什么策略?

我:铁憨憨??,概率论期望最大策略拿第五层第六层,因为我啥也不知道,大自然会让钻石成正态分布

问:想办法找个量化策略

我:先走五层不拿(暗中观察),记下平均值,后面大于平均我就拿。(真的有钻石我就奥卡姆剃刀,第一层拿了就跑)回来发现是微软面试题,开放题,考数学直觉的,也是暗中观察策略http://blog.sina.com.cn/s/blog_4c2e67c50100gdcc.html

看了看笔试

指着一道二叉树后序遍历选择问:你这个题做错了啊?

我:不想做,随便点的,纸上写了一下后序遍历非递归

后续遍历非递归需要在先序遍历非递归的基础上改

翻到笔试,果然一题没交

指着第二题(求连续的最小长度为m的数组和的最小值),我们做个题吧,这个太麻烦,我们做个简单的,写个快排吧

我:写,

问:有什么想问我?

我:滴滴刚来实习的话是做新新项目还是重构旧项目?技术栈不匹配有安排时间学吗?我没啥后端经验
答:bala

感觉一面面试官问的很不错,理论重结合实际,光背书可能听不懂问的啥。还好我是个PCDIY玩家(卡吧基佬),组成原理融入骨血,扇区柱面PCIE,Ryzen两组CCX寄存器里有啥都能背给你听,运气不错的。

等了一会,二面
面试官双眼皮,剑眉,冷面 吓得我瑟瑟发抖
问:我是xxx,xx部门xxx,自我介绍一下吧
我:自我介绍*2

问:讲一下你实习的实验室经历
答:Faster-RCNN、DCP、MASK-RCNN,Inpainting,SuperResolution,前向反向传播,梯度下降,sgd,LSTM。
问:听起来做的不错,你为什么不读研呢?
答:菜,么得研读,考不动,保不上,出国GRE来不及bala,国内读完研我也是来做后端
问:嗯,你这个跟我领域差的很大,不好问,数据库会吗
答:不会,一点也不会(逃,上回面头条说会,给自己挖坑gg,不会就说不会吧
问:我看你写了个STL库,那你讲讲你这个接触到最难的点和启发
答:allocator,二级空间配置器,内存池减少碎片,颠覆我开发观念、STL开发诸君真乃神人也,源码阅读体验:精彩!,开发过程:学到很多,以前只会用,现在终于懂了,泛型、继承、数据结构复习、架构设计,确实很不错balabala,画了两张草稿纸
问:你怎么觉得颠覆开发观念了呢?计算机科班应该觉得很正常吧?
我:一直在实验室写lab-code,第一次看大型开源源码,很多东西只书上看过,没做过,觉得震惊
问:你这个hbase项目,java写的吧?怎么就用上hbase了?
我:学校安排的大数据实训,你要是问我java我就凉了(自杀)不会

问:我不问你hbase,我看你写了个linux操作系统,讲一下进程调度
我:进程调度*2
问:https知道吗?
我:不知道,只会HTTP,但我知道是会话用SSL加密,
问:UDP怎么交付
我:画出UDP报文头,画出ip豹纹头,ip传到主机,再根据udp里的端口号传到对应端口

问:TCP和UDP区别
我:TCP面向连接,UDP尽力交付bala
问:TCP怎么保证交付
我:滑动窗口,连续确认,画了个只有 1234 789的接收窗口,server的ack=5,client重新传56789···

问:TCP拥塞控制
我:慢开始、拥塞避免 窗口、ssthresh

问:写个算法吧
出了个最大连续子序列
我:dp,秒了

面试官看不懂,我一行一行给他看
问:我没什么可以问你了(沉浸在dp方程中,还没悟出来)
???反问环节呢?
三面:前面的老哥跑了,HR让我顶替,上了个厕所,五分钟继续面
面试官高冷至极,说话没有语调,不敢造次
问:自我介绍一下
我:自我介绍,强调没后端经验,c++
问:你觉得技术哪一部分不错
我:数据结构和操作系统和c++
问:我看你实现了线程安全的hbase读写接口,说一下怎么实现的?
我:讲一下线程怎么不安全,线程和进程的关系,画了个kernel内存分布 高地址内核、入口、栈,堆,静态存储区、常量存储区、代码段,PCB内容、线程共享进程内容,线程调度换页阻塞、上下文切换机制,然后讲线程多了stack会爆掉,再多线程开不起来,或者把旧线程down掉(stack爆),我们搞一个线程池,加锁,控制连接上限,减少线程上下文切换损失。
问:和我理解的线程安全不一样,你这个是控制并发数量

我:嗯
问:文件描述符讲一下

答:一个整数,inode的结构讲了一下,目录文件、无名文件讲了一下,文件描述符即是引用向inode的值
问:怎么实现两个进程同时访问文件描述符?
答:进程通通信吗?可以共享内存mmap可以实现,讲了一下映射共享内存结构,另外还有shm,我不太熟,亲缘进程可以用管道,也可以socket 访问
问:现在要进程b和a访问同一个文件描述符,传什么参数?怎么传?
我:?不是共享内存了吗?mmap,shm还传啥参数啊?
问:比如a 访问一个文件描述符,读到pos位置,怎么传给b,你刚刚说过进程通信方式了,比如用信号量,现在我就问你要传什么参数?
我:信号量也可以传文件描述符?
问。。。
我:那传一个文件描述符、一个pos不就行了(这里楼猪不太懂,求指点
问:真的吗?
我:嗯(大无畏不怕死乐观主义gm精神

看简历
问:自旋锁和普通锁有什么区别
我:自旋锁 写了个自旋锁伪代码,在死循环里不断试探锁位,占用处理机,发现锁被占用后不断读取,处于忙占用状态,不会挂起进入阻塞队列,如果是单核主机,没有其他核上面的线程给他释放锁,就死机了。

普通锁分互斥锁和条件变量,锁被占用时,立刻被挂起换出内存,等待系统进程发现对应锁释放后再wake,换入内存。
问:自旋锁这种设计有用吗?占用cpu,为什么呢?

想了一会,想起来自旋锁设计初衷 我:缺页中断讲一下,讲进程挂起,保存状态,换出内存再唤醒、换入的上下文开销很高,如果进程很重要,或者进程挂起唤醒一次时间很长,比如每次把内存换完,就不值得挂起,不如空转处理机,使用自旋锁,避免上下文切换。
问:嗯,你还会其他编程语言吗?
我:python懂一点,会用,没有深入了解过,java也差不多
问:没有深入了解,嗯,你知道现在c++开发用的很少,只有腾讯或者一些在用了,这里一般都是php、golang,你了解过吗?
我:听说和c++很相似,熟悉c++很好转,我就是没有后端经验,想靠c++转才投的
问:嗯,c++多态讲一下
我:多态由静态联编和动态联编实现,静态联编是编译时确定,动态联编是运行时确定,静态主要靠重载实现,动态靠虚函数
问:虚函数怎么实现的?

我:有继承特性才能用虚函数,所以是类实现,含虚函数的类对象内存第一个单元会内置一个虚函数指针,占一个指针的内存单位,派生类定义与基类同名函数就会自动成为虚函数,类会在只读数据段生成一张虚函数表,对应各类实际实现的虚函数,用基类指针和引用调用派生类虚函数,vptr会去vtable找派生类真实实现虚函数。
问:含虚函数的类

1

2

3

4

5

6

class A{

virtual fun();

int a;

short b;

long c;

}

各部分偏移地址
我:内存对齐吗?vptr 0-7,其余和最长的vptr对齐a 8-15,b16-23,c24-32(这里楼猪看书不仔细,答错了,泪目了 应该是和内存偏移对齐

1

2

3

4

5

6

class A{

virtual fun(); //有虚函数,所以对象有一个  vptr 0-7

int a;//8是size(a)4的倍数,所以占用内存偏移a 8-11

short b;//12是sizeof(b)2的倍数,所以占用内存偏移 12-13

long c;//14不是 sizeof(c) 8的倍数,所以不占用内存偏移 改用15-24

}

问:这个你回去多看看吧
我:哦,我可能记错了
问:最后我们来写道算法吧 一个数组,只有一个数出现1次,其他都出现三次,求这个数 (剑指offer原题)
我:hash散列,求得没碰撞的数,o(n)
问:还可以再优化一下
我:桶,找只有一个的 O(n)
问:有别的思路吗?还可以优化

我:只能o(n),怎么都得遍历一边,想不出来啊
问:肯定要遍历一遍,可以从空间上优化
我:呜呜呜~有提示吗(这个题我见过,好像是相邻做位运算的,上一题答错了,太紧张忘了)
问:可以考虑位运算
我:2分钟过去,没有思路
问:好了,我的问题问完了,你有什么要问我的吗?
我:滴滴后端都是什么技术栈?我去实习应该就是学新技术栈了吧?
问:嗯,一般都是php和golang,不粗意外是转,至于分到哪个组不一定

我:刚刚内存布局我哪错了?
问:面试题我不会回答,这个要你自己回去研究
我:好的,没有问题了
问:嗯,你基础不错,有些地方还可以提升
我:谢谢
问:点头致意

hr一会出来,说回去等消息,我悄悄问hr回去等消息是有消息还是没消息啊?hr说我也不知道。

应该是比较真实的面经了,真情实景,大家提提意见,另外也给怕面试的老哥看看我的铁憨憨面试风格

另外求offer,手里只有一个实习和工资低的弟弟厂,真的很想要这个offer

 

可以看到,C++需要极强的操作系统和底层理论知识才能熟练驾驭,而且工程能力会比较缺,所以现在不建议面试基础知识以C++为主复习。

 


 

现场一面

项目详细介绍

算法:vector<vector<int>>排序,改进方法

智力题,醉汉在一维数组上走n步之后回到起始位置的概率

现场二面

new和malloc的区别

map和hashmap

优先级队列的实现      堆

红黑树和平衡二叉树的区别

malloc的底层实现

动态链接和静态链接

动态链接中的全局作用域表

C++四种类型转换

C++11新特性

const的作用

析构函数为什么要声明未虚函数

静态重载、动态重载

如何检查内存泄露

哈希表

哈希冲突的解决方法

智能指针的介绍

为什么要有lambda

四次挥手

进程和线程还有协程

物理内存和虚拟内存

用户态和内核态

4G地址空间

会不会数据库 不擅长,尽量别问

互斥锁、读写锁、自旋锁的区别

还有一些基础的忘了

算法atoi函数的实现

HR面

部门介绍

岗位介绍

意向城市

手里意向书

后续流程介绍

视频三面

自我介绍

实验室项目介绍,项目难点

场景分析,围绕美团搜索性能的提升

 

二面就是标准C++的问题。

 


 

一面:

1、自我介绍一下
2、Hive的存储引擎了解哪些?例如常用默认的textfile,还了解哪些?orcfile。textfile和orcfile有什么区别?行列存储?是行存储还是列存储?
3、Hive的order by和sort by有什么区别?
4、Hive的udf、udaf和udtf了解过吗?自己有没有写过udf?
5、SQL题 一个login_in表,userid、login_time、ip,表数据量比较大,千万级甚至上亿级别。取出最近10条登录的数据(考虑上数据量巨大)。常规做法全局order by limit;对userid或ip用窗口函数做分区加编号再过滤,分区内login_time倒序排,之后再全局order by。怎么样用sort by的方式去实现?回答distribute by + sort by。
6、Hive表的内部表和外部表有什么区别?实际实习工作中有用到过吗?用的是内部表还是外部表?
7、Hive中grouping sets、with cube等这些高级的函数有没有使用过?
8、Hive的优化点,怎么去写更优的Hive语句,如何去优化?在实习工作中有没有遇到过?
9、数据倾斜的解决方案?
10、SQL题,还是login_in表,统计登录的总条数和登录的总人数,考虑下数据量很大,一个人可能有多条登录数据。
11、介绍一下HBase的一些特性。在删除HBase中的一个数据的时候,它什么时候真正的进行删除呢?当你进行删除操作,它是立马就把数据删除掉了吗?
12、SQL题,还是login_in表,算总人数的时候会在Hive里面起几个MR。

 


13、Java平常写的多么?Java的HashMap和HashTable有什么区别?线程安全的Map是什么?实际用过ConcurrentHashMap吗?

这个是必问问题


14、抽象类与接口的区别?方法的默认实现?接口中可以定义常量么?
15、Java1.8的新特性你了解么?stream流了解吗?
16、Java线程写过吗?怎么写一个线程?实际项目中写过么?

17、线程池了解过吗?
18、ArrayList和LinkedList都用过吗?介绍一下?
19、现在有一个String的对象“ABCD”,如何将这个字符串反转生成一个新的字符串。

将这个字符串变为StringBuild,然后调用方法。


20、MySQL用过吧,它有什么引擎?InnoDB和MyISAM有什么区别?
21、MyISAM的一些索引,单列索引、组合索引、主键、唯一索引都什么区别?


22、Shell中统计一个文件的行数用什么指令?在Shell脚本中获取传入参数的总个数?
23、Shell中压缩一个文件夹,用什么指令?
24、SQL题,还是login_in表,加一个pay_info表,字段包括userid,pay_time,payment_amout。要求查出登录了但是未支付的总人数,一个用户也会有多条支付的数据。注意多条重复关联去重问题。
25、where和having有什么区别?
26、有了解过Flume、Kafka吗?
27、你是保研的还是考研的?
28、你的方向是大数据哪一块?离线还是数仓?

二面:

1、自我介绍一下
2、在百度是在哪个部门实习啊?在哪个地点?在华为做的东西偏后台对吧?华为在哪个地方?

3、SQL问题,直播场景,表字段live_id,start_time,end_time,直播场次很多,数据量很大,这个表是一个分区表,每一天分区存的是当天的数据。计算一天里面哪个时段直播的并发量是最高的。例如:

live_idstart_timeend_time
13:004:00
23:304:30

则最终结果应该为3:30~4:00。
4、检索的一张搜索日志表query_log,关键字段query词,类目kind,时间timestamp。求每一个类目下,检索次数top10的query以及它的检索次数。
5、如果有一些类目的query词特别多,在执行过程中会出现一些数据倾斜的问题,这种情况下应该如何解决呢?
6、join操作底层的MapReduce是怎么去执行的?
7、select、from、where、group by、order by在一个Hive语句中,这些执行的顺序,排一下序号。
8、聊一下你之前做的项目,先说一下在百度的吧,具体问了问项目内容。
9、这个涉及Spark SQL的项目是做什么?
10、导师项目涉及的HBase数据量大么?有自己搭的集群是么?
11、实时相关的框架接触过吗?

12、你有什么要问我的吗?

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值