2020年计算机复试专业课面试问题锦集_第1页
2020年计算机复试专业课面试问题锦集_第2页
2020年计算机复试专业课面试问题锦集_第3页
2020年计算机复试专业课面试问题锦集_第4页
2020年计算机复试专业课面试问题锦集_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

2020年计算机复试专业课面试问题

锦集

计算机复试专业课面试问题锦集

,为什么会有程序的空间局部性?程序局部性是

指程序在运行时呈现出局部性规律,在一段时间

间隔内,程序的执行是局限在某个部份,所访问的

存储空间也只局限在某个区域。空间局部性是指

若一个存储单元被访问,那么它附近的单元也可

能被访问,这是由于程序的顺序执行引起的。

?TCP与UDP都是传输层的协议,且都用端口号

标识数据所达的进程。TCP提供的是面向连接

服务,提供可靠交付。且具有流量控制和拥塞控

制。可用于可靠要求高的场合如:SMTP,FTP,,提

供不可靠交付,且无确认机制。主要用于即时强

的场合如:视频聊天,语音电话等。

,?语法,定义了数据与控制信息的格式;语义,定义

了需要发出何种控制信息,完成何种响应动作以

及作出何种响应;同步,定义了事件实现顺序的详

细说明。

,特点是什么?◊查询:选择、投影、连接、除、并、

交、差◊数据更新:插入、删除、修改;关系操作

的特点:集合操作方式,即操作的对象和结果都是

集合。

,它得实现和理论有什么区别?是指通信系统的

整体设计,它为网络硬件、软件、协议、存取控

制和拓扑提供标准。网络体系统结构采用分层结

构,各层之间相互独立、较易维护、灵活性好。

国际标准化组织制定了OSI/RM标准,该标准采

用了七层结构应用层、表示层、会话层、传输层、

网络层、数据链路层、物理层。七层协议体系结

构既复杂又不实用,但其概念清楚,体系结构理论

较完整。而TCP/IP却成为了事实上的标准,它采

用了四层结构即应用层、传输层、网络层和网络

接口层。

?最简单的方式是在系统中增设一个重定位寄存

器用来存放正在执行作业的内存地址,每次访问

数据时,由硬件自动将相对地址与重定位寄存器

中的起始地址相加,形成实际的特理地址。当然

在分页式与分段式系统中,具地址变换机构,以及

快表等硬件。

(访问)的内容有哪些?利用权限机制,利用完整性

约束防止法数据进入数据库,提供故障恢复能力,

提供并发访问控制。

,非剥夺是不是一个好的策略?为什么?非剥夺方

式:分派程序一旦把处理机分配给某进程后便让

它一直运行下去,直到进程完成或发生某事件而

阻塞时,才把处理机分配给另一个进程。剥夺方

式:当一个进程正在运行时,系统能够基于某种原

则,剥夺已分配给它的处理机,将之分配给其它进

程。剥夺原则有:优先权原则、短进程、优先原

则、时间片原则。在分时系统中不剥夺并不是一

个好的策略。因为,在分时系统中,除了交互性以

外,及时性是很重要的性能因素。当一个作业被

阻塞后,CPU就完全空闲了,别的用户的及时性就

无法保证了,而完全能够把这些时间分配给别的

作业运行。以提高整体的吞吐量。

?DBA则是这个机构的一个(组)人员,:⑴决定数

据库中的信息内容和结构:数据库中要存放哪些

信息;(2)决定数据库的存储结构和存取策略:获

得较高的存取效率和存储空间利用率;(3)约定义

数据的安全性要求和完整性约束条件:负责确定

各个用户对数据库的存取权限、数据的保密级别

和完整性约束条件;(4)监控数据库的使用和运行:

转储数据、维护日志文件、故障恢复;(5)数据库

的改进和重组重构:对运行情况进行记录、统计

分析,以此来不断改进数据库设计。

?系统调用是OS与应用程序之间的接口,它是用

户程序取得OS服务的惟一途径。它与一般的过

程调用的区别:运行在不同的系统状态。调用程

序在运行在用户态,而被调用的程序运行在系统

