问道面试题(小编有空就会更新)

问道面试题

实习期主要做什么?

说说你的项目;项目技术选型;你在该项目中负责那些具体的任务和功能模块?项目中遇到的最大挑战是什么?如何解决的?

在项目中,你是如何协作和沟通的?比如和其他开发人员、项目经理?

在项目中学到了哪些经验和教训?这些对你以后的职业生涯有何帮助?

SpringMVC的运行原理

客户端发起请求:当客户端发起一个请求时,请求会被发送到服务器端。

DispatcherServlet 处理请求:DispatcherServlet 是 SpringMVC 的核心组件,它接收到客户端的请求后,会根据请求的 URL 找到对应的处理器映射(HandlerMapping),并将请求分发给处理器(Controller)进行处理。

处理器处理请求:处理器根据请求的 URL 执行相应的业务逻辑,并将处理结果封装成一个 ModelAndView 对象返回给 DispatcherServlet。

视图解析器解析视图:DispatcherServlet 接收到 ModelAndView 对象后,会将其交给视图解析器(ViewResolver)进行解析,从而找到对应的视图(View)。

响应结果:DispatcherServlet 通过视图将处理结果渲染成 HTML 格式的响应,然后将响应发送给客户端。

+-------------+
|             |
| Dispatcher- |
| Servlet     |
|             |
+------+------+
|
|
|
|(1)根据请求URL找到对应的处理器映射
|
|
+------v-------+
|              |
| Handler      |
| Mapping      |
|              |
+------+-------+
|
|
|
|(2)将请求分发给处理器(Controller)进行处理
|
|
+------v-------+
|              |
|  Controller  |
|              |
+------+-------+
|
|
|
|(3)将处理结果封装成ModelAndView对象返回给DispatcherServlet
|
|
+------v-------+
|              |
| ModelAndView |
|              |
+------+-------+
|
|
|
|(4)将ModelAndView对象交给视图解析器解析
|
|
+------v-------+
|              |
| ViewResolver |
|              |
+------+-------+
|
|
|
|(5)响应结果
|
|
+------v-------+
|              |
|  Response    |
|              |
+--------------+

SpringBoot装配原理?


Spring Boot自动装配的原理是基于Spring框架的依赖注入和Java的条件编译。它能够根据类路径中的jar包、类以及配置文件,自动地为你的应用配置合适的Bean和属性
1. 当你启动Spring Boot应用时,@SpringBootApplication注解会触发自动装配功能。
2. Spring Boot会读取所有spring.factories文件,并收集其中的自动装配类。
3. 对于每个自动装配类,Spring Boot会检查它上面的条件注解。只有满足条件的配置类才会被加载到应用上下文。
4. 加载的配置类会创建和配置Bean,这些Bean会被添加到应用上下文中。

组件:
启动类上的@SpringBootApplication注解:这个注解是一个复合注解,它包含了@Configuration, @EnableAutoConfiguration和@ComponentScan三个注解。@EnableAutoConfiguration是自动装配的核心注解,它告诉Spring Boot启用自动装配功能。

spring.factories文件:这个文件位于META-INF目录下,用于列出所有支持自动装配的配置类。当你在项目中添加了一个Spring Boot Starter依赖,它通常会包含一个spring.factories文件。Spring Boot会扫描这个文件,找到所有的自动装配类。

条件注解:这些注解用于控制配置类和Bean的创建。例如,@ConditionalOnClass表示只有当指定的类存在于类路径中时,才会创建对应的Bean。Spring Boot提供了许多条件注解,如@ConditionalOnBean, @ConditionalOnMissingBean, @ConditionalOnProperty等。这些注解让自动装配更加灵活和可配置。

配置类:这些类用于描述如何创建和配置Bean。它们通常使用@Configuration注解,并包含@Bean方法。自动装配的配置类通常会使用条件注解,以便在满足一定条件时才创建Bean。

StringBuffer与SpringBuilder的区别?

StringBuffer与StringBuilder的方法一样,只不过StringBuffer是线程安全的,因为它内部的方法使用了synchronize关键字修饰,所以是线程安全的,普遍用与多线程的情况下。而SpringBuilder中的方法没有被synchronize修饰,所以线程不安全,普遍用于单线程的情况下

如何进行SQL语句的优化的?

