springcloud面试题及答案_第1页
springcloud面试题及答案_第2页
springcloud面试题及答案_第3页
springcloud面试题及答案_第4页
springcloud面试题及答案_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

springcloud面试题及答案SpringCloud面试题及答案一、选择题(30分,共15题,每题2分)1.关于SpringCloud的描述,下列说法正确的是:A.SpringCloud是一个轻量级的JavaEE框架B.SpringCloud是一系列框架的集合,简化了分布式系统的开发C.SpringCloud只能用于微服务架构D.SpringCloud是SpringBoot的替代品答案:【B】解析:SpringCloud是一系列框架的集合,用于简化分布式系统的开发,如服务发现、配置管理、断路器等。选项A错误,SpringCloud不是JavaEE框架;选项C错误,SpringCloud也可用于其他架构;选项D错误,SpringCloud是基于SpringBoot构建的,不是替代品。2.在SpringCloud中,服务注册与发现组件是:A.HystrixB.ZuulC.EurekaD.Ribbon答案:【C】解析:Eureka是SpringCloud中的服务注册与发现组件,提供服务注册、服务发现等功能。选项A是断路器组件;选项B是API网关;选项D是客户端负载均衡器。3.关于Eureka的高可用配置,下列说法正确的是:A.EurekaServer之间需要相互注册B.EurekaServer之间不需要相互注册C.EurekaServer只能单节点运行D.EurekaClient不能同时连接多个EurekaServer答案:【B】解析:EurekaServer之间不需要相互注册,每个EurekaServer都是独立的服务注册中心,Client会向所有配置的EurekaServer注册服务。选项A错误;选项C错误,Eureka支持集群模式;选项D错误,EurekaClient可以配置多个Server地址。4.SpringCloud中实现熔断器功能的组件是:A.FeignB.HystrixC.ZuulD.Ribbon答案:【B】解析:Hystrix是SpringCloud中实现熔断器功能的组件,提供熔断、降级、隔离等功能。选项A是声明式REST客户端;选项C是API网关;选项D是客户端负载均衡器。5.在SpringCloud中,用于服务间调用的组件是:A.EurekaB.HystrixC.FeignD.Zuul答案:【C】解析:Feign是SpringCloud中用于服务间调用的声明式REST客户端,简化了HTTP接口的调用。选项A是服务注册与发现;选项B是熔断器;选项D是API网关。6.SpringCloudConfig的主要作用是:A.服务注册与发现B.服务熔断C.集中化管理配置D.负载均衡答案:【C】解析:SpringCloudConfig用于集中化管理配置,支持配置的动态刷新。选项A是Eureka的功能;选项B是Hystrix的功能;选项D是Ribbon或Zuul的功能。7.在SpringCloud中,API网关组件是:A.EurekaB.HystrixC.ZuulD.Ribbon答案:【C】解析:Zuul是SpringCloud中的API网关组件,提供路由、过滤、安全等功能。选项A是服务注册与发现;选项B是熔断器;选项D是客户端负载均衡器。8.关于SpringCloud的版本号,下列说法正确的是:A.SpringCloud的版本号与SpringBoot版本号没有关系B.SpringCloudFinchley版本对应SpringBoot2.xC.SpringCloudGreenwich版本对应SpringBoot1.xD.SpringCloud的版本号是随机分配的答案:【B】解析:SpringCloudFinchley版本对应SpringBoot2.x,SpringCloudGreenwich版本对应SpringBoot2.1.x。选项A错误,版本号有对应关系;选项C错误,Greenwich对应2.1.x;选项D错误,版本号有命名规则。9.在SpringCloud中,实现客户端负载均衡的组件是:A.EurekaB.HystrixC.ZuulD.Ribbon答案:【D】解析:Ribbon是SpringCloud中实现客户端负载均衡的组件,提供多种负载均衡策略。选项A是服务注册与发现;选项B是熔断器;选项C是API网关。10.SpringCloudSleuth的主要作用是:A.服务注册与发现B.分布式链路追踪C.服务熔断D.配置管理答案:【B】解析:SpringCloudSleuth用于分布式链路追踪,提供请求链路追踪功能。选项A是Eureka的功能;选项C是Hystrix的功能;选项D是Config的功能。11.在SpringCloud中,用于创建熔断器的注解是:A.@EnableEurekaClientB.@EnableHystrixC.@EnableCircuitBreakerD.@EnableFeignClients答案:【C】解析:@EnableCircuitBreaker注解用于启用熔断器功能。选项A用于启用Eureka客户端;选项B是旧版注解;选项D用于启用Feign客户端。12.关于SpringCloudBus的作用,下列说法正确的是:A.用于服务注册与发现B.用于配置刷新C.用于服务熔断D.用于负载均衡答案:【B】解析:SpringCloudBus用于配置刷新,通过消息代理广播配置变更事件。选项A是Eureka的功能;选项C是Hystrix的功能;选项D是Ribbon的功能。13.在SpringCloud中,服务降级的主要目的是:A.提高系统性能B.防止系统雪崩C.增加系统安全性D.简化系统架构答案:【B】解析:服务降级的主要目的是防止系统雪崩,在系统压力过大或服务不可用时,提供降级服务保证核心功能可用。选项A不是主要目的;选项C不是主要目的;选项D不是主要目的。14.SpringCloudStream的主要作用是:A.服务注册与发现B.消息驱动的微服务C.服务熔断D.配置管理答案:【B】解析:SpringCloudStream用于构建消息驱动的微服务,简化了与消息中间件的集成。选项A是Eureka的功能;选项C是Hystrix的功能;选项D是Config的功能。15.在SpringCloud中,实现分布式事务的组件是:A.EurekaB.HystrixC.SeataD.Ribbon答案:【C】解析:Seata是SpringCloud生态中常用的分布式事务解决方案。选项A是服务注册与发现;选项B是熔断器;选项D是客户端负载均衡器。二、填空题(20分,共10题,每题2分)1.SpringCloud的核心思想是将NetflixOSS系列组件与SpringBoot进行整合,简化______的开发。答案:【分布式系统】解析:SpringCloud的核心思想是将NetflixOSS系列组件与SpringBoot进行整合,简化分布式系统的开发,提供了一套完整的微服务解决方案。2.在SpringCloud中,服务提供者通过______注解将自己注册到服务注册中心。答案:【@EnableEurekaServer】解析:在SpringCloud中,服务提供者通过@EnableEurekaServer注解将自己注册到服务注册中心,表明该服务是一个EurekaServer,其他服务可以注册到它上面。3.SpringCloudConfig支持配置存储在______中,实现配置的集中化管理。答案:【Git仓库】解析:SpringCloudConfig支持配置存储在Git仓库中,实现配置的集中化管理。开发者可以将所有服务的配置文件统一存储在Git仓库中,通过ConfigServer统一管理。4.在SpringCloud中,______组件用于实现API网关功能,提供路由、过滤等功能。答案:【Zuul】解析:在SpringCloud中,Zuul组件用于实现API网关功能,提供路由、过滤、安全等功能。所有外部请求都通过API网关进入系统,由网关进行路由转发。5.SpringCloud的______组件用于实现分布式链路追踪,帮助开发者监控系统调用链路。答案:【Sleuth】解析:SpringCloud的Sleuth组件用于实现分布式链路追踪,帮助开发者监控系统调用链路。它通过在HTTP请求中添加追踪ID,记录请求经过的各个服务节点。6.在SpringCloud中,______组件用于实现服务熔断,防止系统雪崩。答案:【Hystrix】解析:在SpringCloud中,Hystrix组件用于实现服务熔断,防止系统雪崩。当某个服务不可用或响应时间过长时,Hystrix会熔断该服务的调用,执行降级逻辑。7.SpringCloud的______组件用于实现客户端负载均衡,提高系统可用性。答案:【Ribbon】解析:SpringCloud的Ribbon组件用于实现客户端负载均衡,提高系统可用性。它提供多种负载均衡策略,如轮询、随机、加权等,帮助客户端在多个服务实例之间进行选择。8.在SpringCloud中,______组件用于构建消息驱动的微服务,简化与消息中间件的集成。答案:【Stream】解析:在SpringCloud中,Stream组件用于构建消息驱动的微服务,简化与消息中间件的集成。它提供了一套统一的编程模型,支持多种消息中间件,如Kafka、RabbitMQ等。9.SpringCloud的______组件用于实现配置的动态刷新,无需重启服务即可更新配置。答案:【Bus】解析:SpringCloud的Bus组件用于实现配置的动态刷新,无需重启服务即可更新配置。它通过消息代理广播配置变更事件,接收到事件的服务会重新拉取最新配置。10.在SpringCloud中,______组件用于实现分布式事务,保证跨服务操作的一致性。答案:【Seata】解析:在SpringCloud中,Seata组件用于实现分布式事务,保证跨服务操作的一致性。它提供了AT、TCC、SAGA等多种事务模式,满足不同场景的分布式事务需求。三、判断题(10分,共10题,每题1分)1.SpringCloud必须与SpringBoot一起使用才能发挥作用。答案:【√】解析:正确。SpringCloud是基于SpringBoot构建的,充分利用了SpringBoot的自动配置、嵌入式服务器等特性,两者结合使用才能发挥最大效能。2.EurekaServer可以单独运行,不需要集群部署。答案:【√】解析:正确。EurekaServer可以单独运行,但在生产环境中通常建议集群部署以提高可用性。单节点EurekaServer可以正常提供服务注册和发现功能。3.在SpringCloud中,服务消费者必须通过Feign才能调用其他服务。答案:【×】解析:错误。在SpringCloud中,服务消费者可以通过多种方式调用其他服务,包括Feign、RestTemplate、HttpClient等。Feign只是其中一种更简洁的声明式调用方式。4.SpringCloudConfig只能从Git仓库中读取配置。答案:【×】解析:错误。SpringCloudConfig支持多种配置存储方式,包括Git、SVN、本地文件系统、Vault等。Git只是其中最常用的一种方式。5.Hystrix只能用于服务熔断,不能用于服务降级。答案:【×】解析:错误。Hystrix既可以用于服务熔断,也可以用于服务降级。当服务不可用时,Hystrix会触发熔断机制,同时可以执行降级逻辑,保证系统基本功能可用。6.SpringCloudGateway是SpringCloud官方推荐的API网关组件。答案:【√】解析:正确。SpringCloudGateway是SpringCloud官方推荐的API网关组件,基于SpringWebFlux构建,支持响应式编程,性能优于Zuul。7.在SpringCloud中,服务注册中心必须使用Eureka。答案:【×】解析:错误。在SpringCloud中,服务注册中心有多种选择,包括Eureka、Consul、Zookeeper、Nacos等。Eureka只是其中一种常用的注册中心。8.SpringCloudSleuth必须与Zipkin配合使用才能实现链路追踪。答案:【√】解析:正确。SpringCloudSleuth通常与Zipkin配合使用,Sleuth负责生成和传递追踪信息,Zipkin负责收集、存储和展示这些信息,形成完整的链路追踪系统。9.在SpringCloud中,服务间调用必须使用Feign。答案:【×】解析:错误。在SpringCloud中,服务间调用可以使用多种方式,包括Feign、RestTemplate、HttpClient等。Feign只是提供了一种更简洁的声明式调用方式。10.SpringCloudAlibaba是SpringCloud的官方子项目。答案:【×】解析:错误。SpringCloudAlibaba是阿里巴巴开源的SpringCloud增强版,并非SpringCloud官方子项目,但已被纳入SpringCloud官方孵化器。四、简答题(20分,共4题,每题5分)1.简述SpringCloud的核心组件及其作用。答案:SpringCloud的核心组件及其作用如下:(1)Eureka:服务注册与发现组件,提供服务注册、服务发现、健康检查等功能。(2)Config:集中化配置管理组件,支持配置的动态刷新,将配置与代码分离。(3)Hystrix:熔断器组件,提供熔断、降级、隔离等功能,防止系统雪崩。(4)Feign:声明式REST客户端组件,简化服务间调用。(5)Zuul/Gateway:API网关组件,提供路由、过滤、安全等功能。(6)Ribbon:客户端负载均衡组件,提供多种负载均衡策略。(7)Sleuth:分布式链路追踪组件,帮助开发者监控系统调用链路。(8)Bus:消息总线组件,用于配置刷新和服务间通信。(9)Stream:消息驱动组件,简化与消息中间件的集成。(10)Consul/Zookeeper:服务注册中心组件,作为Eureka的替代方案。解析:SpringCloud的核心组件各自负责不同的功能,共同构成了完整的微服务解决方案。理解这些组件的作用及其相互关系,对于设计和实现微服务架构至关重要。每个组件都解决了分布式系统中的特定问题,如服务发现、配置管理、熔断降级、负载均衡等,通过组合使用这些组件,可以构建出高可用、高扩展性的微服务系统。2.什么是服务熔断?简述Hystrix实现服务熔断的原理。答案:服务熔断是一种保护机制,当某个服务不可用或响应时间过长时,暂时停止对该服务的调用,避免系统资源被耗尽,防止系统雪崩。当服务恢复后,再重新尝试调用。Hystrix实现服务熔断的原理如下:(1)熔断器状态:Hystrix使用熔断器模式,有三种状态:关闭(Closed)、打开(Open)、半开(Half-Open)。(2)关闭状态:请求正常通过,当失败率达到阈值时,切换到打开状态。(3)打开状态:所有请求被拒绝,直接执行降级逻辑,同时启动一个计时器。(4)半开状态:计时器结束后,允许少量请求通过,如果这些请求成功,则切换回关闭状态;如果失败,则继续保持打开状态。(5)隔离机制:Hystrix提供线程池隔离和信号量隔离两种方式,防止某个服务的失败影响其他服务。(6)降级机制:当服务不可用或熔断时,执行降级逻辑,返回默认值或备用数据。解析:服务熔断是微服务架构中重要的容错机制,Hystrix通过熔断器模式实现这一功能。其核心思想是在系统检测到某个服务异常时,暂时切断对该服务的调用,避免故障扩散。Hystrix的熔断器状态切换机制和隔离策略是关键,通过合理配置阈值和超时时间,可以平衡系统的可用性和资源消耗。在实际应用中,熔断器需要与降级策略配合使用,以保证系统在服务不可用时的基本功能。3.简述SpringCloudConfig的工作原理及其优势。答案:SpringCloudConfig的工作原理:(1)配置存储:将配置文件存储在Git、SVN等版本控制系统中,或本地文件系统、Vault等。(2)ConfigServer:启动一个ConfigServer,连接配置存储,提供配置访问接口。(3)ConfigClient:各微服务作为ConfigClient,启动时从ConfigServer拉取配置。(4)配置刷新:当配置更新时,通过SpringCloudBus广播配置变更事件,ConfigClient接收到事件后重新拉取配置。SpringCloudConfig的优势:(1)集中化配置管理:所有服务的配置集中存储在统一位置,便于管理。(2)环境隔离:通过不同的配置文件(profile)实现不同环境的配置隔离。(3)配置版本控制:基于Git等版本控制系统,可以追踪配置变更历史。(4)动态配置更新:支持配置的动态刷新,无需重启服务即可更新配置。(5)安全性:支持加密配置,提高配置安全性。解析:SpringCloudConfig通过集中化配置管理解决了微服务架构中配置分散的问题。其工作原理基于客户端-服务器模式,ConfigServer作为配置中心,ConfigClient从Server获取配置。这种架构的优势在于实现了配置与代码的分离,支持多环境配置管理,并提供了配置版本控制和动态更新能力。在实际应用中,SpringCloudConfig常与SpringCloudBus配合使用,实现配置的广播式刷新,大大提高了配置管理的效率和灵活性。4.什么是服务网格(ServiceMesh)?简述其与SpringCloud的关系。答案:服务网格(ServiceMesh)是一种基础设施层,用于处理服务间通信。它由一系列轻量级网络代理组成,这些代理以sidecar模式与应用服务一起部署,负责拦截、路由、监控和管理服务间的所有流量,而无需修改应用代码。服务网格的主要特性:(1)流量管理:提供细粒度的流量控制,如金丝雀发布、蓝绿部署等。(2)可观测性:提供详细的遥测数据,包括请求延迟、错误率等指标。(3)安全性:提供服务间通信的加密、认证和授权。(4)可靠性:提供重试、超时、断路器等容错机制。服务网格与SpringCloud的关系:(1)互补关系:SpringCloud和ServiceMesh解决微服务架构中的不同问题,可以互补使用。(2)功能重叠:两者都提供服务发现、负载均衡、断路器等功能,但实现方式不同。(3)架构差异:SpringCloud是应用框架,需要修改应用代码;ServiceMesh是基础设施层,无需修改应用代码。(4)演进路径:可以从SpringCloud开始,逐步引入ServiceMesh,实现渐进式架构演进。(5)技术选型:根据团队技术栈和需求,可以选择SpringCloud、ServiceMesh或两者结合使用。解析:服务网格是微服务架构中的新兴技术,它与SpringCloud代表了两种不同的微服务治理思路。SpringCloud是一种应用框架,通过代码注解和配置实现服务治理;而ServiceMesh是一种基础设施层,通过sidecar代理实现服务治理。两者在功能上有重叠,但实现方式和架构理念不同。在实际应用中,可以根据项目需求、团队技术栈和演进阶段,选择适合的技术方案或组合使用,以达到最佳的系统治理效果。五、计算题(10分,共2题,每题5分)1.假设有一个微服务系统,包含3个服务实例,每个服务实例的处理能力为1000TPS。现在有一个客户端需要调用这个服务,客户端使用Ribbon进行负载均衡,采用轮询策略。如果客户端每秒发送3000个请求,请计算每个服务实例的实际负载和系统的总吞吐量。如果某个服务实例出现故障,系统会如何调整负载分配?答案:(1)每个服务实例的实际负载:-初始状态下,由于采用轮询策略,3000个请求会平均分配到3个服务实例-每个服务实例的负载=3000/3=1000TPS(2)系统的总吞吐量:-每个服务实例的处理能力为1000TPS-3个服务实例的总处理能力=1000×3=3000TPS-客户端请求量为3000TPS,与系统处理能力匹配-因此,系统的总吞吐量为3000TPS(3)某个服务实例出现故障后的负载调整:-Ribbon会检测到故障的服务实例,将其从可用服务列表中移除-剩下的2个服务实例将承担所有3000TPS的请求-每个健康服务实例的负载=3000/2=1500TPS-由于每个服务实例的处理能力只有1000TPS,系统会出现过载-实际上,每个服务实例只能处理1000TPS,因此系统总吞吐量降为2000TPS-客户端会有1000TPS的请求无法被处理,可能导致客户端请求超时或失败解析:本题考察了负载均衡的基本原理和系统容量计算。在轮询策略下,请求会均匀分配到所有可用的服务实例。当系统负载与处理能力匹配时,可以达到最佳吞吐量。当某个服务实例故障时,负载均衡器会自动调整负载分配,但如果剩余服务实例的处理能力总和无法满足客户端需求,系统性能会下降。在实际应用中,需要考虑服务容量监控和自动扩缩容机制,以应对服务故障和流量波动。2.假设有一个微服务系统,包含以下服务:订单服务(OrderService)、用户服务(UserService)、商品服务(ProductService)和支付服务(PaymentService)。系统架构如下:-订单服务需要调用用户服务和商品服务-用户服务不调用其他服务-商品服务不调用其他服务-订单服务在处理完成订单后,会调用支付服务-支付服务不调用其他服务假设每个服务的平均响应时间为100ms,标准差为50ms。现在有一个请求需要创建一个订单,这个请求会依次经过订单服务、用户服务、商品服务和支付服务。请计算整个请求的平均响应时间和标准差。如果订单服务引入了Hystrix熔断器,熔断阈值为500ms,请计算熔断器触发的概率。答案:(1)整个请求的平均响应时间:-请求路径:客户端→订单服务→用户服务-订单服务→商品服务-订单服务→支付服务-订单服务→客户端-平均响应时间=订单服务响应时间+用户服务响应时间+商品服务响应时间+支付服务响应时间-平均响应时间=100ms+100ms+100ms+100ms=400ms(2)整个请求的标准差:-由于各服务响应时间相互独立,总标准差=√(σ1²+σ2²+σ3²+σ4²)-总标准差=√(50²+50²+50²+50²)=√(2500+2500+2500+2500)=√10000=100ms(3)熔断器触发的概率:-订单服务的总响应时间=订单服务自身响应时间+用户服务响应时间+商品服务响应时间+支付服务响应时间-订单服务总响应时间=100ms+100ms+100ms+100ms=400ms-熔断阈值为500ms,大于平均响应时间400ms-假设服务响应时间服从正态分布,计算响应时间超过500ms的概率-Z=(X-μ)/σ=(500-400)/100=1-查标准正态分布表,P(Z>1)≈0.1587-因此,熔断器触发的概率约为15.87%解析:本题考察了微服务系统响应时间的计算和熔断器触发概率的分析。在微服务架构中,一个请求可能需要调用多个服务,总响应时间是各服务响应时间的累加。如果各服务响应时间相互独立,总标准差可以通过各服务标准差的平方和开方得到。对于熔断器触发概率的计算,需要了解服务响应时间的分布特征,这里假设服从正态分布。在实际应用中,服务响应时间可能不是严格正态分布,需要根据实际情况调整模型,但基本思路是类似的。六、材料综合题(10分,共1题)1.阅读以下材料,回答问题:材料:某电商平台采用SpringCloud构建微服务架构,主要包含以下服务:-用户服务(UserService):负责用户注册、登录、个人信息管理等功能-商品服务(ProductService):负责商品信息管理、分类管理、库存管理等功能-订单服务(OrderService):负责订单创建、订单查询、订单状态更新等功能-支付服务(PaymentService):负责支付处理、退款处理等功能-通知服务(NotificationService):负责短信通知、邮件通知等功能系统架构如图所示:```客户端||-->API网关(Zuul)||-->用户服务|-->商品服务|-->订单服务-->支付服务|-->通知服务```系统采用Eureka作为服务注册中心,ConfigServer进行配置管理,Hystrix实现熔断降级,Ribbon实现负载均衡,Feign实现服务间调用,Sleuth和Zipkin实现链路追踪。问题描述:(1)分析该电商平台的微服务架构设计,指出其优缺点。(2)如果订单服务调用支付服务时出现延迟,如何通过Hystrix进行降级处理?(3)假设商品服务突然出现故障,系统应如何处理?请详细描述服务发现和熔断机制的工作流程。(4)如果需要实现订单创建的幂等性,应该如何设计?答案:(1)微服务架构设计分析:优点:-服务职责清晰:每个服务专注于特定功能,符合单一职责原则-技术栈灵活:各服务可以根据需求选择不同的技术栈-独立部署:各服务可以独立开发、测试、部署和扩展-故障隔离:单个服务故障不会影响整个系统-易于维护:服务边界清晰,便于团队协作和维护缺点:-分布式事务:跨服务操作的事务一致性难以保证-系统复杂度增加:服务数量增多,系统复杂度提高-运维成本增加:需要更多的监控、部署和管理工作-网络延迟:服务间通信可能引入额外的网络延迟-数据一致性挑战:各服务可能使用不同的数据存储,数据一致性难以保证(2)订单服务调用支付服务时的降级处理:在订单服务中,可以通过以下方式实现Hystrix降级处理:a.创建降级方法:```java@ComponentpublicclassPaymentServiceFallbackimplementsPaymentService{@OverridepublicPaymentResultprocessPayment(Orderorder){//降级逻辑:返回支付失败但订单创建成功的结果returnnewPaymentResult(false,"支付服务暂时不可用,订单已创建,请稍后支付");}}```b.在Feign客户端中指定降级实现:```java@FeignClient(value="payment-service",fallback=PaymentServiceFallback.class)publicinterfacePaymentService{@PostMapping("/payment")PaymentResultprocessPayment(@RequestBodyOrderorder);}```c.在订单服务中调用支付服务:```java@AutowiredprivatePaymentServicepaymentService;@PostMapping("/order")publicOrderResultcreateOrder(@RequestBodyOrderorder){//创建订单OrdercreatedOrder=orderService.createOrder(order);//调用支付服务PaymentResultpaymentResult=paymentScessPayment(createdOrder);//根据支付结果更新订单状态if(paymentResult.isSuccess()){orderService.updateOrderStatus(createdOrder.getId(),"PAID");}else{orderService.updateOrderStatus(createdOrder.getId(),"PENDING_PAYMENT");

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论