态;通过软中断机制,先由用户态转为系统态,经

精心分析后,才能转向相应的系统调用处理子程

序;一般的过程调用返回后继续执行,但对系统调

用,当调用的进程仍具有最高优先权时,才返回到

调用进程继续处理;否则只能等被重新调度。

?指多个有关进程由于争夺资源而造成的一种僵

局,在无外力的情况下这些进程都将无法再向前

推进的状态。

?当没有被任何程序使用的时候,计算机的处理

器被认为是空闲的。当然下面提到的空闲任务不

在此列中。当有程序利用CPU空闲时间的时候,

就意味着它以较低的优先权运行着,以便不会影

响那有正常优先权的程序运行。一般来讲,这会

引起CPU消耗更多的电能,而大多数的现代

CPU当它们空闲的时候是能够进入省电模式的。

大多数操作系统都有个空闲任务,它是一个特殊

的任务。仅当CPU无事可做的时候由操作系统

调度器载入它。在现代的处理器中,HLT停机指

令节省了大量的电能与执量,而空闲任务几乎总

是由一个重复执行HLT停机指令的循环组成。

?同步表现为直接制约,如管道通信,一个进程写,

一个进程读,它们是相互制约的。互斥表现为间

接制约,比如多个进程同时请求打印机(没使用

SPOOLing技术)、多个进程同时请求一张网卡

发送数据包等。

?管程是由一组局部变量、对局部变量进行操作

的一组过程和对局部变量进行初始化的语句序

列组成。引入它的目的是因为Wait/Singal操作

太过分散,对它的维护很麻烦且容易造成死锁。

管程的特点是:管程的过程只能访问管程的局部

变量,管程的局部变量只能由其过程来访问;任何

时刻只能有一个进程进入管程执行;进程只能通

管程提供的过程入口进入管程。

,需要哪些硬件机制?采用可变分区方式管理时,

一般均采用动态重定位方式装入作业。地址变换

要靠硬件支持,主要是两个寄存器:基址寄存器和

限长寄存器,限长寄存器存放作业所占分区的长

度,基址寄存器则存放作业所占分区的起始地址,

这两个值确定了一个分区的位置和大小。转换时

根据逻辑地址与限长值比较,如果不有超过这个

值,表示访问地址合法,再加上基址寄存器中的值

就得到了绝对地址了,否则形成“地址越界”中

断。

?外中断时指来自处理机和内存外部的中断,如

I/O中断、定时器中断、外部信号中断等。狭义

上也叫中断;内中断主要指在处理机和内存内部

产生的中断,也称陷入,如校验错、页面失效、溢

出、除数为零等;中断和陷阱的主要区别:(1)陷入

通常由处理机正在执行的现行指令引起,而中断

则是由与现行指令无关的中断源引起的。(2)陷

阱处理程序提供的服务为当前进程所用,而中断

处理程序提供的服务则不是为了当前进程的。⑶

CPU在执行完一条指令之后,下一条指令开始之

前响应中断,而在一条指令执行中也能够响应陷

阱。

9*

文件系统数据库管理系统

某一应用现实世界

共享性差,冗余度大共享性高,冗余度小

记录内有结构,整体无整体结构化,用数据模

结构型描述

应用程序自己控制由数据库管理系统提供

数据安全性,完整性,并

发控制和恢复能力

独立性差具有高度的物理独立性

和一定的逻辑独立性

?两者在计算机硬件连接、系统拓朴结构和通信

控制等方面基本都是一样的,它们都具有通信和

资源共享的功能。区别关键在于:分布式计算机

系统是在分布式计算机操作系统支持下,进行分

布式数据库处理的,也就是说各互联的计算机能

够互相协调工作,共同完成一项任务,多台计算机

上并行运行。且具有透明性,用户不知道数据、

资源的具体位置,整个网络中所有计算机就像是

一台计算机一样;而计算机网络却不具备这种功

能,计算机网络系统中的各计算机通常是各自独

立进行工作的。

?因为引入多道程序技术后,能够进一步提高了

CPU利用率(阻塞),提高内存和I/O设备利用率

(小作业把内存浪费了),增加系统吞吐量(两都提

高后的必然)。

