BAT经典面试题【智力,概率论,Linux,数据结构】

目录

 

1.给定N张扑克牌和一个随机函数,设计一个洗牌算法

2.25匹马,5个跑道,每个跑道最多能有1匹马进行比赛,最少比多少次能比出前3名?前5名?

3.100亿个整数,内存足够,如何找到中位数?内存不足,如何找到中位数?

4.1000个灯围成一个环,初始状态是熄灭的,按一个灯,它以及它的左右两盏灯的状态会改变,问 如何让所有灯都亮?

5.n条直线最多能将一个平面分成多少部分?

6.n个平面最多能将一个空间切成多少部分?

7.两个机器人,初始时位于数轴上的不同位置。给这两个机器人输入一段相同 的程序,使得这两个机 器人保证可以相遇。程序只能包含“左移 n 个单位”、“右移 n 个单位”,条件判断语句 If,循环语句 while, 以及两个返回 Boolean 值的 函数“在自己的起点处”和“在对方的起点处”。你不能使用其它的变量和 计数器,请写出该程序

8.有 n 个人互相比赛(n已知), 一个人输掉 4 次就出局(不能继续比赛),赢 7 次通过(可以继续比赛), 问最多通过人数?

9.两个软硬程度一样的鸡蛋,它们在某一层摔下会碎,有个100层的建筑,要求最多用两个鸡蛋确 定鸡蛋安全下落的临界位置,给出临界位置?如果是n层楼,m个鸡蛋,请给出确定临界位置的算法

10.n个人,只有1个人是明星,明星所有人都认识,但明星不认识其他任何人,如何找到该明星?如果n很大很大,如果改进你的算法?

11.给50个硬币,面值可以不同,排成一排,两个人轮流取,只能从两端取,先取的人如何保证取到的币值大于等于另一个人

12.一个均匀的绳子从一头开始烧是1小时,要求想办法测出45分钟。

13.100个囚犯从前往后坐成一列。坐在最后面的那个囚犯能够看到其余99个囚犯,坐在最前面的 那个囚犯啥也看不见。看守给每个囚犯戴上一顶黑色的或者白色的帽子。然后,看守会从后往前依 次叫这些囚犯猜测自己头顶上的帽子的颜色。如果哪个囚犯猜对了,他就自由了。坐在前面的每一 个囚犯都可以听到后面的囚犯的猜测。如果这100个囚犯事先可以商量好一种策略,那么最理想的策 略是什么?

14.如何等概率地从n个数中随机抽出m个数?上题中如果n的大小不确定(可以认为是⼀个数据流),如何做?

15.给定一个能够生成0,1两个数的等概率随机数生成器”,如何生成⼀个产生0,1,2,3的等概率随机数生成器?和上题类似,如何用rand7生成rand9?

16.有一枚硬币,以p的概率产生正面,以1-p的概率产生背面,如何利用它产生个0.5概率的生成器?

17.A,B,C三人轮流扔硬币,第一个扔到正面的人算赢,问三个人赢的概率分别为多大?

18.A 有 n 个硬币,B 有 n+1 个硬币,谁丢的正面多谁赢,问 A 不输的概率?

19.一个机器人在原点,右边有一个距离为k的点,机器人以p的概率右移一步,1-p概率左移一步, 问经过M步机器人处于k点的概率?

20.扔硬币直到连续两次出现正面,求扔的期望次数

21.编程实现三个线程ABC,并让它们顺次打印ABC

22.简述Linux进程内存空间分为哪几个段?作用分别是什么?

23.简述Linux内存分配--伙伴系统 原理

24.简述Malloc实现原理

25.Linux中如何实现Signal?

26.设计并实现一个LRU Cache

27.设计一个数据结构,能够支持插入、删除、返回最大值、最小值、随机返回一个数的操作

28.设计一个Query suggestion的服务

29.如何设计一个短网址服务系统?

30.如何设计一个网页爬虫系统?

31.给一个超过100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址?与上题条件相同,如何找到top K的IP?如何直接用Linux系统命令实现?

32.给定100亿个整数,设计算法找到只出现一次的整数

33.给两个文件,分别有100亿个整数,我们只有1G内存,如何找到两个文件交集

34.1个文件有100亿个int,1G内存,设计算法找到出现次数不超过2次的所有整数?