避免返回不需要的列、在where子句中使用数字类型而不是用字符创、对查询进行分页避免返回过多的数据、使用表别名缩短SQL语句,提搞可读性、尽量使用表的主键或索引进行查询、定期对数据表进行碎片整理

在Linux上部署过项目没?

(没有)

6月28号 名特物流公司:

java创建对象的方式

使用new创建对象、clone()方法、反射机制、使用反序列化、使用工厂

jdbcTemplate(redisTemplate)是什么设计模式?

模板设计模式

在你的项目中RabbitMQ在哪里用到了?(实现了什么功能)

众筹请求、支付通知、项目审核结果

Redis的优点是什么?

高性能:基于内存存储数据、数据类型丰富、可持久化、主从复制

Redis缺点?

优点即是缺点:基于内从操作,有存储上限、单线程(比方说单个命令处理大量数据时,导致响应速度变慢)

你的项目中的订单是怎么处理的

用户登录后选择感兴趣的项目,可以查看项目的详细信息以及选择预设的支持金额和该金额对应的回报内容,添加收获地址后确认订单后会生成一个待支付的订单,将订单的id存入Redis中,值为项目id和用户id,用户点击支付会回调用支付接口,支付接口会现在Redis中检查是否存在这订单的id,如果存在则进行支付,不存在则表明订单已过期,拒绝支付。支付成功后在Redis中删除这个订单id。支付成功后订单状态变为已支付。同时通过mq告诉项目方已支付成功可以邮寄回报的东西。

说说mybatis的缓存

Mybatis分为一级缓存和二级缓存,以及缓存是SqlSession范围的,作用域是一个SqlSession内部,当调用SqlSession的查询方法时,如果之前查询过相同的SQL语句,那么会直接从缓存中查询获取结果,不需要再次查询数据库。
二级缓存是在mapper的命名空间内的缓存,它的作用域是同一个mapper的所有的SQLSession对象,多个SQLSession共享一个二级缓存。

说说深拷贝与浅拷贝

深拷贝与浅拷贝都是对数据进行复制,主要区别是拷贝的程度不同。
浅拷贝是创建一个新的对象,但是这个对象只是原本对象的一个副本,而不是原始对象本身的拷贝。如果原始对象中包含引用类型,那么浅拷贝所创建的新对象中的这些引用类型的数据仍然指向原始对象中的响应数据,也就是新对象和原始对象共享这些新数据。
深拷贝则是创建一个完全独立的新对象,这个新对象和原始对象没有任何关联。如果原始对象中包含引用类型的数据,那么深拷贝会递归地将这些引用类型的数据也进行拷贝,即新对象中的这些数据与原始对象中的是完全独立的。

说一下java的自动装箱与拆箱

Java中的自动装箱与拆箱是两个相关的概念,经常一起使用。
自动装箱是将基本数据类型转换为对应的包装类对象,而自动拆箱则是将包装类对象转换为对应的基本数据类型。

订单表中有没有加索引没?

如果订单表的数据量很大,那么加上索引会使查询速度更快。但是,如数据量不大,那么加上索引反而会使查询速度变慢。所以我需要根据具体情况使用。  我的项目中用户量较少目前是只加了主键唯一索引

平时了解过红黑树没?

红黑树是一种自平衡二叉查找树,他通过在每个结点上增加一个存储位来记录结点的颜色,可以在O(log n)时间内完成插入、删除和查找等操作。
它具有每个节点要么是红色,要么是黑色。根结点是黑色的,每个叶子结点是黑色的。如果一个节点是红色的,则它的两个子节点都是黑色的。对于任意结点而言,从该结点到其后代叶子节点的所有路径上包含相同数量的黑色结点。
红黑树的平衡性是通过对结点的颜色和旋转操作来维护的。插入和删除节点时,通过改变节点的颜色和旋转节点的位置来保证平衡性。
红黑树广泛用于实现集合、映射等数据结构。

平时怎么处理java异常的

使用try-cache代码块进行捕捉并处理,比如在cache块中,可以进行日志记录、展示错误信息、重试等操作。

finally代码块中用了return 返回的值是什么

依然是finally块中的数据

说说项目中为什么使用spring框架(Spring框架的优点)

