京博it工程师面试题及答案_第1页
京博it工程师面试题及答案_第2页
京博it工程师面试题及答案_第3页
京博it工程师面试题及答案_第4页
京博it工程师面试题及答案_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

京博it工程师面试题及答案京博IT工程师面试题及答案一、选择题(每题2分,共40分)1.以下哪种数据结构是非线性的?A.数组B.链表C.树D.栈2.在TCP/IP协议中,HTTP协议工作在哪个层次?A.网络接口层B.网络层C.传输层D.应用层3.以下哪个不是面向对象编程的特性?A.封装B.继承C.多态D.过程化4.在关系数据库中,以下哪个不是基本的SQL操作?A.SELECTB.INSERTC.UPDATED.MODIFY5.以下哪种算法最适合在有序数组中查找特定元素?A.顺序查找B.二分查找C.哈希查找D.树查找6.在Linux系统中,以下哪个命令用于查看文件内容?A.lsB.catC.pwdD.cd7.以下哪种网络设备工作在数据链路层?A.路由器B.交换机C.集线器D.网关8.在Java中,以下哪个关键字用于创建对象?A.classB.newC.staticD.final9.以下哪种加密算法是对称加密算法?A.RSAB.AESC.SHAD.DSA10.在敏捷开发中,以下哪个不是核心原则?A.个体和互动高于流程和工具B.可工作的软件高于详尽的文档C.客户合作高于合同谈判D.详细规划高于快速响应变化11.以下哪个不是NoSQL数据库的类型?A.键值存储B.文档存储C.列族存储D.关系存储12.在分布式系统中,CAP定理指的是什么?A.一致性、可用性、分区容错性B.连接性、可用性、性能C.容错性、可用性、持久性D.一致性、可用性、性能13.以下哪种排序算法的平均时间复杂度为O(nlogn)?A.冒泡排序B.选择排序C.快速排序D.插入排序14.在云计算中,以下哪种服务模式提供了基础设施即服务?A.SaaSB.PaaSC.IaaSD.DaaS15.以下哪个不是版本控制系统?A.GitB.SVNC.MercurialD.Docker16.在RESTfulAPI设计中,以下哪个HTTP方法用于更新资源?A.GETB.POSTC.PUTD.DELETE17.以下哪种存储技术是非易失性的?A.RAMB.ROMC.CacheD.Register18.在网络安全中,以下哪种攻击是通过发送大量请求使服务器过载?A.SQL注入B.跨站脚本C.DDoS攻击D.中间人攻击19.在微服务架构中,以下哪个不是常见的通信模式?A.同步通信B.异步通信C.事件驱动D.单体通信20.以下哪个不是容器化技术的优势?A.环境一致性B.资源隔离C.快速部署D.完全隔离的操作系统答案:1.C.树-数组、链表和栈都是线性数据结构,而树是非线性数据结构。2.D.应用层-HTTP协议工作在TCP/IP协议栈的应用层。3.D.过程化-面向对象编程的三大特性是封装、继承和多态,过程化不是面向对象编程的特性。4.D.MODIFY-在SQL中,基本操作是SELECT、INSERT、UPDATE和DELETE,没有MODIFY操作。5.B.二分查找-二分查找在有序数组中的时间复杂度为O(logn),效率高于其他查找方法。6.B.cat-cat命令用于查看文件内容,ls用于列出文件,pwd显示当前目录,cd用于切换目录。7.B.交换机-交换机工作在数据链路层,路由器工作在网络层,集线器工作在物理层,网关工作在传输层及以上。8.B.new-new关键字用于在Java中创建对象,class用于定义类,static用于声明静态成员,final用于声明常量或不可变类。9.B.AES-AES是对称加密算法,RSA和DSA是非对称加密算法,SHA是哈希算法。10.D.详细规划高于快速响应变化-敏捷开发的核心原则之一是"响应变化高于遵循计划",而不是详细规划。11.D.关系存储-NoSQL数据库包括键值存储、文档存储、列族存储和图形存储,关系存储是关系型数据库的特点。12.A.一致性、可用性、分区容错性-CAP定理指出分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partitiontolerance)中的两个。13.C.快速排序-快速排序的平均时间复杂度为O(nlogn),而冒泡排序、选择排序和插入排序的平均时间复杂度都是O(n²)。14.C.IaaS-IaaS(基础设施即服务)提供虚拟化的计算资源,SaaS(软件即服务)提供应用程序,PaaS(平台即服务)提供开发和部署环境。15.D.Docker-Docker是容器化技术,不是版本控制系统。Git、SVN和Mercurial都是版本控制系统。16.C.PUT-在RESTfulAPI中,PUT用于更新资源,GET用于获取资源,POST用于创建资源,DELETE用于删除资源。17.B.ROM-ROM(只读存储器)是非易失性存储器,断电后数据不会丢失。RAM、Cache和Register都是易失性存储器。18.C.DDoS攻击-DDoS(分布式拒绝服务)攻击通过发送大量请求使服务器过载,SQL注入是攻击数据库,跨站脚本是攻击网站,中间人攻击是窃听通信。19.D.单体通信-微服务架构中常见的通信模式包括同步通信、异步通信和事件驱动,单体通信与微服务架构的理念相悖。20.D.完全隔离的操作系统-容器化技术提供环境一致性和快速部署,但容器共享宿主操作系统内核,而不是完全隔离的操作系统。二、填空题(每空2分,共30分)1.在计算机网络中,OSI模型将网络通信分为________层。2.数据库事务的四个基本特性是原子性、一致性、隔离性和________。3.在Java中,________关键字用于声明一个类不能被继承。4.HTTP协议的默认端口号是________。5.在Linux系统中,________命令用于查找文件。6.在关系数据库中,用于唯一标识表中每一行的约束是________约束。7.算法的时间复杂度和________是衡量算法效率的两个重要指标。8.在分布式系统中,________是指系统能够继续提供服务,即使部分节点失效。9.在面向对象编程中,________是指一个对象可以有多种形式的能力。10.在数据库设计中,________是指将数据分散存储在多个物理位置,以提高性能和可用性。11.在网络安全中,________是一种通过伪造网络节点身份进行的攻击。12.在微服务架构中,________是指将应用程序构建为一系列松耦合的小服务。13.在云计算中,________是指按需提供计算资源和服务,无需用户直接管理基础设施。14.在软件开发中,________是指在代码中同时存在多个执行线程。15.在数据结构中,________是一种特殊的线性表,只能在表的一端进行插入和删除操作。答案:1.七-OSI模型将网络通信分为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,共七层。2.持久性-数据库事务的ACID特性包括原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。3.final-在Java中,使用final关键字声明的类不能被继承。4.80-HTTP协议的默认端口号是80,HTTPS的默认端口号是443。5.find-在Linux系统中,find命令用于查找文件,grep命令用于在文件中搜索文本。6.主键(PRIMARYKEY)-主键约束用于唯一标识表中的每一行,且不能为空。7.空间复杂度-算法的时间复杂度和空间复杂度是衡量算法效率的两个重要指标。8.容错性-在分布式系统中,容错性是指系统能够继续提供服务,即使部分节点失效。9.多态(Polymorphism)-在面向对象编程中,多态是指一个对象可以有多种形式的能力。10.分片(Sharding)-在数据库设计中,分片是指将数据分散存储在多个物理位置,以提高性能和可用性。11.中间人攻击(Man-in-the-MiddleAttack)-中间人攻击是一种通过伪造网络节点身份进行的攻击,攻击者可以拦截和修改通信内容。12.服务拆分(ServiceDecomposition)-在微服务架构中,服务拆分是指将应用程序构建为一系列松耦合的小服务。13.基础设施即服务(InfrastructureasaService,IaaS)-在云计算中,IaaS是指按需提供计算资源和服务,无需用户直接管理基础设施。14.多线程(Multithreading)-在软件开发中,多线程是指在代码中同时存在多个执行线程。15.栈(Stack)-栈是一种特殊的线性表,只能在表的一端(称为栈顶)进行插入和删除操作,遵循后进先出(LIFO)原则。三、判断题(每题2分,共20分)1.在关系数据库中,外键可以引用同一表中的主键。()2.TCP是面向连接的协议,而UDP是无连接的协议。()3.在面向对象编程中,封装是指隐藏对象的内部实现细节。()4.在分布式系统中,最终一致性弱于强一致性。()5.在Linux系统中,root用户拥有最高权限,可以执行任何操作。()6.在RESTfulAPI设计中,PUT操作是幂等的。()7.在数据库设计中,范式越高越好,可以完全消除数据冗余。()8.在网络安全中,防火墙可以防止所有类型的网络攻击。()9.在微服务架构中,服务之间应该紧密耦合以提高性能。()10.在软件开发中,单元测试应该测试整个系统的功能。()答案:1.√-在关系数据库中,外键可以引用同一表中的主键,这种设计称为自引用外键,常用于表示层次结构或递归关系。2.√-TCP是面向连接的协议,需要建立连接、传输数据和断开连接三个步骤;UDP是无连接的协议,直接发送数据包,无需建立连接。3.√-在面向对象编程中,封装是指隐藏对象的内部实现细节,只暴露必要的接口,提高代码的安全性和可维护性。4.√-在分布式系统中,最终一致性允许数据在一段时间内不一致,而强一致性要求所有副本在任何时间点都保持一致,因此最终一致性弱于强一致性。5.√-在Linux系统中,root用户拥有最高权限,可以执行任何操作,包括修改系统文件和杀死其他进程。6.√-在RESTfulAPI设计中,PUT操作是幂等的,即多次执行同一PUT操作不会产生副作用,结果与执行一次相同。7.×-在数据库设计中,范式不是越高越好。高范式可以减少数据冗余,但可能导致查询性能下降。通常需要根据实际需求在范式化和性能之间取得平衡。8.×-防火墙可以防止许多类型的网络攻击,但不能防止所有类型的攻击,如内部攻击、加密流量中的攻击等。9.×-在微服务架构中,服务之间应该松耦合,以提高系统的可维护性和可扩展性。紧密耦合会导致服务之间的依赖关系复杂,难以独立部署和扩展。10.×-单元测试应该测试单个组件或函数的功能,而不是整个系统的功能。整个系统的功能应该由集成测试和系统测试来验证。四、简答题(每题10分,共50分)1.简述TCP和UDP的区别,并分别说明它们的应用场景。2.解释数据库中的事务隔离级别,并说明不同隔离级别可能存在的问题。3.简述RESTfulAPI设计原则,并举例说明。4.解释微服务架构的优缺点,并说明在什么场景下适合采用微服务架构。5.简述常见的网络攻击类型及防御措施。答案:1.TCP和UDP的区别:-连接性:TCP是面向连接的协议,需要建立连接(三次握手)和断开连接(四次挥手);UDP是无连接的协议,直接发送数据包。-可靠性:TCP提供可靠的数据传输,通过序列号、确认应答、重传机制和流量控制确保数据完整有序;UDP不保证数据传输的可靠性,可能会丢失或重复数据包。-速度:UDP的开销小,传输速度快;TCP由于需要建立连接和保证可靠性,传输速度较慢。-数据量:TCP有大小限制,最大可达65KB;UDP的数据包大小限制为64KB。-应用场景:TCP适用于需要可靠传输的场景,如文件传输、网页浏览、电子邮件等;UDP适用于对实时性要求高、能容忍少量丢包的场景,如视频会议、在线游戏、DNS查询等。2.数据库中的事务隔离级别:-读未提交(ReadUncommitted):最低的隔离级别,允许读取未提交的数据,可能导致脏读、不可重复读和幻读。-读已提交(ReadCommitted):只能读取已提交的数据,可以防止脏读,但仍可能出现不可重复读和幻读。-可重复读(RepeatableRead):确保在同一事务中多次读取同一数据的结果一致,可以防止脏读和不可重复读,但在某些实现中仍可能出现幻读。-串行化(Serializable):最高的隔离级别,完全隔离事务,防止脏读、不可重复读和幻读,但性能较低。不同隔离级别可能存在的问题:-读未提交:脏读,即读取到其他事务未提交的数据。-读已提交:不可重复读,即同一事务中多次读取同一数据,结果可能不同,因为其他事务可能修改了该数据。-可重复读:幻读,即同一事务中多次查询同一条件,返回的记录数可能不同,因为其他事务可能插入了符合条件的新记录。3.RESTfulAPI设计原则:-无状态(Stateless):服务器不保存客户端的状态,每个请求包含处理该请求所需的所有信息。-统一接口(UniformInterface):使用标准的HTTP方法(GET、POST、PUT、DELETE等)和状态码。-资源导向(Resource-Oriented):将系统功能抽象为资源,通过URI标识资源。-表现层分离(Representation):资源可以有多个表现形式,如JSON、XML等,通过内容协商确定。-超媒体控制(HATEOAS):响应中包含指向相关资源的链接,客户端可以通过这些链接导航资源。示例:-获取用户信息:GET/users/123-创建用户:POST/users,请求体中包含用户信息-更新用户:PUT/users/123,请求体中包含更新后的用户信息-删除用户:DELETE/users/123-获取用户的订单:GET/users/123/orders4.微服务架构的优缺点:优点:-技术多样性:每个服务可以使用最适合的技术栈。-独立部署:服务可以独立开发和部署,加快发布速度。-弹性伸缩:可以根据负载对单个服务进行伸缩。-故障隔离:一个服务的故障不会影响整个系统。-组织灵活性:团队可以围绕服务组织,提高开发效率。缺点:-分布式系统复杂性:需要处理网络延迟、数据一致性等问题。-运维复杂性:需要管理多个服务的部署、监控和日志。-数据一致性挑战:跨服务的数据一致性难以保证。-测试复杂性:需要服务间集成测试。-服务治理:需要服务发现、负载均衡、API网关等基础设施。适用场景:-大型复杂应用:功能模块边界清晰,可以拆分为独立的服务。-需要频繁更新的应用:微服务支持独立部署,可以加快发布速度。-多团队协作:团队可以围绕服务组织,减少协调成本。-需要弹性伸缩的应用:不同服务的负载不同,可以分别进行伸缩。5.常见的网络攻击类型及防御措施:-SQL注入:通过在输入字段中插入恶意SQL代码,执行未授权的数据库操作。防御:使用参数化查询、输入验证、最小权限原则。-跨站脚本(XSS):在网页中注入恶意脚本,当用户访问时执行。防御:输入过滤、输出编码、使用HTTPOnlycookie。-跨站请求伪造(CSRF):诱使用户在已认证的网站执行非预期的操作。防御:使用CSRF令牌、验证Referer头、SameSitecookie。-分布式拒绝服务(DDoS):通过大量请求使服务器过载,无法提供正常服务。防御:使用CDN、流量限制、负载均衡、DDoS防护服务。-中间人攻击:攻击者拦截并修改两方之间的通信。防御:使用HTTPS、证书固定、双因素认证。-暴力破解:通过尝试各种密码组合来破解账户。防御:账户锁定策略、登录尝试限制、使用强密码、双因素认证。五、编程题(每题15分,共30分)1.编写一个函数,实现二叉树的层序遍历。2.设计一个简单的LRU缓存机制,实现get和put操作。答案:1.二叉树的层序遍历可以使用队列来实现。以下是Python实现:```pythonfromcollectionsimportdequeclassTreeNode:def__init__(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=rightdeflevelOrder(root):"""二叉树的层序遍历:paramroot:TreeNode,二叉树的根节点:return:List[List[int]],按层返回节点值"""ifnotroot:return[]result=[]queue=deque([root])whilequeue:level_size=len(queue)current_level=[]for_inrange(level_size):node=queue.popleft()current_level.append(node.val)ifnode.left:queue.append(node.left)ifnode.right:queue.append(node.right)result.append(current_level)returnresult```解释:-首先检查根节点是否为空,如果为空则返回空列表。-使用队列存储待处理的节点,初始时将根节点入队。-当队列不为空时,处理每一层的节点:1.记录当前队列的大小,即当前层的节点数。2.创建一个列表存储当前层的节点值。3.循环处理当前层的每个节点:a.将节点出队,并将其值添加到当前层列表。b.如果节点有左子节点,将左子节点入队。c.如果节点有右子节点,将右子节点入队。4.将当前层列表添加到结果列表中。-返回结果列表,其中每个子列表代表一层的节点值。2.LRU(LeastRecentlyUsed)缓存是一种缓存淘汰策略,当缓存满时,淘汰最近最少使用的数据。可以使用哈希表和双向链表来实现,哈希表用于快速访问,双向链表用于维护访问顺序。以下是Python实现:```pythonclassDLinkedNode:def__init__(self,key=0,value=0):self.key=keyself.value=valueself.prev=Noneself.next=NoneclassLRUCache:def__init__(self,capacity:int):"""初始化LRU缓存:paramcapacity:int,缓存容量"""self.capacity=capacityself.size=0self.cache={}self.head=DLinkedNode()self.tail=DLinkedNode()self.head.next=self.tailself.tail.prev=self.headdef_add_node(self,node):"""将节点添加到链表头部:paramnode:DLinkedNode,要添加的节点"""node.prev=self.headnode.next=self.head.nextself.head.next.prev=nodeself.head.next=nodedef_remove_node(self,node):"""从链表中移除节点:paramnode:DLinkedNode,要移除的节点"""prev_node=node.prevnext_node=node.nextprev_node.next=next_nodenext_node.prev=prev_nodedef_move_to_head(self,node):"""将节点移动到链表头部:paramnode:DLinkedNode,要移动的节点"""self._remove_node(node)self._add_node(node)def_pop_tail(self):"""移除链表尾部节点:return:DLinkedNode,被移除的节点"""node=self.tail.prevself._remove_node(node)returnnodedefget(self,key:int)->int:"""获取缓存中key对应的value,如果不存在则返回-1:paramkey:int,键:return:int,值"""node=self.cache.get(key,None)ifnotnode:return-1self._move_to_head(node)returnnode.valuedefput(self,key:int,value:int)->None:"""向缓存中添加或更新键值对:paramkey:int,键:paramvalue:int,值"""node=self.cache.get(key,None)ifnotnode:new_node=DLinkedNode(key,value)self.cache[key]=new_nodeself._add_node(new_node)self.size+=1ifself.size>self.capacity:tail=self._pop_tail()delself.cache[tail.key]self.size-=1else:node.value=valueself._move_to_head(node)```解释:-使用双向链表维护节点的访问顺序,最近访问的节点在链表头部,最近最少使用的节点在链表尾部。-使用哈希表(字典)存储键和节点的映射,实现O(1)时间复杂度的访问。-初始化时创建伪头节点和伪尾节点,简化边界条件处理。-`_add_node`方法将节点添加到链表头部,表示最近访问。-`_remove_node`方法从链表中移除节点。-`_move_to_head`方法将节点移动到链表头部,表示最近访问。-`_pop_tail`方法移除链表尾部节点,即最近最少使用的节点。-`get`方法获取键对应的值,如果存在则将节点移动到头部,表示最近访问,然后返回值;如果不存在则返回-1。-`put`方法添加或更新键值对,如果键不存在则创建新节点并添加到头部,如果超过容量则移除尾部节点;如果键已存在则更新值并将节点移动到头部。六、系统设计题(共30分)设计一个简单的短链接服务,要求实现以下功能:1.将长链接转换为短链接2.通过短链接重定向到原始长链接3.考虑系统的可扩展性和高可用性答案:短链接服务系统设计:1.系统架构-Web服务器:接收用户请求,处理URL转换和重定向。-数据存储:存储短链接和原始长链接的映射关系。-负载均衡:分发请求到多个Web服务器。-缓存:缓存热门短链接的映射关系,提高访问速度。2.核心组件-URL转换服务:负责生成短链接并存储映射关系。-重定向服务:负责将短链接重定向到原始长链接。-监控系统:监控系统性能和可用性。-分布式缓存:如Redis,存储热点数据。-数据库:如MySQL或MongoDB,持久化存储映射关系。3.数据库设计-主表:存储短链接和原始长链接的映射关系-id:自增主键-short_url:短链接标识-original_url:原始长链接-created_at:创建时间-expires_at:过期时间(可选)-click_count:点击次数(可选)-分表策略:按短链接的前缀分表,提高查询性能。4.URL转换算法-哈希法:对原始URL进行哈希,然后转换为短字符串。-自增ID法:使用自增ID,然后转换为Base62编码(0-9,a-z,A-Z)。-随机字符串法:生成随机字符串作为短链接。推荐使用自增ID法,因为:-生成的短链接长度固定且较短。-不会产生冲突。-可以按需分配ID范围,便于分布式部署。5.高可用设计-多副本:数据在多个节点上存储,避免单点故障。-故障转移:当主节点故障时,自动切换到备用节点。-限流:防止恶意请求导致系统过载。-降级:在系统压力过大时,返回默认错误页面。6.可扩展性设计-水平扩展:通过增加服务器节点来处理更多请求。-数据分片:将数据分散存储在多个节点上,提高并发处理能力。-缓存策略:使用多级缓存减少数据库访问。-异步处理:对于非核心操作(如统计点击次数),使用异步处理。7.性能优化-缓存热点数据:使用Redis缓存热门短链接的映射关系。-CDN加速:使用CDN缓存重定向响应,减少源服务器压力。-连接池:使用数据库连接池提高数据库访问效率。-批量处理:对于批量生成短链接的请求,采用批量处理方式。8.安全考虑-URL验证:验证原始URL的有效性,防止恶意URL。-速率限制:限制单个用户的请求频率,防止滥用。-过期机制:设置短链接的过期时间,定期清理无效链接。-日志记录:记录访问日志,便于安全审计。9.API设计-生成短链接:-请求:POST/shorten-参数:url(原始长链接)-响应:{"short_url":"http://short.ly/abc123"}-重定向:-请求:GET/{short_id}-响应:301重定向到原始长链接-统计信息(可选):-请求:GET/stats/{short_id}-响应:{"click_count":100,"created_at":"2023-01-01"}10.部署架构-负载均衡器:如Nginx,接收外部请求并分发到后端服务器。-应用服务器集群:多个Web服务器处理请求。-数据库集群:主从复制,提高数据可用性。-缓存集群:多个Redis节点,提供缓存服务。-监控系统:实时监控系统状态和性能指标。这个设计考虑了系统的可扩展性、高可用性和性能,可以根据实际需求进行调整和扩展。七、案例分析题(共30分)案例:某电商平台在促销活动期间,系统面临以下问题:1.订单创建接口响应缓慢,用户等待时间过长。2.数据库连接池耗尽,导致部分请求失败。3.系统负载不均衡,部分服务器负载过高,而部分服务器负载较低。请分析问题原因,并提出解决方案。答案:问题分析1.订单创建接口响应缓慢-可能原因:-数据库查询效率低下,存在慢查询。-系统存在同步调用,串行处理导致响应时间增加。-缺少缓存,每次请求都需要查询数据库。-系统资源不足,CPU或内存使用率高。-网络延迟,服务间调用耗时较长。-促销活动期间订单量激增,系统处理能力不足。2.数据库连接池耗尽-可能原因:-连接池配置过小,无法应对高并发请求。-数据库操作没有正确释放连接,导致连接泄漏。-某些数据库操作耗时过长,占用连接时间过长。-数据库服务器性能不足,无法及时处理请求。-应用程序存在死锁或长时间运行的事务。3.系统负载不均衡-可能原因:-负载均衡算法不合理,没有考虑服务器实际负载情况。-应用程序无状态设计不当,某些服务器处理特定请求时负载过高。-资源分配不均,部分服务器配置较高,部分服务器配置较低。-缺少自动扩缩容机制,无法根据负载动态调整资源。-应用程序存在性能瓶颈,某些功能模块处理能力不足。解决方案1.订单创建接口响应缓慢解决方案-数据库优化:-优化慢查询,添加适当的索引。-拆分复杂查询,减少单次查询的数据量。-使用读写分离,将读操作分散到从库。-引入缓存:-使用Redis缓存热点数据,如商品信息、用户信息等。-对订单创建过程中的中间结果进行缓存,减少重复计算。-异步处理:-将非核心操作异步化,如发送通知、记录日志等。-使用消息队列处理订单创建后的后续操作。-代码优化:

温馨提示

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

最新文档

评论

0/150

提交评论