35.给两个文件,分别有100亿个query,我们只有1G内存,如何找到两个文件交集?分别给出精确 算法和近似算法?

36.如何扩展BloomFilter使得它支持删除元素的操作?

37.给上千个文件,每个文件大小为1K—100M。给n个词,设计算法对每个词找到所有包含它的文件,你只有100K内存

38.有一个词典,包含N个英文单词,现在任意给一个字符串,设计算法找出包含这个字符串的所有英文单词


1.给定N张扑克牌和一个随机函数,设计一个洗牌算法

void shuffle(int cards[],int n)
{
    if(cards==NULL)
        return ;
 
    srand(time(0));
 
    for(int i=0;i<n-1;++i)
    {
        //保证每次第i位的值不会涉及到第i位以前
        int index=i+rand()%(n-i);
        int temp=cards[i];
        cards[i]=cards[index];
        cards[index]=temp;
    }
}

2.25匹马,5个跑道,每个跑道最多能有1匹马进行比赛,最少比多少次能比出前3名?前5名?

找出前3名最少需要7场就可以确定。首先我们将25匹⻢马分成5组,分别为ABCDE,5组分别进行比赛决出各小组名次;接着让各小组第一进行比赛决出冠军,我们假设各小组第一分别是A1, B1, C1, D1, E1,并且速度A1 > B1 > C1 > D1 > E1;接着2,3名可以在一场比赛内决出,分别由A2, A3, B1, B2, C1参赛;这样总共进行了5 + 1 + 1 = 7场; 找出前5名的思路和这个类似。

3.100亿个整数,内存足够,如何找到中位数?内存不足,如何找到中位数?

内存足够的情况: 可以使⽤用类似quick sort的思想进行,均摊复杂度为O(n),算法思想如下:
• 随机选取一个元素,将比它小的元素放在它左边,比它大的元素放在右边
• 如果它恰好在中位数的位置,那么它就是中位数,可以直接返回
• 如果小于它的数超过一半,那么中位数一定在左半边,递归到左边处理
• 否则,中位数一定在右半边,根据左半边的元素个数计算出中位数是右半边的第几大,然后递归 到右半边处理
内存不⾜足的情况:
方法⼀:⼆分法
思路:一个重要的线索是,这些数都是整数。整数就有范围了,32位系统中就是[-2^32, 2^32- 1], 有了范围我们就可以对这个范围进行二分,然后找有多少个数⼩于Mid,多少数大于mid,然后递归, 和基于quicksort思想的第k大⽅方法类似
方法二:分桶法 思路:化大为小,把所有数划分到各个小区间,把每个数映射到对应的区间⾥里,对每个区间中数的 个数进行计数,数一遍各个区间,看看中位数落在哪个区间,若够小,使⽤用基于内存的算法,否则 继续划分

4.1000个灯围成一个环,初始状态是熄灭的,按一个灯,它以及它的左右两盏灯的状态会改变,问 如何让所有灯都亮?

挨个按一遍。思路是每个灯只会被3个位置改变状态,挨个按一遍恰好每个位置被改变了奇数次 状态

5.n条直线最多能将一个平面分成多少部分?

f(n)=n(n+1)/2+1

原理:第N条直线可以被前N-1条直线分为N段,对于 每1段则将平面分为两份,所以对于前

f(n)=f(n-1)+n。

f(n-1)=f(n-2)+n-1

......

f(1)=f(0)+1;

f(0)=1;

等式左右相加可以得到:f(n)+f(n-1).....+f(0)=f(0)+(f1)+.....+f(n-1)+1+1+2+...+n;

f(n)=1+n(n+1)/2

6.n个平面最多能将一个空间切成多少部分?