?什么是目态?它们与进程运行状态的关系是什

么?CPU交替执行操作系统程序和用户程序。管

态又叫特权态,系统态或核心态。CPU在管态下

能够执行指令系统的全集。通常,操作系统在管

态下运行。目态又叫常态或用户态。机器处于目

态时,程序只能执行非特权指令。用户程序只能

在目态下运行,如果用户程序在目态下执行特权

指令,硬件将发生中断,由操作系统获得控制,特

权指令执行被禁止,这样能够防止用户程序有意

或无意的破坏系统。

,阻塞,运行,就绪的进程最多有多少个?阻塞n个;

运行1个;就绪n-1个。

?波特是码元传输的踵率单位,说明每秒传多少

个码元。码元传输速率也称为调制速率、波形速

率或符号速率。比恃是信息量的单位,与码元的

传输速率,,波特,,是两个完全不同的概念。但是,

信息的传输速率“比特/秒”与码元的传输速率”

波特”在数量上却有一定的关系。

?时延(delay或latency)是指一个报文或分组从

一个网络(或一条链路)的一端传送到另一端所需

的时间。

?强制数据完整性可确保数据库中的数据质量。

?什么是码元长度?在数字通信中常常用时间间

隔相同的符号来表示一位二进制数字。这样的时

间间隔内的信号称为二进制码元,而这个间隔被

称为码元长度。

,说说有连接服务和无连接的服务?面向连接服

务具有连接建立、数据传输和连接释放这三个阶

段。面向连接服务是在数据交换之前,必须先建

立连接。当数据交换结束后,则必须终止这个连

接。在传送数据时是按序传送的,是可靠交付。

面向连接服务比较适合于在一定期间内要向同

一日的地发送许多报文的情况。无连接服务,两

个实体之间的通信不需要先建立好一个连接,因

此其下层的有关资源不需要事先进行预定保留。

这些资源将在数据传输时动态地进行分配。无连

接服务的优点是灵活方便和比较迅速。但无连接

服务不能防止报文的丢失、重复或失序。是一种

不可靠的服务。这种服务常被描述为“尽量大努

力支付”。

?工作机制?

28.DBMS支持那几种数据模型?

9

9

9■

9

O

?各产生于何处?

'协议'服务?

,为什么引入?

,如何引出"overeverything”和

(<everythingover?”

?各有什么作用?

%可靠的通信?

#define声明一个常数,用以表明1年中有多少

秒(忽略闰年问题)?

#defineSECONDS_PER_YEAR(60*60*24*

365)UL

,你怎么样用C编写死循环呢?while(l){}或者

for(;;){)

a)一个整型数(Aninteger)

b)一个指向整型数的指针(Apointertoan

integer)

c)一个指向指针的的指针,它指向的指针是指向

一个整型数(Apointertoapointertoan

integer)

d)一个有10个整型数的数组(Anarrayof10

integers)

e)一个有10个指针的数组,该指针是指向一个

整型数的。(Anarrayof10pointerstointegers)

f)一个指向有10个整型数数组的指针(A

pointertoanarrayof10integers)

g)一个指向函数的指针,该函数有一个整型参

数并返回一个整型数(Apointertoafunction

thattakesanintegerasanargumentand

returnsaninteger)

h)一个有10个指针的数组,该指针指向一个函

数,该函数有一个整型参数并返回一个整型数

(Anarrayoftenpointerstofunctionsthat

takeanintegerargumentandreturnan

integer)

答案是:

a)inta;//Aninteger

b)int*a;//Apointertoaninteger

c)int**a;//Apointertoapointertoaninteger

d)inta[10];//Anarrayof10integers

e)int*a[10];//Anarrayof10pointersto

integers

f)int(*a)[10];//Apointertoanarrayof10

integers

g)int(*a)(int);//Apointertoafunctionathat

takesanintegerargumentandreturnsan

integer

h)int(*a[10])(int);//Anarrayof10pointersto

functionsthattakeanintegerargumentand

returnanintegero

?这个简单的问题很少有人能回答完全。在C语

言中,关键字static有三个明显的作用:1)在函数

