程序员面试必备的Java八股文,适合所有的Java求职者

说明

本文分享Java后端真实高频面试题,有详细答案,保你稳过面试。题目包括:Java基础、多线程、JVM、数据库、Redis、Shiro、Spring、SpringBoot、MyBatis、MQ、ELK、SpringCloud、设计模式等。

在这里插入图片描述
包含从简单到困难、从高频到低频的题目,适合所有Java求职者,包括:应届生、转行的、三年以内经验的、三到五年经验的、五到十年经验的等

你要跳槽时是否遇到过如下问题?

  • 没有题库,不知道如何开始复习
  • 有题库,但题目超级多,根本看不完
  • 背完题库中的面试题了,却发现面试官的问题大部分都不在题库中,导致面试老是挂,拿不到offer

此套面试题的特点

这是一套真实、靠谱的题目。它的特点是:

  • 很强大,面试官的问题基本都在这套题里(看过这套题的朋友都说,面试时85%以上的题目都在这些题目里,成为了offer收割机)
  • 真实、靠谱(这套题是我在几十场面试中被面试官问到的问题)
  • 精选、高频(数量合适,很快就能看完)
  • 有难度和频率的标记(着急跳槽的可以只看频率为三颗星及以上的题目)

看过我这篇文章的几个朋友和同事参加了面试后跟我说,他们面试被问到的问题大部分(85%以上)都在这个文章里。

我在面试时经常会遇到这种情况:95%的题目在本文中,我对答如流,不知道面试官是否会怀疑泄题了。这些面试也都很稳地拿到了offer。

难度与频率

面试题采用五角星来评判题目的难度和被问到的频率,最高为五颗星。

如果是三年以上的经验,只看难度为三颗星及以上的题目即可。如果是一两年经验,看个人水平,水平好些的可以看一颗星到五颗星所有题目(我知道有这样的朋友:虽然经验少,但爱学习,一两年的经验拥有普通人四五年的技术能力)

在这里插入图片描述

基础(难度:★★★ 频率:★)

在这里插入图片描述

String

  • String, StringBuffer, StringBuilder区别(难度:★ 频率:★★★)
  • String对象数目(难度:★★★ 频率:★)
  • intern方法的作用(难度:★★★ 频率:★)
  • 如何修改String对象的数据?(难度:★★★ 频率:★★)

static

  • static的5种用法(难度:★★ 频率:★)
  • 为什么静态方法不能调用非静态方法和变量?(难度:★★★ 频率:★★★)

异常

  • 异常类型(难度:★★ 频率:★★★★)
  • catch里return了,finally是否执行?(难度:★★ 频率:★)

IO

  • 字节流与字符流区别?(难度:★★ 频率:★★)
  • BIO, NIO, AIO 区别?(难度:★★★ 频率:★)
    在这里插入图片描述

JDK8

  • JDK8新特性(难度:★★ 频率:★★)
  • JDK8接口的default和static(难度:★★ 频率:★)
  • JDK8 Stream API 流操作包括哪些部分?项目中怎么用的Stream?(难度:★★ 频率:★)

语法

  • 项目中对泛型的使用(难度:★★ 频率:★★)
  • 接口与抽象类的区别?(难度:★★ 频率:★)

类库

  • SimpleDateFormat线程安全吗?怎么保证线程安全?(难度:★★★ 频率:★★★)

反射

  • Java反射:forName和classLoader的区别(难度:★★★ 频率:★)
  • 反射机制中可以获取private成员的值吗?(难度:★★★ 频率:★)
  • 可以。法1.通过setter和getter获得 法2:通过Field类提供的set()和get()方法
  • 另见《Java开发实战经典 第2版》=> 15.4 Java反射机制的深入应用

其他

  • 拆箱与装箱(难度:★ 频率:★)

集合

List

  • List与Set的区别(难度:★ 频率:★)
  • ArrayList与LinkedList异同点?(难度:★ 频率:★★)
  • List与数组的区别?(难度:★ 频率:★)
  • ArrayList是否线程安全?如何线程安全地操作ArrayList?(难度:★★★ 频率:★★★★★)
  • ArrayList扩容机制(难度:★★★ 频率:★★★★)
  • List.subList的坑?(难度:★★ 频率:★)
  • List如何安全删除(难度:★★ 频率:★)
  • List如何去重?(难度:★ 频率:★★)
  • List如何实现排序(难度:★ 频率:★★)
  • 为什么引入迭代器?(难度:★★ 频率:★)
  • List哪种遍历性能好,为什么?(难度:★★ 频率:★)