显然,当这n个平面满足以下条件时,所分割的部分数是最多的。 1、 这n个平面两两相交; 2、 没有三个以上的平面交于一点; 3、 这n个平面的交线任两条都不平行。 对于一般情况一下子不易考虑,我们不妨试着从简单的,特殊的情况入手来寻找规律。设n个 平面分空间的部分数为 an,易知 当n=1时,an=2 ; 当n=2时,an=4 当n=3时,an=8 当n=4 时,情况有些复杂,我们以一个四面体为模型来观察,可知an=15 ; 从以上几种情况,很难找出一个一般性的规律,而且当n的值继续增大时,情况更复杂,看来这样不行。那么,我们把问题在进一步简单化,将空间问题退化到平面问题:n条直线最多可将平面分割成多少个部分?(这n条直线中,任两条不平行,任三条不交于同一点),设n条直线最多可将平面分割成 bn个部分,那么 当n=1,2,3时,易知平面最多被分为2,4,7个部分。 当n=k 时,设 k条直线将平面分成了 bk个部分,接着当添加上第k+1 条直线时,这条直线与前k 条直线相交有 k个交点,这 k个交点将第 k+1条直线分割成k段,而每一段将它所在的区域一分为二,从而增加了K+1 个区域,故得递推关系式 b(k+1)=b(k)+(k+1) ,即 b(k+1)-b(k)=k+1 显然当k=1 时, b(1) =2,当k=1,2,3.....n-1 时,我们得到 个式子: b(2)-b(1)=2; b(3)-b(2)=3; b(4)-b(3)=4; b(5)-b(4)=5; …… b(n)-b(n-1)=n; 将这 n-1个式子相加,得 b(n)=1/2*(n^2+n+2),即n条直线最多可将平面分割成1/2*(n^2+n+2) 个部分。 我们来归纳一下解决这个问题的思路:从简单情形入手,确定b(k) 与b(k+1)的递推关系,最后得出结论。 现在,我们回到原问题,用刚才的思路来解决空间的问题,设k个平面将空间分割成a(k)个部分,再添加上第k+1个平面,这个平面与前k个平面相交有k条交线,这k条交线,任意三条不共点,任意两条不平行,因此这第k+1个平面就被这k条直线分割成b(k)个部分。 而这b(k)个部分平面中的每一个,都把它所通过的那一部分空间分割成两个较小的空间。所以,添加上这第k+1个平面后就把原有的空间数增加了b(k)个部分。由此的递推关系式 a(k+1)=a(k)+b(k), 即 a(k-1)-a(k)=b(k) 当k=1,2,3........n-1时,我们得到如下n-1个关系式 a(2)-a(1)=b(1); a(3)-a(2)=b(2); …… a(n)-a(n-1)=b(n-1); 将这n-1个式子相加,得 a(n)=a(1)+(b(1)+b(2)+b(3)+.......+b(n-1)) 因为 b(n)= 1/2*(n^2+n+2),a(1)=2 所以 a(n)=2+{1/2*(1^2+1+2)+(2^2+2+2)+(3^2+3+2)+........+((n-1^2)+(n-1)+2)} =(n^3+5*n+6)/6 问题的解:由上述分析和推导可知,n个平面最多可将平面分割成 =(n^3+5*n+6)/6

7.两个机器人,初始时位于数轴上的不同位置。给这两个机器人输入一段相同 的程序,使得这两个机 器人保证可以相遇。程序只能包含“左移 n 个单位”、“右移 n 个单位”,条件判断语句 If,循环语句 while, 以及两个返回 Boolean 值的 函数“在自己的起点处”和“在对方的起点处”。你不能使用其它的变量和 计数器,请写出该程序

while (!at_other_robot_start())
 move_right(1);
while (true)
 move_right(2)

8.有 n 个人互相比赛(n已知), 一个人输掉 4 次就出局(不能继续比赛),赢 7 次通过(可以继续比赛), 问最多通过人数?

赢的是x, 输的是 y , 那么  x+y=n;

假设包括赢的人,每个人都输了3次,  那么 就有  3n 个胜场,   然后输的人y再输一场,那就有

3n + y  个胜场      ,   因为 赢7次才算赢  ,那么     3n+y >= 7x

那么  x  <= n/2

即,一半的人会赢

9.两个软硬程度一样的鸡蛋,它们在某一层摔下会碎,有个100层的建筑,要求最多用两个鸡蛋确 定鸡蛋安全下落的临界位置,给出临界位置?如果是n层楼,m个鸡蛋,请给出确定临界位置的算法

