面试常见题--边学边补充

1.重写重载区别?

特性重写(Override)重载(Overload)
定义子类定义一个与父类方法签名完全相同的方法,实现特定的行为。在同一个类中定义多个同名方法,参数列表不同。
方法名必须相同必须相同
参数列表必须相同必须不同
返回类型必须与父类相同或为父类返回类型的子类型(协变返回类型)可以不同
访问级别不能比父类更严格(可以相同或更宽松)可以不同
异常不能抛出新的检查型异常,或者抛出的异常类型应该是父类方法抛出异常类型的子类型。可以抛出不同的异常。
发生地点发生在继承关系中的子类和父类之间发生在同一个类的不同方法之间
主要目的改变父类行为的一部分以适应新的情况根据不同的参数执行不同的逻辑
多态的表现是多态的表现,调用方法时实际执行的是子类的实现。不是多态的表现,调用哪个方法取决于参数列表。
使用场景当子类需要提供特定的实现时使用当需要根据不同的输入参数执行不同的操作时使用
总结重写是子类实现父类方法的特定行为,重载是同一个类中定义多个同名方法,参数列表不同。重写是改变父类行为的一部分以适应新的情况,重载是根据不同的参数执行不同的操作。

2.Map有什么特点?

Java中的Map接口用于存储键值对,具有以下特点:

  • 键值对映射:键(key)与值(value)一一对应。
  • 键的唯一性:每个键在Map中是唯一的。
  • 无序集合Map不保证元素的顺序,除非使用SortedMap
  • 快速检索:通过键可以快速检索到对应的值。
  • 操作方法:提供添加、更新、删除和检查键值对的方法。
  • 视图操作:提供键集、值集和映射项集的视图。
  • 集合操作:支持将另一个Map的所有键值对添加到当前Map中。
  • 映射关系:通过entrySet()访问映射项的集合视图。
  • null值:某些Map实现允许null键和null值。
  • 多种实现:如HashMapTreeMapLinkedHashMap等。
  • 线程安全:不同实现有不同的线程安全特性。

Map是Java集合框架的一部分,适用于需要通过键快速访问值的场景。

3.HashMap底层实现原理?

  • 底层实现原理HashMap 是基于哈希表实现的,它存储键值对(key-value pairs)。

  • 数据结构: 数组 + 链表 + 红黑树:HashMap 使用数组来存储数据,每个数组元素指向一个链表或红黑树。

  • 节点:每个键值对被封装成一个节点(Node),包含键、值、哈希值和下一个节点。

  • 存储和检索

    • 哈希函数:用于计算键的哈希码,然后转换为数组索引。
    • put 操作:插入键值对时,使用哈希函数计算索引,处理哈希冲突,链表长度超过阈值时转换为红黑树。
    • get 操作:检索键对应的值时,使用哈希函数计算索引,遍历链表或红黑树找到匹配的键。
  • 扩容机制

    resize 操作:当元素数量达到容量和装载因子的乘积时,HashMap 会进行扩容,新容量是旧容量的两倍,并重新分布所有节点。

  • 线程不安全HashMap 不是线程安全的,多线程环境下需要外部同步或使用 ConcurrentHashMap

  • 迭代器HashMap 提供迭代器来遍历所有键值对,但如果在迭代过程中修改结构,会导致迭代器快速失败。

4.Java中实现多线程有几种方法?

1. 继承Thread类:通过扩展java.lang.Thread类创建一个新类,并重写其run()方法,然后创建该类的实例并调用start()方法来启动线程。
class MyThread extends Thread {
    public void run(){
        // 线程执行的代码
    }
}

public class Main {
    public static void main(String[] args) {
        MyThread myThread = new MyThread();
        myThread.start();
    }
}
2. 实现Runnable接口:创建一个实现java.lang.Runnable接口的类,并实现run()方法,然后将该类的实例传递给Thread构造函数来创建线程。
class MyRunnable implements Runnable {
    public void run(){
        // 线程执行的代码
    }
}