Map

1.HashMap、TreeMap、LinkedHashMap和区别?(难度:★★ 频率:★★★★★)

2.JDK8的HashMap和ConcurrentHashMap的改变?(难度:★★ 频率:★★★★)

3.HashMap数据结构、哈希冲突解决方法(难度:★★★ 频率:★★★★)

4.HashMap扩容的原理(难度:★★★ 频率:★★★★)

5.HashMap为什么线程不安全?如何线程安全地操作?(难度:★★★ 频率:★★★★★)

6.ConcurrentHashMap原理?(难度:★★★ 频率:★★★★★)

7.String的hashCode怎么实现的?(难度:★★ 频率:★)

8.hash:s[0] * 31^(n-1) + s[1] * 31^(n-2) + … + s[n-1]

9.HashMap和HashSet的区别及其实现原理?(难度:★★ 频率:★)

  • HashMap:将key.hashCode()作为hash值存放,将value直接作为value。
  • HashSet:调用HashMap的put方法;将key.hashCode()作为hash值存放,将HashSet类的final变量PRESENT作为value。

10.HashMap如果使用对象最为key,要注意什么?(难度:★★ 频率:★)

  • 重写hashCode和equals。

11.对象比较为什么重写hashCode和equals?(难度:★★ 频率:★)

  • 重写equals方法时需要重写hashCode方法,主要是针对Map、Set等集合类型的使用

  • a: Map、Set等集合类型存放的对象必须是唯一的;

  • b: 集合类判断两个对象是否相等,是先判断HashCode是否相等,如果HashCode返回TRUE,还要再判断equals返回值是否ture,只有两者都返回ture,才认为该两个对象是相等的。

JVM

运行时数据区

  • 运行时数据区是怎样的?线程安全(即线程私有)的有哪些?(难度:★★ 频率:★★★★)
  • 对象实例、类信息、常量、静态变量分别在运行时数据区的哪个位置?(难度:★★ 频率:★★)

类加载

  • Java类加载流程?初始化流程?(难度:★★ 频率:★★★★★)
  • JVM双亲委派模型(难度:★★★ 频率:★)

内存泄露

  • Java内存泄露什么时候会发生?(难度:★★ 频率:★★)
  • 为什么内部类持有外部类可能内存泄露?如何解决?(难度:★★ 频率:★)
  • 为什么ThreadLocal会导致内存泄露?如何解决?(难度:★★★ 频率:★★)

在这里插入图片描述

垃圾回收

1.引用类型及其含义(难度:★★ 频率:★★★)

2.finalize方法做什么用的?(难度:★ 频率:★)

  • 垃圾回收时会调用此方法

3.可以作为GC.Roots的对象有哪些?(难度:★★★ 频率:★)

4.调用System.gc()会立刻垃圾回收吗?(难度:★★ 频率:★)

5.Minor GC和Full GC的触发时机。(难度:★★★ 频率:★★)

6.频繁Full GC如何排查(难度:★★★★ 频率:★)

7.JDK默认的垃圾回收器是什么?(难度:★★ 频率:★)

8.CMS垃圾回收器的流程?(难度:★★★ 频率:★★★★)

9.CMS和G1区别(难度:★★★ 频率:★★★)

10.CMS与其他老年代垃圾回收器的区别?(难度:★★★ 频率:★)

在这里插入图片描述

JVM调优

  • JVM通常设置哪些参数来调优?(难度:★★ 频率:★★★★)
    在这里插入图片描述

其他

  • 怎么分配堆外内存(难度:★★ 频率:★)

多线程

综合

1.项目中哪些地方用到了多线程?(难度:★★★ 频率:★★★★★)

  • 处理定时的任务。 比如:定时器定时处理数据进行统计等
  • 异步处理。 比如:发邮件, 记录日志, 发短信等。比如注册成功后发激活邮件
  • 批量处理,缩短响应时间。比如:SpringBoot–多线程处理