Spring是一个轻量级、开源的javaEE框架,提供了一系列特性,比如IOC容器、AOP、事务管理、数据访问、
web开发

谈谈对IOC的理解

IOC,即Inversion of Control(控制反转),是一种设计模式,它的核心思想是将对象的创建和管理交给外部容器来完成,而不是由程序员手动完成。在IOC中,程序员只需要定义对象之间的依赖关系,而不需要直接在代码中进行对象的创建和管理,从而实现了对象之间的解耦。
在实现IOC的过程中,通常需要使用到一个容器,这个容器负责管理对象之间的依赖关系,包括创建、销毁和依赖注入等。容器可以通过配置文件或注解等方式来实现对象的创建和管理,程序员只需要定义好对象之间的依赖关系,容器就会根据配置文件或注解自动创建对象,并将它们注入到需要它们的对象中。

谈谈你对Spring的循环依赖的理解

Spring的循环依赖指的是两个或多个Bean之间存在相互依赖,即A依赖B,而B又依赖于A,这时Spring容器无法完成Bean的创建。当存在循环依赖时,Spring的IOC容器会抛出BeanCurrentlyInCreationException异常,表示在创建Bean时发生了循环依赖。
解决方案(2种):
构造器注入:
在需要注入的Bean中使用构造函数注入代替属性注入。构造器注入可以在Bean的实例化过程中传递依赖对象,从而避免了循环依赖的问题
通过代理对象解决:
使用Spring的代理机制来解决循环依赖问题。当一个Bean需要依赖另一个Bean时,容器先创建一个代理对象,然后将代理对象注入到需要依赖的Bean中。当需要实际使用依赖对象时,代理对象会通过容器获取到实际的依赖对象,并将调用转发给实际的依赖对象。

本质上使用了三级缓存:Spring初始化Bean的过程中,先将对象工厂放入二三级缓存中,然后尝试查找一级缓存是否已经有目标bean。如果有则直接使用,如果没有则初始化bean。通俗说就是在创建A时发现A引用了B则创建B,然后创建B时发现B引用了A,则去缓存中拿A。

项目中使用到事务吗?

使用了Spring的@Transactional注解来控制事务:
在下单购买的地方使用到了,处理订单的的方法上使用@Transactional注解开启事务,验证库存是否足够,如果不足则直接回滚,否则扣减库存,然后生成订单,扣减余额,如果没有异常的话就提交事务。

事务的隔离级别

可以说明项目选择的是什么隔离级别,比如读提交、可重复读、串行化等。并分析各自的优缺点。

Spring中用到了那些设计模式?

工厂模式:Spring中的BeanFactory和ApplicationContext就是典型的工厂模式,通过工厂方法创建和管理对象并且支持单例和原型模式。
模板模式:Spring中的JdbcTemplate或者RedisTemplate就是模板模式的应用
观察者模式:Spring框架中的事件机制就是观察者模式
代理模式:Spring中的AOP就是基于代理模式实现的
桥接模式:Spring JDBC框架中使用了桥接模式,将JDBC API与SPring框架进行了解耦,从而实现了对JDBC访问的简介和便捷
迭代器模式:Spring中像List、Map、Set都实现了迭代器模式,
装饰器模式:Spring框架中的AOP就是基于装饰器模式实现的,通过装饰器模式,Spring能够在不修改原有代码的情况下,为对象添加新的行为(如事务管理、日志记录)。

说说SpringBoot的@SpringBootApplication注解

这个注解是一个复合注解,包含了@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan三个主要的注解。

@ComponentScan:用于扫描指定包及其子包下的所有被标记为@Component、@Service、@Repository、@Controller的类,并将它们注册为Bean。

@EnableAutoConfiguration:用于启用SpringBoot的自动配置机制。他会根据项目中引入的依赖以及应用程序所在环境来推断并加载响应的默认配置。
@SpringBootApplication:标识该类为配置类