体,一个被声明为静态的变量在这一函数被调用

过程中维持其值不变。2)在模块内(但在函数

体外),一个被声明为静态的变量能够被模块内

所用函数访问,但不能被模块外其它函数访问。

它是一个本地的全局变量。3)在模块内,一个

被声明为静态的函数只可被这一模块内的其它

函数调用。那就是,这个函数被限制在声明它的

模块的本地范围内使用。大多数应试者能正确回

答第一部分,一部分能正确回答第二部分,同是

很少的人能懂得第三部分。这是一个应试者的严

重的缺点,因为他显然不懂得本地化数据和代码

范围的好处和重要性。

?表示常量不能够修改的变量。

constinta;

intconsta;

constint*a;

int*consta;

intconst*aconst;

前两个的作用是一样,a是一个常整型数。第三

个意味着a是一个指向常整型数的指针(也就

是,整型数是不可修改的,但指针能够)。第四

个意思a是一个指向整型数的常指针(也就是

说,指针指向的整型数是能够修改的,但指针是

不可修改的)。最后一个意味着a是一个指向常

整型数的常指针(也就是说,指针指向的整型数

是不可修改的,同时指针也是不可修改的)。如

果应试者能正确回答这些问题,那么他就给我留

下了一个好印象。顺带提一句,也许你可能会问,

即使不用关键字const,也还是能很容易写出功

能正确的程序,那么我为什么还要如此看重关键

字const呢?我也如下的几下理由:1)关键字

const的作用是为给读你代码的人传达非常有用

的信息,实际上,声明一个参数为常量是为了告

诉了用户这个参数的应用目的。如果你曾花很多

时间清理其它人留下的垃圾,你就会很快学会感

谢这点多余的信息。(当然,懂得用const的程

序员很少会留下的垃圾让别人来清理的。)2)通

过给优化器一些附加的信息,使用关键字const

也许能产生更紧凑的代码。3)合理地使用关键

字const能够使编译器很自然地保护那些不希望

被改变的参数,防止其被无意的代码修改。简而

言之,这样能够减少bug的出现。

,什么时候单线程效率高?1)耗时的操作使用线

程,提高应用程序响应。2)并行操作时使用线程,

如C/S架构的服务器端并发线程响应用户的请

求。3)多CPU系统中,使用线程提高CPU利用

率。4)改善程序结构。一个既长又复杂的进程能

够考虑分为多个线程,成为几个独立或半独立的

运行部分,这样的程序会利于理解和修改。其它

情况都使用单线程。

,会出现什么情况,是否还能使用?只能执行查

询等读操作,不能执行更改,备份等写操作,原

因是任何写操作都要记录日志。也就是说基本上

处于不能使用的状态。第三次握手:客户端收到

服务器的SYN+ACK包,向服务器发送确认包

ACK(ack=k+l),此包发送完毕,客户端和服务

器进入ESTABLISHED状态,完成三次握手。

,处于哪一层?答internet控制报文协议,处于网

络层(IP层)(ping命令基于这个协议)。

?服务器端:socket。建立套接字,绑定(bind)并

监听(listen),用accept。等待客户端连接。

客户端:socket。建立套接字,连接(connect)服

务器,连接上后使用send。和recv(),在套接

字上写读数据,直至数据交换完毕,closesocket()

关闭套接字。服务器端:accept()发现有客

户端连接,建立一个新的套接字,自身重新开

始等待连接。该新产生的套接字使用send()和

recv()写读数据,直至数据交换完毕,

closesocket()关闭套接字。

?Internet上产生的许多新的应用,特别是高带

宽的多媒体应用,带来了带宽的急剧消耗和网络

拥挤问题。组播是一种允许一个或多个发送者

(组播源)发送单一的数据包到多个接收者(一

次的,同时的)的网络技术。组播能够大大的节

省网络带宽,因为无论有多少个目标地址,在整

个网络的任何一条链路上只传送单一的数据包。

所以说组播技术的核心就是针对如何节约网络

资源的前提下保证服务质量。

?1)引用必须被初始化,指针不必。2)引用初始