2.线程的安全性问题体现在哪些方面?(难度:★★ 频率:★)

3.死锁产生的条件?(难度:★★ 频率:★)

4.i++是否线程安全?(难度:★ 频率:★)

  • 不是线程安全的。要线程安全可以用java.util.concurrent.atomic

5.JMM内存结构(难度:★★★ 频率:★★)
在这里插入图片描述

synchronized

  • synchronized用于静态方法与普通方法有区别吗?(难度:★★ 频率:★★)
  • synchronized锁的升级是怎样的?(难度:★★★ 频率:★)
    在这里插入图片描述

线程池

  • 线程池缺点(难度:★★ 频率:★★)
  • BlockingQueue:线程池fixed, single, scheduled, cached对应的队列(难度:★★ 频率:★★★)
  • ThreadPoolExecutor有哪些参数?(难度:★★ 频率:★★★★★)
  • CPU密集与IO密集的场景如何设置线程池参数?(难度:★★★ 频率:★★★)
  • 什么时候触发最大线程条件?(难度:★★ 频率:★★★★★)
  • 线程池拒绝策略有哪些?默认是哪个?(难度:★★ 频率:★★★★)
  • 线程池里的异常时如何处理的?(难度:★★ 频率:★)

在这里插入图片描述

JUC

  • ReentrantLock显著缺点?(难度:★★★ 频率:★★)
  • CAS和AQS了解吗?原理是什么(难度:★★★ 频率:★★)
  • synchronized与ReentrantLock区别?(难度:★★ 频率:★★)
  • 有哪些原子类?用过哪个?(难度:★★★ 频率:★)
  • 项目里用了哪些锁?(难度:★★★ 频率:★★★)
    在这里插入图片描述
    单体项目里用到了ReentrantLock、synchronized;
    单例模式里用到了synchronized
  • JDK8新增的异步编程了解吗?(难度:★★★ 频率:★)
  • 多线程顺序交替执行的方法(有三个线程A,B,C,依次打印出A,B,C)(难度:★★★ 频率:★)

方案1:Java多线程-使用堵塞队列实现顺序消费

方案2:模拟阻塞队列

  • 使用Object的wait(), notify(),使用一个互斥锁。

MySQL

综合问题

  • MyISAM与InnoDB区别(难度:★ 频率:★★★★)
  • sql注入怎么解决?(难度:★★★ 频率:★★)
  • 三大范式(难度:★★ 频率:★)
  • 怎么样幂等(难度:★★★ 频率:★★)
  • 一条SQL查询语句的执行流程(难度:★★ 频率:★★)
  • 大表分页的优化方法?(难度:★★★★ 频率:★)
  • 为什么不要用外键?(难度:★★★ 频率:★)
  • 批量往数据库导入1000万条数据方法?(难度:★★ 频率:★)
    在这里插入图片描述

存储过程

  • 数据库优化方式(难度:★★★ 频率:★)

建立索引、字段冗余(减少联表查询)、使用缓存、读写分离、分库分表

  • 怎么调试存储过程(难度:★★ 频率:★)
  • MySQL的三种驱动类型 难度:★★ 频率:★)
    在这里插入图片描述

事务

  • 隔离级别是怎样的?脏读、幻读是什么意思?(难度:★★★ 频率:★★★★★)
  • 隔离级别如何选用?(难度:★★ 频率:★★)
  • ACID(难度:★★ 频率:★)
  • 隔离级别是如何实现的?(MVCC)(难度:★★★★ 频率:★★)
  • 快照读与当前读 是怎样的?(难度:★★★★ 频率:★★)
    在这里插入图片描述

索引

  • 索引的种类(难度:★★ 频率:★★★)
  • 数据库使用索引的缺点?(难度:★★ 频率:★★★)
  • 创建索引的原则(难度:★★ 频率:★★★★)
  • 索引什么时候会失效(难度:★★ 频率:★★★★★)
  • 创建了A, B, C联合索引,使用B,C能否索引(难度:★★★ 频率:★★★★★)
  • LIKE什么时候走索引,什么时候不走索引?(难度:★★★ 频率:★★★)
  • ORDER BY是否走索引?(难度:★★★ 频率:★★)
  • 聚集索引是什么?什么是回表?(难度:★★★★ 频率:★★★★)
  • 索引原理;为什么采用B+树?(难度:★★★★ 频率:★)