1.说说你的项目?
2.项目的难点? (项目中的收藏功能, 批量操作+Redis解决)
3.Elasticsearch倒排索引简单介绍一下? (介绍项目中实际用到的)
4.Mysq|索引,什么时候索引失效? (9%, 主键的选择,where, select *)
5.MySQL锁介绍-下? (行锁, 表锁,乐观锁,悲观锁)
6.项目中用到哪些注解? (说了 常用的几个,提到项目中用到的-个自定义注解)
7.给你一个功能模块,你如何实现? (需求分析, 设计表,每一层代码,增删改查接口,分页查询)
8.B+树介绍一下? (数据存储到叶子结点, 非叶子结点存储关键字)
9.数组和HsahMap的区别? (数組链表红黑树)
10.Redis为什么那么快? (单线程 +基于内存)
11.数据结构了解哪些? (数組、链表、树、栈、队列)
12.堆排和快排的区别? (不了解)
13.图你了解哪些? (不了解)
14.平衡二二叉树,如何遍历? (前中后序遍历)
15.HashMap添加一个值哪几个步骤? (数組链表红黑树)

1.介绍一下你的项目?
2.项目是独立完成的?
3.8种数据类型
4.操作字符串,stringBuffer, stringBuilder区别? (视频里面说错了 )
5.抽象类和接口的区别?
6.抽象类可以有构造函数么?
7.Java容器(集合) ?
8.HashMap, key和value是 否都可以为null?
9.ArrayList与LinkedList的区别?
10.线程和进程的区别?
11.多线程的实现方式?
12.Callable和Runnable的区别?
13.线程的死锁?
14.如何解决死锁问题?
15.Java反射?
16.Java中final, finally和finalize的区别
18.为什么用到spring?
19.SpringMVC执行流程?
20.数据库原子性?
21.数据库断电怎么办?
22.left join,right join, inner join区别?
23.如何优化一条sq|?

1.介绍项目?
2.项目用户量有多少? (200多)
3.网站使用情况?
4.项目部署起来占用多少资源,资源占用多少?
5.用户量大了,宕机了怎么处理?
6.内网可以访问,外网怎么发邮箱,短信?
7.系统的资源如何保护?
8.内部攻击获取了?
9.FTP用过么?
10.考虑分布式部署?
11.,题库数据量大了哪几个方面调优?
12.SQL语句是如何解析的?
13.最小化查询?
14.HR:什么时候放假?
15.HR:哪里人?

6月26

面向对象原理是什么?

面向对象是一种思想和编程范式,它以对象作为程序的基本单元,通过**封装、继承和多态**等机制来描述和实现现实世界中的事物和关系,具有抽象能力强、可维护性好、可重用性高和程序设计灵活等优点。

面向对象的封装是什么?

封装(Encapsulation)是面向对象编程的三大特性之一,它指的是将数据和操作数据的方法封装在一个类中,并对外部隐藏其实现细节,只暴露必要的接口和方法
封装的实现方式主要是使用访问控制符来限制成员变量和成员函数的访问权限

多态特性通过什么提现的?

多态是面向对象编程的三大特性之一,它通过让不同的对象对同一消息做出不同的响应来实现。多态特性主要通过以下几种方式来体现:

1. 方法重载(Overloading):方法重载是在一个类中定义多个方法,方法名相同但参数列表不同,从而让相同的操作可以接收不同类型或数量的参数。在调用方法时,编译器会根据参数类型和数量来判断应该调用哪个方法。

2. 方法重写(Overriding):方法重写是在子类中重新定义父类中已有的方法,使其具有不同的实现。在调用方法时,根据对象的类型来确定应该调用哪个方法。

3. 接口(Interface):接口是一种抽象类型,它定义了一组方法签名,而没有方法的实现。一个类可以实现多个接口,从而具有多态的特性。在调用方法时,根据对象的类型来确定应该调用哪个方法。

4. 抽象类(Abstract Class):抽象类是一种不能被实例化的类,它可以包含抽象方法和非抽象方法。一个类可以继承自一个抽象类,并实现其中的抽象方法,从而具有多态的特性。在调用方法时,根据对象的类型来确定应该调用哪个方法。

总的来说,多态是通过方法重载、方法重写、接口和抽象类等机制来实现的,它可以让不同的对象对同一消息做出不同的响应,从而提高程序的灵活性和可扩展性。

数组与链表的区别是什么?

- 对于数组,插入和删除操作需要移动后续元素的位置,因此时间复杂度为 O(n);而链表只需要改变指针的指向,时间复杂度为 O(1)。

- 插入和删除操作:对于数组,插入和删除操作需要移动后续元素的位置,因此时间复杂度为 O(n);而链表只需要改变指针的指向,时间复杂度为 O(1)。