public class Main {
    public static void main(String[] args) {
        Thread thread = new Thread(new MyRunnable());
        thread.start();
    }
}
3. 实现Callable接口:与Runnable类似,但Callable接口的call()方法可以返回一个结果或抛出异常。通常与Future对象一起使用来获取线程的执行结果。
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;

class MyCallable implements Callable<Integer> {
    public Integer call() throws Exception {
        // 线程执行的代码
        return 1; // 返回结果
    }
}

public class Main {
    public static void main(String[] args) {
        FutureTask<Integer> futureTask = new FutureTask<>(new MyCallable());
        Thread thread = new Thread(futureTask);
        thread.start();
        
        try {
            Integer result = futureTask.get();
            // 处理结果
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
除了上述三种基本方式,Java还提供了Executor框架来管理和控制线程,包括线程池等高级功能。使用Executor框架可以更有效地管理和重用线程,提高程序的性能和可维护性。

5.Java中synchronized 和 ReentrantLock 有什么不同?

特性synchronizedReentrantLock
实现方式Java内置特性,基于监视器对象java.util.concurrent.locks中的类,提供了更丰富的功能
锁的获取与释放自动获取和释放需要显式调用lock()unlock()
公平性非公平锁可构造为公平锁
条件变量使用wait()notify()notifyAll()提供Condition对象,支持多个条件变量
可中断的锁获取不可中断支持可中断的锁获取
尝试非阻塞获取锁不支持支持tryLock()
性能早期版本性能较差,但JVM优化后有所提升在某些情况下可能提供更好的性能

6.线程池核心的参数?

7.线程池拒绝策略?

8.数据库事务四个属性?

9.SQL优化?

10.索引、组合索引、覆盖索引?

11.数据库读写分离优化方案?

12.事务隔离级别有哪些?MySQL的默认隔离级别是?

13.MySQL中有哪几种锁?

14.Spring Cloud和dubbo区别?

15.微服务网关做什么的?

16.说说你对分布式事务的了解?

17.你知道哪些分布式事务解决方案?

18.分布式锁哪些实现方案?

19.Jdk1.8的新特性?

20.如何提高系统的并发能力?

21.Springboot常用注解?

注解描述
@SpringBootApplication标记一个应用为Spring Boot应用,通常放在主类上,用于启动应用
@Component表示一个类是Spring容器的组件,通常用于类级别注解
@Configuration标记一个类为配置类,用于定义Bean
@Bean在配置类中,标记一个方法为Bean定义
@RestController组合了@Controller和@ResponseBody,表示一个控制器类,其所有方法的返回值都会直接作为响应体
@Controller表示一个类是控制器类,用于处理HTTP请求
@RequestMapping用于映射HTTP请求到控制器方法
@GetMapping用于映射HTTP GET请求到控制器方法
@PostMapping用于映射HTTP POST请求到控制器方法
@PutMapping用于映射HTTP PUT请求到控制器方法
@DeleteMapping用于映射HTTP DELETE请求到控制器方法
@PathVariable用于将请求URL中的模板变量映射到功能处理方法的参数上
@RequestParam用于将请求参数区数据映射到功能处理方法的参数上
@RequestBody用于将HTTP请求体映射到功能处理方法的参数上
@ResponseBody表示该方法的返回值直接作为HTTP响应体
@Service表示一个类是业务逻辑组件,用于服务层
@Autowired用于自动注入Bean
@Qualifier与@Autowired配合使用,按名称注入Bean
@ComponentScan指定Spring自动扫描组件的路径
@Repository表示一个类是数据仓库组件,用于数据访问层
@Transactional用于声明事务边界
@EnableAutoConfiguration启用自动配置,通常与@SpringBootApplication一起使用
@EnableWebMvc启用Spring MVC的默认配置
@MapperScan指定MyBatis Mapper接口的扫描路径

22.SpringCloud组件?

23.Springboot启动流程?

创建SpringApplication
发布事件
准备环境
扫描Bean
自动配置
初始化器
应用监听器
刷新上下文
启动内嵌服务器
准备完毕
运行main方法
启动Spring应用上下文
事件监听
环境准备
依赖注入
自动配置
初始化器
应用监听器
刷新应用上下文
启动内嵌Web服务器
准备完毕

24.Redis哨兵模式

25.Redis集群模式

26.Redis哨兵模式和集群模式区别

27.什么是缓存雪崩?

28.什么是缓存击穿?

29.什么是缓存穿透?

30.什么是缓存预热?

31.什么是缓存更新?

32.什么是缓存降级?

33.Mybatis #{}和${}的区别是什么?

34.使用 rabbitmq 的场景?

35.自定义注释作用?

36.String、StringBuffer 和 StringBuilder 的区别?

37.dubbo的工作原理?

38.springcloud 与springboot的关系?

39.== 和 equals 的区别?

40.Linux 常用的命令?

41.Springbatch它的介绍和原理?

42.说一下你理解的多态?

43.谈谈使用spring的优点?

44.怎么实现线程安全?

45.单例模式的好处?

46.地理位置存储怎么存储?

47.多线程中sleep() 和 wait()的区别?

48.SpringMVC执行流程?

49.Springboot启动流程?

50.Try()小括号写法作用?

51.平衡二叉树的特点?

52.Maven是干什么用的?

53.有了解过领域驱动设计吗?

54.hibernate和mybatis的区别

55.Orcale 和mysql的区别吗?

56.Consul有没有用过?

57.mybatis的动态sql实现原理

58.Mybatis常用sql标签?

59.Java语言有哪些特点

60.面向对象和面向过程的区别

61.instanceof 关键字的作用

62.Java自动装箱与拆箱

63.Hashcode的作用

64.ArrayList和linkedList的区别

65.HashMap和HashTable的区别

66.Java的四种引用,强弱软虚

67.泛型常用特点

68.Java创建对象有几种方式?

69.有没有可能两个不相等的对象有相同的hashcode

70.深拷贝和浅拷贝的区别是什么?

71.static都有哪些用法?

72.Excption与Error包结构

73.OOM你遇到过哪些情况,SOF你遇到过哪些情况

74.简述线程、程序、进程的基本概念。以及他们之间关系是什么?

75.Java 序列化中如果有些字段不想进行序列化,怎么办?

76.说说Java 中 IO 流

77.java反射的作用于原理

78.说说List,Set,Map三者的区别?

79.Object 有哪些常用方法?大致说一下每个方法的含义

80.Java 创建对象有几种方式?

81.获取一个类Class对象的方式有哪些?

82.ArrayList 和 LinkedList 的区别有哪些?

83.HashMap 与 ConcurrentHashMap 的异同

84.红黑树有哪几个特征?

85.说说你平时是怎么处理 Java 异常的

86.说说深拷贝和浅拷贝?

87.说说类加载与卸载

88.简述一下JVM的内存模型

89.说说堆和栈的区别

90.什么时候会触发FullGC

91.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?

92.说说对象分配规则

93.描述一下JVM加载class文件的原理机制?

94.说说Java对象创建过程

95.知道类的生命周期吗?

96.简述Java的对象结构

97.如何判断对象可以被回收?

98.JVM的永久代中会发生垃圾回收么?

99.你知道哪些垃圾收集算法

100.调优命令有哪些?

101.常见调优工具有哪些

102.Minor GC与Full GC分别在什么时候发生?

103.你知道哪些JVM性能调优参数?

104.对象一定分配在堆中吗?有没有了解逃逸分析技术?

105.虚拟机为什么使用元空间替换了永久代?

106.说一下JVM 的主要组成部分及其作用?

107.什么是指针碰撞?

108.什么是空闲列表?

109.什么是TLAB?

110.对象头具体都包含哪些内容?

111.你知道哪些JVM调优参数?

112.说一下 JVM 有哪些垃圾回收器?

113.如何选择垃圾收集器?

114.什么是类加载器?

115.说说Java中实现多线程有几种方法

116.如何停止一个正在运行的线程

117.notify()和notifyAll()有什么区别?

118.volatile 是什么?可以保证有序性吗?

119.Thread 类中的start() 和 run() 方法有什么区别?

120.为什么wait, notify 和 notifyAll这些方法不在thread类里面?

121.为什么wait和notify方法要在同步块中调用?

122.Java中synchronized 和 ReentrantLock 有什么不同?

123.SynchronizedMap和ConcurrentHashMap有什么区别?

124.什么是线程安全

125.Thread类中的yield方法有什么作用?

126.Java线程池中submit() 和 execute()方法有什么区别?

127.说一说自己对于 synchronized 关键字的了解

128.说说自己是怎么使用 synchronized 关键字?

synchronized关键字在Java中用于实现同步控制,它主要用于确保线程安全,防止数据的不一致性问题。synchronized可以应用于方法或代码块,以下是几种典型的使用方式:

  1. 同步方法
    当将synchronized修饰符应用于实例方法时,它会锁定当前对象实例(即this),确保同一时间只有一>个线程可以访问该方法。
public class Counter {
    private int count = 0;

    public synchronized void increment() {
        count++;
    }

    public synchronized int getCount() {
        return count;
    }
}

在这个例子中,increment()和getCount()方法都被声明为synchronized,这意味着在同一时间只有一个线程能够调用这两个方法中的任意一个,防止了并发访问导致的计数错误。

  1. 同步代码块
    相比于同步整个方法,同步代码块提供了更细粒度的控制,只锁定必要的代码部分,减少锁的范围,提高并发效率。
public class Counter {
    private int count = 0;
    private Object lock = new Object();

    public void increment() {
        synchronized(lock) {
            count++;
        }
    }

    public int getCount() {
        synchronized(lock) {
            return count;
        }
    }
}

这里使用了一个独立的锁对象lock,而不是直接锁定this,这样可以更灵活地控制同步区域,并且可以在不同方法中使用同一个锁对象,实现跨方法的同步。

  1. 类级别的同步
    当synchronized修饰静态方法时,它锁定的是类的Class对象,这意味着无论创建了多少个该类的实例,所有实例在访问该静态方法时都将同步。
public class Singleton {
    private static Singleton instance;

    private Singleton() {}

    public static synchronized Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

在这个单例模式的实现中,getInstance()方法是静态且同步的,确保了即使在多线程环境下,Singleton的实例也只会被创建一次。

  • 注意事项
    – 使用synchronized时要谨慎,因为它会阻塞线程,可能影响程序的性能。
    – 尽量减小同步代码块的范围,以减少锁的竞争,提高并发度。
    – 考虑使用java.util.concurrent包下的高级并发工具类(如ReentrantLock, Semaphore, CountDownLatch等),它们提供了更灵活的同步机制和更高的性能。

129.什么是线程安全?Vector是一个线程安全类吗?

130.volatile关键字的作用?

以下回答volatile和synchronized的区别

关键字作用范围描述
volatile属性无法描述同步处理,它只是一种直接内存的处理,避免了副本操作
synchronized代码块或方法是实现同步的

它们没有本质的关联,但是使用volatile的时候,要出现synchronized.

131.常用的线程池有哪些?

132.简述一下你对线程池的理解

133.Java程序是如何执行的

134.锁的优化机制了解吗?

135.说说进程和线程的区别?

136.产生死锁的四个必要条件?

137.如何避免死锁?

138.线程池核心线程数怎么设置呢?

139.Java线程池中队列常用类型有哪些?

140.线程安全需要保证几个基本特征?

141.说一下线程之间是如何通信的?

142.说说ThreadLocal原理?

143.线程池原理知道吗?以及核心参数

144.说说你对JMM内存模型的理解?为什么需要JMM?

145.多线程有什么用?

146.什么是AQS?

147.了解Semaphore吗?

148.什么是Callable和Future?

149.什么是阻塞队列?阻塞队列的实现原理是什么?如何使用阻塞队列来实现生产者-消费者模型?

150.什么是多线程中的上下文切换?

151.什么是Daemon线程?它有什么意义?

152.乐观锁和悲观锁的理解及如何实现,有哪些实现方式?

153.Autowired和Resource关键字的区别?

154.依赖注入的方式有几种,各是什么?

155.讲一下什么是Spring

156.说说你对Spring MVC的理解

157.SpringMVC常用的注解有哪些?

158.谈谈你对Spring的AOP理解

159.Spring AOP和AspectJ AOP有什么区别?

160.在Spring AOP 中,关注点和横切关注的区别是什么?

161.什么是通知呢?有哪些类型呢?

162.说说你对Spring的IOC是怎么理解的?

163.解释一下spring bean的生命周期

164.解释Spring支持的几种bean的作用域?

165.Spring框架中都用到了哪些设计模式?

166.说说Spring 中 ApplicationContext 和 BeanFactory 的区别

167.Spring 框架中的单例 Bean 是线程安全的么?

168.Spring 是怎么解决循环依赖的?

169.说说事务的隔离级别

170.说说事务的传播级别

171.Spring 事务实现方式

172.Spring框架的事务管理有哪些优点

173.事务三要素是什么?

174.事务注解的本质是什么?

175.什么是MyBatis

176.说说MyBatis的优点和缺点

177.Mybatis是如何进行分页的?分页插件的原理是什么?

178.Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式?

179.如何执行批量插入?

180.Xml映射文件中,除了常见的select|insert|updae|delete

181.标签之外,还有哪些标签?

182.MyBatis实现一对一有几种方式?具体怎么操作的?

183.Mybatis是否支持延迟加载?如果支持,它的实现原理是什么?

184.说说Mybatis的缓存机制:

185.为什么要用SpringBoot

186.Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?

187.运行Spring Boot有哪几种方式?

188.如何在Spring Boot启动的时候运行一些特定的代码?

189.Spring Boot 需要独立的容器运行吗?

190.Spring Boot中的监视器是什么?

191.如何使用Spring Boot实现异常处理?

192.你如何理解 Spring Boot 中的 Starters?

193.springboot常用的starter有哪些

194.SpringBoot 实现热部署有哪几种方式?

195.如何理解 Spring Boot 配置加载顺序?

196.Spring Boot 的核心配置文件有哪几个?它们的区别是什么?

197.MySQL数据库引擎有哪些

198.说说InnoDB与MyISAM的区别

199.数据库的事务

200.索引是什么

201.SQL优化手段有哪些

202.简单说一说drop、delete与truncate的区别

203.什么是内联接、左外联接、右外联接?

204.并发事务带来哪些问题?

205.事务隔离级别有哪些?MySQL的默认隔离级别是?

206.大表如何优化?

207.分库分表之后,id主键如何处理?

208.说说在 MySQL 中一条查询 SQL 是如何执行的?

209.索引有什么优缺点?

210.说说 InnoDB 与 MyISAM 有什么区别?

211.MySQL 索引类型有哪些?

212.什么时候不要使用索引?

213.说说什么是 MVCC?

214.MVCC 可以为数据库解决什么问题?

215.说说 MVCC 的实现原理

216.MySQL 事务隔离级别?

217.请说说 MySQL 数据库的锁?

218.说说什么是锁升级?

219.说说悲观锁和乐观锁

220.怎样尽量避免死锁的出现?

221.使用 MySQL 的索引应该注意些什么?

222.CHAR 和 VARCHAR 的区别?

223.主键和候选键有什么区别?

224.主键与索引有什么区别?

225.MySQL 如何做到高可用方案?

226.什么是微服务

227.SpringCloud有什么优势

228.什么是服务熔断?什么是服务降级?

229.Eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别?

230.负载平衡的意义什么?

231.什么是Hystrix?它如何实现容错?

232.什么是Hystrix断路器?我们需要它吗?

233.说说 RPC 的实现原理

234.eureka自我保护机制是什么?

235.什么是Ribbon?

236.Ribbon和Feign的区别?

237.说说一次 Dubbo 服务请求流程?

238.说说 Dubbo 工作原理

239.Dubbo 支持哪些协议?

240.注册中心挂了,consumer 还能不能调用 provider?

241.Dubbo 负载均衡策略?

242.Dubbo 容错策略

243.Dubbo 动态代理策略有哪些?

244.说说 Dubbo 与 Spring Cloud 的区别?

245.Zookeeper 和 Dubbo 的关系?

246.简述一下什么是Nginx,它有什么优势和功能?

247.Nginx是如何处理一个HTTP请求的呢?

248.列举一些Nginx的特性

249.请解释Nginx服务器上的Master和Worker进程分别是什么?

250.为什么要使用MQ

251.MQ有什么优缺点

252.Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别?

253.如何保证高可用的?

254.如何保证消息的可靠传输?如果消息丢了怎么办

255.如何保证消息的顺序性

256.如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决?

257.让你来设计一个消息队列,你会怎么设计

258.为什么要用缓存

259.使用 Redis 有哪些好处?

260.为什么 Redis 单线程模型效率也能那么高?

261.说说 Redis 的线程模型

262.为什么 Redis 需要把所有数据放到内存中?

263.Redis 的同步机制了解是什么?

264.pipeline 有什么好处,为什么要用 pipeline?

265.说一下 Redis 有什么优点和缺点

266.Redis 缓存刷新策略有哪些?

267.Redis 持久化方式有哪些?以及有什么区别?

268.持久化有两种,那应该怎么选择呢?

269.怎么使用 Redis 实现消息队列?

270.说说你对Redis事务的理解

271.Redis 为什么设计成单线程的?

272.什么是 bigkey?会存在什么影响?

273.熟悉哪些 Redis 集群模式?

274.是否使用过 Redis Cluster集群,集群的原理是什么?

275.Redis Cluster集群方案什么情况下会导致整个集群不可用?

276.Redis 集群架构模式有哪几种?

277.说说 Redis 哈希槽的概念?

278.Redis 常见性能问题和解决方案有哪些?

279.假如 Redis 里面有 1 亿个 key,其中有 10w 个 key 是以某个固定的已知的前缀开头的,如果将它们全部找出来?

280.如果有大量的 key 需要设置同一时间过期,一般需要注意什么?

281.什么情况下可能会导致 Redis 阻塞?

282.缓存和数据库谁先更新呢?

283.怎么提高缓存命中率?

284.Redis 如何解决 key 冲突?

285.Redis 报内存不足怎么处理?

286.说说Redis持久化机制

287.热点数据和冷数据是什么

288.redis的数据类型,以及每种数据类型的使用场景

289.redis的过期策略以及内存淘汰机制

290.了解Redis的事务吗?

291.Redis 的数据类型及使用场景

292.分布式幂等性如何设计?

293.简单一次完整的 HTTP 请求所经历的步骤?

294.说说你对分布式事务的了解

295.你知道哪些分布式事务解决方案?

296.什么是二阶段提交?

297.什么是三阶段提交?

298.那你说说Sagas事务模型

299.分布式ID生成有几种方案?

300.幂等解决方法有哪些?

301.常见负载均衡算法有哪些?

302.你知道哪些限流算法?

303.说说什么是计数器(固定窗口)算法

304.说说什么是滑动窗口算法

305.说说什么是漏桶算法

306.说说什么是令牌桶算法

307.数据库如何处理海量数据?

308.如何将长链接转换成短链接,并发送短信?

309.长链接和短链接如何互相转换?

310.长链接和短链接的对应关系如何存储?

311.如何提高系统的并发能力?

312.TCP 如何保证可靠性

313.说说分段存储的思想

314.谈谈你对段合并的策略思想的认识

315.能说说ElasticSearch 写索引的逻辑吗?

316.熟悉ElasticSearch 集群中搜索数据的过程吗?

317.了解ElasticSearch 深翻页的问题及解决吗?

318.熟悉ElasticSearch 性能优化

319.ElasticSearch 查询优化手段有哪些?

320.elasticsearch 是如何实现 master 选举的?

321.elasticsearch 索引数据多了怎么办,如何调优,部署?

322.说说你们公司 es 的集群架构,索引数据大小,分片有多少?

323.什么是ElasticSearch?

324.ElasticSearch中的集群、节点、索引、文档、类型是什么?

325.ElasticSearch中的分片是什么?

326.ElasticSearch中的副本是什么?

327.ElasticSearch中的分析器是什么?

328.什么是ElasticSearch中的编译器?

329.什么是ElasticSearch中的过滤器?

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值