在这里插入图片描述

  • 共享锁与独占锁的区别?(难度:★★ 频率:★)
  • 什么时候会死锁?(难度:★★★★ 频率:★)
    在这里插入图片描述

分库分表

  • 什么时候考虑分库分表?分库分表要考虑什么问题?(难度:★★★ 频率:★)

  • 原来没分库分表,后期如何分库分表?(难度:★★★★ 频率:★★)

  • 分库分表的中间件(难度:★★ 频率:★★)

  • Sharding-JDBC、Mycat

  • 水平分表,有哪些规则?(难度:★★★ 频率:★★★★★)

  • 如何维护全局的id(难度:★★★ 频率:★★★★★)

语句

  • 语句类笔试题(难度:★★★ 频率:★)

  • OR与IN的效率?(难度:★★★ 频率:★)

  • 内联结,全(外)联结,左联结,右联结,的含义?(难度:★★ 频率:★)

Redis

基本问题

  • Redis数据类型及其使用场景(难度:★★★ 频率:★★★★★)
  • Redis的数据类型对应的底层结构是怎样的?(难度:★★★★ 频率:★★★)
  • Redis为什么很快?(难度:★★ 频率:★★★★★)
  • Redis是单线程为什么速度依然快?(难度:★★ 频率:★★)
  • Redis持久化AOF,RDB区别(难度:★★ 频率:★★★★)
  • 持久化:长久下来AOF文件会很大怎么办?(难度:★★★ 频率:★★)
  • Redis有哪些原子命令?(难度:★★★ 频率:★)
    在这里插入图片描述

Redis所有单个命令都是原子性的。

  • 穿透、无底洞、雪崩、击穿 解决方案?(难度:★★★ 频率:★★★★★)
  • Redis的发布订阅机制及其使用场景(难度:★★★★ 频率:★★)
  • 内存回收机制是怎样的?(或者说:淘汰策略)(难度:★★★ 频率:★★★★)
  • 给一个key怎么知道是用的哪种数据类型?(难度:★ 频率:★)

用type命令。例如:type key1

  • 为什么使用Redis,不用Memcache和MongoDB?(难度:★★ 频率:★★)
  • Redis与数据库如何同步?各个方式的缺点是什么?(难度:★★★ 频率:★★★)
  • Redis很慢,如何排查及解决?(难度:★★★★ 频率:★★)
  • 多线程操作同一个Key如何保证一致性?(微服务部署多个实例时如何保证一致性?)(难度:★★★★ 频率:★)
  • 秒杀的时候怎么使用Redis?(难度:★★★★ 频率:★★★)
  • 布隆过滤器原理?什么时候会误判?(难度:★★★★ 频率:★★★)
  • 用Redis如何实现延迟队列?(难度:★★★★ 频率:★)
    在这里插入图片描述

分布式锁

  • Redis做分布式锁如何处理超时时间?比如:超时时间是5秒,但要执行20秒,相当于没锁住;超时时间是20秒,但只需执行5秒(浪费)(难度:★★★★ 频率:★★★)
    设置中等长度的时间,线程执行完删除这个值;另起线程,定期去刷新这个值。Redisson的分布式锁就是这个方案

  • Redis实现分布式锁,集群环境如何处理主节点宕机这种情况?(难度:★★★★★ 频率:★)
    使用RedLock红锁算法:若过半的Redis节点能够setnx成功则表示获取锁成功,类似于zk实现分布式锁方式

集群

  • 多节点有哪些部署方式?(难度:★★ 频率:★)

主从、哨兵、集群(Cluster)

  • 集群不支持事务,如何解决?(难度:★★★★ 频率:★)

  • 主从集群中主节点死了以后,是否还能使用?如何解决?(难度:★★★ 频率:★)
    可以使用哨兵部署,自动故障转移。

  • 读写分离时读写分别在哪个节点(难度:★★ 频率:★)
    在主节点上写,在从节点上读。