- 访问元素:由于数组的元素是连续存储的,因此可以通过下标来直接访问元素,时间复杂度为 O(1);而链表只能从头节点开始遍历,因此访问元素的时间复杂度为 O(n)。

- 空间复杂度:由于数组需要预先分配一定的连续空间,因此空间复杂度固定为 O(n);而链表中的元素可以动态分配空间,因此空间复杂度可以根据实际需求进行调整。

	**如果需要快速访问元素,可以选择数组;如果需要频繁进行插入和删除操作,可以选择链表。**

常用的排序算法(八大排序)有哪些?

常用的排序算法有以下几种:

1. 冒泡排序(Bubble Sort):将相邻的元素两两比较,如果顺序不对就交换,重复多次直到排序完成。

2. 选择排序(Selection Sort):每次从未排序的序列中选取最小值,将其放到已排序序列的末尾。

3. 插入排序(Insertion Sort):将未排序的元素逐个插入到已排序序列的合适位置。

4. 快速排序(Quick Sort):利用分治的思想,选择一个基准元素,将序列分成两个子序列,左子序列小于等于基准元素,右子序列大于基准元素,递归地对子序列进行排序。

5. 归并排序(Merge Sort):利用分治的思想,将序列分成两个子序列,递归地对子序列进行排序,然后将排好序的子序列合并成一个有序序列。

6. 堆排序(Heap Sort):将待排序序列构建成一个大(小)根堆,每次将堆顶元素与最后一个元素交换,然后重新调整堆,重复多次直到排序完成。

7. 希尔排序(Shell Sort):将序列按照一定的间隔进行分组,对每组进行插入排序,然后不断缩小间隔,重复进行插入排序,直到间隔为 1。

总的来说,不同的排序算法适用于不同的数据规模和排序需求,在实际开发中需要根据实际情况选择合适的算法。常用的排序算法中,冒泡排序和选择排序的时间复杂度为 O(n^2),插入排序的时间复杂度为 O(n^2) 或 O(n),快速排序、归并排序和堆排序的时间复杂度为 O(n log n),希尔排序的时间复杂度为 O(n log n)。

用过递归函数没?

没有

时间复杂度是什么?


O(n)中的n是什么意思?

O(n)中的n通常表示问题的规模或者数据的大小,表示算法的时间复杂度或者空间复杂度与问题规模或数据大小成正比

C++与C的区别是什么?


Java实习生期间的工作

作为一名Java后端开发实习生小白,在实习期需要做的工作可以概括为以下几点:

  1. 学习和了解公司的业务和技术:在实习期开始前,您可以先了解一下公司的业务和技术栈,学习一些Java后端开发的基础知识,例如Java语言、Spring框架、数据库等。这样可以帮助您更快地适应公司的工作环境和工作流程。

  2. 参与项目开发:在实习期间,您将会参与项目的开发和维护工作,需要按照团队领导的安排完成相应的任务。在完成任务的过程中,需要认真学习和理解代码,掌握开发流程和工具,积极沟通和交流。

  3. 务实和认真对待每一个任务:作为实习生,您的工作可能会比较基础和繁琐,例如编写文档、修复代码缺陷等。但是,这些任务同样重要,需要认真对待,保证质量和准确性。

  4. 提高自己的技术能力:在实习期间,您可以利用业余时间学习一些新的技术和工具,例如云计算、微服务等,提高自己的技术能力,为以后的职业发展打下基础。

  5. 与同事和上级保持良好的沟通:在工作中,需要与同事和上级保持良好的沟通,及时反馈工作进展和问题,主动请教和学习,避免出现误解和矛盾。

  6. 学习团队的工作流程和规范:每个团队都有自己的工作流程和规范,您需要了解并熟悉团队的工作方式、开发流程和代码规范等。这样可以帮助您更好地融入团队,更快地适应工作环境。

总之,作为一名Java后端开发实习生小白,需要努力学习和提高自己的能力,积极参与工作,认真对待每一个任务,与同事和上级保持良好的沟通,这样才能在实习期间获得更多的经验和成长。

SpringCloud的组件都有哪些