化以后不能被改变,指针能够改变所指的对象。

3)不存在指向空值的引用,但是存在指向空值

的指针。

(3-wayshake)?在TCP/IP协议中,TCP协议提

供可靠的连接服务,采用三次握手建立一个连

接。第一次握手:建立连接时,客户端发送syn

包(syn=j)到服务器,并进入SYN,SEND状态,

等待服务器确认;第二次握手:服务器收到syn

包,必须确认客户的SYN(ack=j+l),同时自

己也发送一个SYN包(syn=k),BPSYN+ACK

包,此时服务器进入SYN_RECV状态。

?能,局部会屏蔽全局。要用全局变量,需要使

用七:“局部变量能够与全局变量同名,在函数内

引用这个变量时,会用到同名的局部变量,而不

会用到全局变量。对于有些编译器而言,在同一

个函数内能够定义多个同名的局部变量,比如在

两个循环体内都定义一个同名的局部变量,而那

个局部变量的作用域就在那个循环体内。

?extern能够用引用头文件的方式,也能够用

extern关键字,如果用引用头文件方式来引用某

个在头文件中声明的全局变理,假定你将那个变

写错了,那么在编译期间会报错,如果你用

extern方式引用时,假定你犯了同样的错误,那

么在编译期间不会报错,而在连接期间报错。

?在特定时间内完成特定的任务,实时性与可靠

性?

?如果有,是什么区别?全局变量储存在静态数据

库,局部变量在堆栈。

?左右子树都是平衡二叉树且左右子树的深度

差值的绝对值不大于1。

?没有回收垃圾资源。

?constructor函数不能声明为虚函数。

?时间复杂度是O(n2)。

x与“零值”比较的if语句?if(xv&&x>)。

?该协议的主要层次结构?Tcp/ip协议主要层次

结构为:应用层/传输层/网络层/数据链路层/物理

层。

?ARP(AddressResolutionProtocol)(地址解析

协议)。

?IP地址由两部分组成,网络号和主机号。不过

是要和“子网掩码”按位与上之后才能区分哪些

是网络位哪些是主机位。

,N值,从1至N开始顺序循环数数,每数到M

输出该数值,直至全部输出。写出C程序。循

环链表,用取余操作做。

()的参数类型是:switch的参数不能为实型。

#include<>

main()

(

inta,b,c,d;

a=10;

b=a++;

c=++a;

d=10*a++;

printf(Hb,c,d:%d,%d,%dn,b,c,d);

return0;

)

答:10,12,120

28.写出下列代码的输出内容

#includeo

intinc(inta)

(

return(++a);

)

intmulti(int*a,int*b,mt*c)

return(*c=*a**b);

)

typedefint(FUNCl)(intin);

typedefint(FUNC2)

voidshow(FUNC2fun,intargl,int*arg2)

(

INCp=&inc;

inttemp=p(argl);

fun(&temp,&argl,arg2);

printf(11%d\n1*arg2);

)

main()

(

inta;

show(multi,10?&a);

return0;

)

*£*

rj*rjwrjwrjwrjwrj»rj»rj»rjwrj**j«rj>rj>rj*rjwrjw

,在C语言中应用什么实现,在C++中应用什么实

现?答:c用宏定义,C++用inline。

?答:PPP点到点连接。

?黑盒:针对系统功能的测试白盒:测试函数功

能,各函数接口。

?概要设计阶段。

9....

•,,,,°

••••

•,,,°

••••

•,,,°

shorthash(unsignedshortkey)

(

return(key»)%256

)

请问hash(16),hash(256)的值分别是:

9

inta[60][250][1000],i,j,k;

for(k=0;k<=1000;k++)

fora=0;j<250;j++)

for(i=0;i<60;i++)

a[i]U][k]=0;

把循环语句内外换一下

2.#defineMax_CB500

voidLmiQueryCSmd(StructMSgCB*pmsg)

unsignedcharucCmdNum;

for(ucCmdNum=0;ucCmdNum<Max_CB;ucCm

dNum++)

)

死循环

,请找出错误:

#defineSQUARE(a)((a)*(a))

inta=5;

intb;