集群(Cluster)

  • 集群(Cluster)如何进行节点通信?(难度:★★★★ 频率:★★)
  • 集群(Cluster)如何进行扩展(伸缩)?(难度:★★★ 频率:★★)
  • 集群(Cluster)如何进行故障转移?(难度:★★★★ 频率:★★)

设计模式

  • 项目里用到了哪些设计模式,怎么用的?(难度:★★★ 频率:★★★★★)
  • 设计模式的原则(难度:★★ 频率:★)、
  • 设计模式的类别(难度:★★ 频率:★)
  • 单例模式的写法?(难度:★★ 频率:★★★★)
  • 手写双重检验单例(为什么用volatile,为什么两次if判断)(难度:★★★ 频率:★★★)
  • 静态代理与动态代理区别?(难度:★★★ 频率:★★★★★)
    在这里插入图片描述

框架

Spring

IOC

  • Spring循环依赖解决方法及原理(难度:★★★★ 频率:★★★★)
  • Spring的循环依赖用的是三级缓存,为什么不是两级?(难度:★★★★ 频率:★★)
  • FactoryBean和BeanFactory区别(难度:★★★★ 频率:★★)
  • BeanFactory和ApplicationContext区别?(难度:★★★★ 频率:★)
  • bean的生命周期是怎样的(难度:★★★ 频率:★)
  • Spring几种scope区别(难度:★★★ 频率:★)
  • Spring容器的生命周期是怎样的?(难度:★★★ 频率:★)
  • SpringAOP解决了什么问题?(难度:★★★ 频率:★★)
  • SpringAOP实际开发过什么功能?(难度:★★★ 频率:★★★)
  • AOP原理?(难度:★★★★ 频率:★★★★★)
    在这里插入图片描述
    在这里插入图片描述

AOP

  • AOP有哪几种通知,如果方法执行报异常,哪个通知不会执行?(难度:★★★★ 频率:★)
    前置,后置,环绕,返回,异常。若报异常,返回不会执行。

事务

  • Spring默认数据里隔离级别是什么?项目里用的哪个?(难度:★★★ 频率:★★)
    默认采用数据库的隔离级别。项目里就是用的默认的

  • Spring事务失效场景?(难度:★★★★ 频率:★★★★)

  • Spring事务传播机制?(难度:★★★★ 频率:★★)

其他

  • SpringBoot如何热部署?yml配置文件修改后是否也能及时更新?(难度:★★★ 频率:★)
  • SpringBoot自动配置原理?(难度:★★★★★ 频率:★)

SpringMVC

  • SpringMVC流程(难度:★★★★ 频率:★★★)
  • servlet的过滤器、拦截器、AOP的执行顺序 (难度:★★★ 频率:★★)
    在这里插入图片描述

SpringBoot

  • SpringBoot的启动流程?(难度:★★★★ 频率:★★★★)
  • SpringBoot的动态代理默认用的哪个(cglib还是JDK)?(难度:★★★★ 频率:★★★★)

SpringBoot 1.5.x:默认使用JDK代理,SpringBoot 2.x:默认使用CGLIB代理。

  • 怎么自己写SpringBootStarter(难度:★★★★ 频率:★)

MyBatis

  • MyBatis的#与$有什么区别?(难度:★★ 频率:★★★★)
  • MyBatis的原理?(Mapper是个接口,它的实现类在哪?)(难度:★★★★ 频率:★★)
  • 为什么MyBatis与Spring整合二级缓存会失效 ?(难度:★★★★ 频率:★)

中间件

MQ

综合

  • RabbitMQ,RocketMQ和Kafka区别(难度:★★ 频率:★★★★★)

RabbitMQ

  • RabbitMQ有哪些交换器?RabbitMQ的交换器与队列的关系?(难度:★★ 频率:★★★)
  • RabbitMQ的消息异常(丢失、重复、顺序、堆积)如何处理?(难度:★★★ 频率:★★★★★)
  • RabbitMQ消息是否会过期?(难度:★★★ 频率:★★)
  • RabbitMQ的消息什么时候会放到死信队列?(难度:★★★ 频率:★)
  • RabbitMQ的延迟队列是怎样的?(难度:★★★ 频率:★★)
  • RabbitMQ的集群有哪几种部署方式?(难度:★★ 频率:★)

    多机多节点,单机多节点