动态规划方法
100层楼2个鸡蛋:f[n] = min(1 + max(i - 1, f[n - i])) i = 1……n
n层楼m个鸡蛋:f[i, 0] = 0; f[n,m] = min(1 + max(f[i - 1, m - 1], f[n - i, m]) i = 1…n

10.n个人,只有1个人是明星,明星所有人都认识,但明星不认识其他任何人,如何找到该明星?如果n很大很大,如果改进你的算法?

性扫描一遍,两两比较,每次比较都会排出一个人:若a认识b,则a一定不是明星;若a不认 识b,则b一定不是明星;n很大的情况下可以采用分布式方法,每个机器处理一部分数据,最后每个 机器选出一个候选,归并

11.给50个硬币,面值可以不同,排成一排,两个人轮流取,只能从两端取,先取的人如何保证取到的币值大于等于另一个人

看奇数位的数的和以及偶数位的数的和哪个大,若奇数位的大选第一个,否则选最后面的(这里假设奇数位和偶数位的和不同)若出现相同,可以采用动态规划的思路来做

12.一个均匀的绳子从一头开始烧是1小时,要求想办法测出45分钟。

用甲乙两根绳.先同时点燃甲的两端以及乙的一端,当甲烧完后过去了30分钟,因为是两头烧,所以就是30分钟.而乙已经烧了30分钟,还有30分钟的量,此时再点燃乙的另一端.双管齐下,剩下的30分钟只烧了15分钟,加上一开始已经烧了30分钟,共45分钟

13.100个囚犯从前往后坐成一列。坐在最后面的那个囚犯能够看到其余99个囚犯,坐在最前面的 那个囚犯啥也看不见。看守给每个囚犯戴上一顶黑色的或者白色的帽子。然后,看守会从后往前依 次叫这些囚犯猜测自己头顶上的帽子的颜色。如果哪个囚犯猜对了,他就自由了。坐在前面的每一 个囚犯都可以听到后面的囚犯的猜测。如果这100个囚犯事先可以商量好一种策略,那么最理想的策 略是什么?

100个囚犯从前往后坐成一列。坐在最后面的那个囚犯能够看到其余99个囚犯,坐在最前面的那个囚犯啥也看不见。看守给每个囚犯戴上一顶黑色的或者白色的帽子。然后,看守会从后往前依次叫这些囚犯猜测自己头顶上的帽子的颜色。如果哪个囚犯猜对了,他就自由了。坐在前面的每一个囚犯都可以听到后面的囚犯的猜测。如果这100个囚犯事先可以商量好一种策略,那么最理想的策略是什么?
囚犯们可以乱猜一通,最坏情况下所有人都猜错,平均下来则会有50个人猜对。这个题有趣的地方就在于,100个囚犯事先可以商量一种策略,也就是说坐在后面的囚犯可以用他的猜测给坐在前面的囚犯透露一些信息。很显然,坐在最后面的囚犯是不可能保证自己猜对的,他猜黑猜白都只有一半的几率猜对,似乎没什么区别;但囚犯可以事先约定好一种暗号,即最后一个囚犯猜黑表示什么意思,猜白表示什么意思。比如,最后一个囚犯可以猜测和他前面的囚犯的帽子一样的颜色,这就相当于用他的猜测告诉了他前面那个囚犯该猜什么,于是坐倒数第二的囚犯可以保证被释放;此时,坐在倒数第三个位置上的囚犯面对与刚才坐最后的囚犯相同的处境,他同样可以用他的猜测提示出他前面那个人的帽子颜色。这样下去,可以保证至少50个人猜对,平均情况则有75个人猜对。这不是最佳的策略。
不可思议的是,最佳策略可以保证,除了坐在最后面的囚犯以外,其余99个囚犯都能猜对。你能想出这样的策略是什么吗?继续看下去前不妨先想一下。
前面那种策略的问题在于,坐在最后面的那个人透露出的信息不多。他完全可以透露出与全局相关的一些信息,因此以后所有的人都可以用这条信息。比如,他可以数一数他前面99个人一共有多少顶白帽子,并约定他猜“黑”表示他前面共有偶数顶白帽,他猜“白”表示他前面共有奇数顶白帽。坐倒数第二的那个人也数一数他前面98个人的白帽子个数:如果他数出来的个数与先前透露出的个数一奇一偶,则他自己肯定戴的是白帽子;如果他数出来的和先前透露的结果奇偶性相同,则他自己戴的肯定是黑帽子。这样,坐倒数第二的保证可以猜对了。那接下来咋办呢?不要忘了,其他囚犯能听到刚才那人猜的是什么,并且知道他的猜测保证是对的。这相当于每个人不仅能看到坐他前面的所有人的帽子颜色,还知道他背后那些人的帽子颜色,结合最初的那个奇偶性信息,接下来的每一个人都可以猜出自己脑袋上的帽子颜色。这样下去,至少99个囚犯可以保证被释放。这种策略显然是最佳的,不可能再有什么策略能保证所有人都被释放,因为至少坐最后的那个人不可能保证自己猜对。

14.如何等概率地从n个数中随机抽出m个数?
上题中如果n的大小不确定(可以认为是⼀个数据流),如何做?

每个位置i以(m - k)/(n - i + 1)的概率决定当前数是否选,k为前面已经抽出的数的个数
蓄水池采样法

15.给定一个能够生成0,1两个数的等概率随机数生成器”,如何生成⼀个产生0,1,2,3的等概率随机数生成器?
和上题类似,如何用rand7生成rand9?

将两个0,1随机生成器级联,每次产生两个数,则可能的结果有(0,0), (0,1), (1,0), (1,1),分别映 射到0, 1, 2, 3即可
两个rand7可以产生49种可能,扔掉后面的4种,保留前45个,并平均分成9份,每次产生一个结果时,假如没落在对应区间中就扔掉,否则根据落在哪个区间判断是0--8中哪个

16.有一枚硬币,以p的概率产生正面,以1-p的概率产生背面,如何利用它产生个0.5概率的生成器?

将两枚硬币级联,只保留“正反”,“反正”两种结果,其他两种结果扔掉

17.A,B,C三人轮流扔硬币,第一个扔到正面的人算赢,问三个人赢的概率分别为多大?

P(B) = 1/2*P(A); P(C) = 1/4 * P(A); P(A) + P(B) + P(C) = 1;
得P(A) = 4/7, P(B) = 2/7, P(C) = 1/7

18.A 有 n 个硬币,B 有 n+1 个硬币,谁丢的正面多谁赢,问 A 不输的概率?

可前n轮,有3种情况,设P(A>B) = x, P(A == B) = y,由对称性P(A<B) = x,则有2x + y = 1
现在来看B扔最后一个硬币的情况:
• 假如之前A>B,则无论怎么扔,A都不会输,最多平
• 如果A==B,则B扔了正面,A才会输,这是0.5y

• 如果A<B,则无论B怎么扔,A都输,所以是x
所以A输的概率是:x + 0.5y = 0.5 * (2x + y) = 0.5,A不输的概率是1 - 0.5 = 0.5

19.一个机器人在原点,右边有一个距离为k的点,机器人以p的概率右移一步,1-p概率左移一步, 问经过M步机器人处于k点的概率?

k步右移,剩下的M - k步一半左移一半右移,所以M<k和(M - k)%2 == 1的情况概率为0,其他情 况就是M中选k + (M-k)/2步的概率

20.扔硬币直到连续两次出现正面,求扔的期望次数

假设期望次数是E,我们开始扔,有如下几种情况:
• 扔到的是反面,那么就要重新仍,所以是0.5*(1 + E)
• 扔到的是正面,再扔一次又反面了,则是0.25*(2 + E)
• 扔到两次,都是正面,结束,则是0.25*2
所以递归来看E = 0.5*(1 + E) + 0.25*(2 + E) + 0.25*2,解得E = 62

21.编程实现三个线程ABC,并让它们顺次打印ABC

思路:设置三个信号量:S1, S2, S3,S2由S1 post,S3由S2post, S1由S3 post,由A线程先开 始打印,其他线程必然在等待信号量,所以三个线程⼀一定会按照信号量的顺序来打印

22.简述Linux进程内存空间分为哪几个段?作用分别是什么?

23.简述Linux内存分配--伙伴系统 原理

伙伴系统,其思想是:把内存块分成不同的组(1,2,4,8,16,32....);分配内存时找到能够满足条件 的最小的块;如果找不到,就找大的块,然后一分为2,分配一块,留一块;回收时:如果有相邻的同样大小的块,则合并

24.简述Malloc实现原理

可以基于伙伴系统实现,也可以使用基于链表的实现
• 将所有空闲内存块连成链表,每个节点记录空闲内存块的地址、大小等信息
• 分配内存时,找到大小合适的块,切成两份,一分给用户,一份放回空闲链表
• free时,直接把内存块返回链表
• 解决外部碎片:将能够合并的内存块进行合并

25.Linux中如何实现Signal?

基于软中断,不同Signal对应不同中断处理函数

26.设计并实现一个LRU Cache

下面是一个参考思路
• 重要数据结构:key-value存储、LRU存储;
• key-value存储:hash_table/map,LRU:链表,因为可以快速实现增加、删除
• 如何更新Cache: 找到key在链表中的位置,删除并将它插到表头,同时更新key到链表位置的映射
• 快速找到最不常访问的元素:链表尾

27.设计一个数据结构,能够支持插入、删除、返回最大值、最小值、随机返回一个数的操作

设计合理即可,下面是一个参考思路:
• 插入、删除、最大、最小:使用set实现,复杂度O(logn)
• 如何实现random 使用数组,将所有数据放入数组中,random时随机返回数组元素
• 记录每个元素在数组中的下标 • 删除时首先将对应元素和最后一个元素交换,删除最后一个元素 复杂度O(1)

28.设计一个Query suggestion的服务

设计合理即可,下面是一个参考思路:
• 使用Trie树记录每个Query出现的频次(或其他权值)
• 在每个Trie树的节点设置一个最小堆,记录以当前节点的字符串为前缀的query中出现topK次数的 query
• 更新query频次时,沿着trie树中的路径更新路径上节点中的最小堆
• 用户输入query时,直接返回对应trie树节点的最小堆中topK的query即可

29.如何设计一个短网址服务系统?

设计合理即可,实现思路:将url哈希到一个唯一的数值,将这个数值转化为一个字符串; 另外还需要考虑系统负载等因素

30.如何设计一个网页爬虫系统?

设计合理即可,实现思路:使用bfs算法进行网站爬取;使用master节点作为控制节点控制work 节点进行网站爬取;使用分布式队列做任务调度;使用key-value存储(如redis)做网页判重

31.给一个超过100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址?
与上题条件相同,如何找到top K的IP?如何直接用Linux系统命令实现?

Hash分桶法:
• 将100G文件分成1000份,将每个IP地址映射到相应文件中:file_id = hash(ip) % 1000
• 在每个文件中分别求出最高频的IP,再合并 Hash分桶法:
• 使用Hash分桶法把数据分发到不同文件
• 各个文件分别统计top K
• 最后Top K汇总
Linux命令,假设top 10:sort log_file | uniq -c | sort -nr k1,1 | head -10

32.给定100亿个整数,设计算法找到只出现一次的整数

Hash分桶法,将100亿个整数映射到不同的区间,在每个区间中分别找只出现一次的整数

33.给两个文件,分别有100亿个整数,我们只有1G内存,如何找到两个文件交集

关键点:扫描每个整数是否出现过,如何节省内存?使用bitmap

34.1个文件有100亿个int,1G内存,设计算法找到出现次数不超过2次的所有整数?

Bitmap扩展:⽤用2个bit表⽰示状态,0未出现过,1出现过1次,2出现了2次或以上

35.给两个文件,分别有100亿个query,我们只有1G内存,如何找到两个文件交集?分别给出精确 算法和近似算法?

精确算法:Hash分桶法
• 将两个文件中的query hash到N个小文件中,并标明query的来源
• 在各个小文件中找到重合的query
• 将找到的重合query汇总 近似算法:BloomFilter

36.如何扩展BloomFilter使得它支持删除元素的操作?

将Bloomfilter中的每一位扩展为一个计数器,记录有多少个hash函数映射到这一位;删除的时候,只有当“引用计数”变为0时,才真正将该位置0

37.给上千个文件,每个文件大小为1K—100M。给n个词,设计算法对每个词找到所有包含它的文件,你只有100K内存

使⽤用trie树即可

38.有一个词典,包含N个英文单词,现在任意给一个字符串,设计算法找出包含这个字符串的所有英文单词

一个可行的思路:给输入字符串,利⽤用字母建立倒排索引,索引中存储该字母 出现在哪个单词以及在单词中位置;查询时,利用倒排找到所有的单词,并求交集并且位置要连续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值