b=SQUARE(a++);

unsignedcharBYTE

intexamply_fun(BYTEgt_len;BYTE*gt_code)

(

BYTE*gt_buf;

gt_buf=(BYTE*)MALLOC(Max_GT_Length);

if(gt_len>Max_GT_Length)

(

returnGT_Length_ERROR;

)

Phone的原理是什么?IPV6。

,端口有什么作用?三次握手,确定是哪个应用

程序使用该协议。

,我国某前广泛使用的是那一种?

9

»£•

*J*rjwrj»rj*rjwrjwrj*rj»rjwrj»rjwrjwrjw*p»rjwrj*rj»rj»rj»

?线程是指进程内的一个执行单元,:(1)调度:线程

作为调度和分配的基本单位,进程作为拥有资源

的基本单位;(2)并发性:不仅进程之间能够并发

执行,同一个进程的多个线程之间也可并发执

行。(3)拥有资源:进程是拥有资源的一个独立单

位,线程不拥有系统资源,但能够访问隶属于进

程的资源。(4)系统开销:在创建或撤消进程时,

由于系统都要为之分配和回收资源,导致系统的

开销明显大于创建或撤消线程时的开销。

?Heap是堆,stack是栈。Stack的空间由操作系

统自动分配/释放,Heap上的空间手动分配/释

放。Stack空间有限,Heap是很大的自由存储区。

C中的malloc函数分配的内存空间即在堆

上,C++中对应的是new操作符。程序在编译期

对变量和函数分配内存都在栈上进行,且程序运

行过程中函数调用时参数的传递也在栈上进行o

,不能运行两个。像winamp一样,只能开一个

窗口,怎样实现?用内存映射或全局原子(互斥

变量)、查找窗口句柄…FindWindow,互斥,

写标志到文件或注册表,共享内存。

?有什么用?有什么优点?就是一堆sql的集合,

能够建立非常复杂的查询,编译运行,所以运行

一次后,以后再运行速度比单独执行SQL快很

多。

,使用多进程与多线程,请问有什么区别?1,进

程:子进程是父进程的复制品。子进程获得父进

程数据空间、堆和栈的复制品。2,线程:相对与

进程而言,线程是一个更加接近于执行体的概

念,它能够与同进程的其它线程共享数据,但拥

有自己的栈空间,拥有独立的执行序列。两者都

能够提高程序的并发度,提高程序运行效率和响

应时间。线程和进程在使用上各有优缺点:线程

执行开销小,但不利于资源管理和保护;而进程

正相反。同时,线程适合于在SMP机器上运行,

而进程则能够跨机器迁移。

9

inti=512;

cout«boolalpha«((i&(i-1))?false:true)

«endl;

9

char*constp;charconst*p;constchar*p

答:char*constp;〃常量指针,p的值不能够修

charconstp;〃指向常量的指针,指向的常量

值不能够改

constchar*p;〃和charconst*p一样

,该机器的指针是多少位?指针是多少位只要看

地址总线的位数就行了。80386以后的机子都是

32的数据总线。所以指针的位数就是4个字节

了。

10.main()

(

inta[5]={l,2,3,4,5};

int*ptr=(int*)(&a+l);

prmtf(H%d,%dn,*(a+l),*(ptr-l));

)

输出:2,5。*(a+l)就是a[l],*(ptr-l)就是a[4],

执行结果是2,5o&a+l不是首地址+1,系统会

认为加一个a数组的偏移,是偏移了一个数组的

大小(本例是5个int)oint*ptr=(int*)(&a+l);

则ptr实际是&(a[5]),也就是a+:&a是数组指针,

其类型为int而指针加1要根据指针类型

加上一定的值,不同类型的指针+1之后增加的

大小不同a是长度为5的int数组指针,所以要

加5*sizeof(int),所以ptr实际是a[5],但是ptr

与(&a+l)类型是不一样的(这点很重要),所以

prt-1只会减去sizeof(int^)a,&a的地址是一样

的,但意思不一样,a是数组首地址,也就是a[0]

的地址,&a是对象(数组)首地址,a

温馨提示

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

评论

0/150

提交评论