Kafka

  • 为什么Kafka性能很高(难度:★★★ 频率:★★★)
  • Kafka的消息异常(丢失、重复)如何处理?(难度:★★★ 频率:★★★★)
  • Kafka不支持延迟队列,如果用到延迟队列,该如何实现?(难度:★★★★★ 频率:★★★)

Shiro

  • Shiro怎么根据url对应权限,流程是什么?(难度:★★★ 频率:★★★)
  • session存放在哪里?(难度:★★ 频率:★)

分布式

综合

分布式

  • CAP理论是什么?Zookeeper和Eureka分别放弃了什么?(难度:★★★ 频率:★★★)
  • 分布式锁实现方式(难度:★★★ 频率:★★★★★)
  • 2PC、3PC、TCC的区别及使用场景?(难度:★★★★ 频率:★★)
  • 分布式session共享解决方案(难度:★★★ 频率:★★)
  • 为什么微服务一定要有网关?(难度:★★★ 频率:★)
    在这里插入图片描述

配置中心

  1. 如何把微服务的公共配置给拿出来?(难度:★★ 频率:★)
  2. 用spring.profiles.include,将公共的配置包含进去。
    使用Nacos,Nacos支持公共配置

Nacos

  • Nacos如何续期?(难度:★★★ 频率:★★)
  • Nacos支持AP还是CP?(难度:★★★ 频率:★★)
    两者都支持,选一种即可。(默认是AP)

Zookeeper

Zookeeper注册中心挂了,服务还能否调用?(难度:★★★ 频率:★★)

  • 可以,因为客户端还有缓存

ZK分布式锁,leader节点宕机了,会发生什么?(难度:★★★★ 频率:★)

  • 进行选举(过半选举)
    在这里插入图片描述
    在这里插入图片描述


在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. Java基础 Java基础是Java程序员必须掌握的知识,包括语言特性、面向对象、集合框架、多线程、IO流等等。在面试中,会考察Java基础的掌握程度,例如: - Java的基本数据类型和包装类有哪些? - 什么是自动装箱和拆箱? - 什么是面向对象?Java如何实现面向对象? - Java中的接口和抽象类有什么区别? - 什么是Java集合框架?常用的集合类有哪些? - Java中的线程是什么?如何创建和启动线程? - Java中的IO流有哪些?如何使用? 2. JVM JVM是Java程序的核心,它负责将Java代码编译成字节码,并在运行时将字节码转换为机器指令。在面试中,会考察对JVM的了解程度,例如: - 什么是JVM?它有哪些组成部分? - Java程序在JVM中是如何运行的? - 什么是类加载器?有哪些类加载器? - 什么是Java堆和Java栈?它们的作用是什么? - 什么是垃圾回收?Java中的垃圾回收机制是什么? 3. 数据库 数据库是Java开发中不可避免的一部分,Java程序员需要掌握SQL语言以及至少一种关系型数据库的使用。在面试中,会考察对数据库的了解程度,例如: - 什么是关系型数据库?有哪些常见的关系型数据库? - SQL语言中的基本语句有哪些?如何进行表的增删改查操作? - 什么是事务?如何使用事务? - 什么是索引?它的作用是什么?如何创建和使用索引? - 数据库的优化有哪些方面? 4. Web开发 Web开发是Java开发中的一个重要方向,Java程序员需要掌握Servlet、JSP、Spring、MyBatis等技术。在面试中,会考察对Web开发的了解程度,例如: - 什么是Servlet?如何使用Servlet? - 什么是JSP?如何使用JSP? - 什么是Spring框架?它的作用是什么?如何使用Spring? - 什么是MyBatis框架?它的作用是什么?如何使用MyBatis? - 什么是RESTful API?如何设计和实现RESTful API? 5. 分布式开发 分布式开发是Java开发中的一个重要方向,Java程序员需要掌握分布式系统的设计、开发和部署。在面试中,会考察对分布式开发的了解程度,例如: - 什么是分布式系统?有哪些常见的分布式系统架构? - 什么是RPC?如何使用RPC? - 什么是微服务?如何设计和实现微服务? - 什么是分布式缓存?有哪些常用的分布式缓存方案? - 什么是分布式事务?如何实现分布式事务?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值