Spring Cloud是一个基于Spring Boot的开源微服务框架,它提供了一系列的组件和工具,用于简化分布式系统的开发和部署。下面是Spring Cloud中常用的一些组件:

  1. Eureka:服务注册与发现组件,用于管理服务实例的注册和发现,实现微服务架构中的服务发现与负载均衡。

  2. Ribbon:客户端负载均衡组件,用于将客户端的请求分配到多个服务实例上,实现负载均衡和容错机制。

  3. Feign:声明式服务调用组件,用于简化服务调用的过程,将RESTful API转化为Java接口,实现服务接口的声明式调用。

  4. Hystrix:容错框架,用于处理分布式系统中的故障和延迟问题,实现服务的降级、熔断和限流等功能。

  5. Zuul:API网关组件,用于实现服务的路由和过滤,支持动态路由和负载均衡,提供了安全性和监控功能。

  6. Config:配置中心组件,用于集中管理分布式系统的配置信息,实现配置的动态更新和版本管理。

  7. Bus:消息总线组件,用于将配置中心的变更信息通知到分布式系统中的各个服务实例,实现配置的实时更新。

  8. Sleuth:分布式跟踪组件,用于跟踪分布式系统中的请求流程,实现请求链路追踪和监控。

  9. Stream:消息驱动组件,用于实现分布式系统中的异步消息处理和事件驱动模型。

  10. Security:安全组件,用于提供身份认证和授权功能,实现分布式系统的安全保护。

这些组件都是Spring Cloud中常用的组件,它们可以相互配合,实现一个完整的分布式系统。

作为面试官,我可能会问以下几个问题:

  1. 你在意选网上商城项目中的具体角色是什么?你在该项目中负责哪些具体的任务和功能模块?

答:我在意选网上商城项目中的角色是后端开发实习生,主要负责实现后端业务逻辑和接口开发。我负责的任务包括但不限于用户管理、订单管理、支付管理等功能模块。

  1. 你在项目中遇到的最大挑战是什么?你是如何解决这些挑战的?

答:在项目中遇到的最大挑战是如何优化数据库的性能。由于项目的数据量很大,查询速度非常慢,我通过调整SQL语句、建立索引、使用缓存等多种方式最终成功优化了数据库性能。

  1. 在项目中,你是如何协作和沟通的?你是如何与其他开发人员、项目经理和业务人员进行沟通和协作的?

答:在项目中,我与其他开发人员、项目经理和业务人员进行了频繁的沟通和协作。我们主要通过团队会议、邮件、Slack等工具进行沟通和协作。我也经常与其他开发人员进行代码评审和交流,以确保代码质量和项目进度。

  1. 你在项目中使用了哪些技术栈和工具?你对这些技术栈和工具的掌握程度如何?

答:在项目中,我使用了Java语言和Spring框架进行后端开发,并使用了MySQL数据库进行数据存储。我还使用了Git进行代码版本控制和Maven进行依赖管理。

  1. 你认为意选网上商城项目中最成功的功能是什么?为什么?你有哪些具体的贡献?

答:我认为意选网上商城项目中最成功的功能是订单管理功能。该功能实现了用户下单、订单支付、订单查询等核心功能,并且在代码实现上结构清晰、逻辑严谨、易于扩展。在该功能的开发过程中,我主要负责了订单支付模块的开发,实现了多种支付方式的选择和支付结果的回调。

  1. 你在项目中遇到的最大失误是什么?你是如何处理这个问题的?

答:在项目中遇到的最大失误是在代码实现中没有考虑到并发的情况,导致了一些线程安全问题。我通过学习多线程编程知识和使用Java提供的同步机制和锁机制等方式解决了这些问题。

  1. 你在项目中学到了哪些经验和教训?你认为这些经验和教训对你今后的职业发展有何帮助?

答:在项目中,我学到了很多关于Java后端开发的经验和教训。例如,在开发过程中要尽可能地考虑到并发和线程安全,要注重代码的可读性和可维护性,要使用好版本控制工具和团队协作工具等。这些经验和教训对我今后的职业发展非常有帮助。

上学期 下学期

2019-9~2019-12 2020-2~2020-6 大一

2020-9~2020-12 2021-2~2021-6 大二

2021-9~2021-12 2022-2~2022-6 大三

2022-9~2022-12 2023-2~2023-6 大四

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值