某知名共享单车公司PHP工程师面试笔试真题6_第1页
某知名共享单车公司PHP工程师面试笔试真题6_第2页
某知名共享单车公司PHP工程师面试笔试真题6_第3页
某知名共享单车公司PHP工程师面试笔试真题6_第4页
某知名共享单车公司PHP工程师面试笔试真题6_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

某知名共享单车公司PHP工程师面试笔试真题6

一、选择题

1.实验高中的小明暗恋女神同学已经三年了,高考结束后,小明决定向女神

同学表白。这天,小明来到女神楼下等待女神的出现,时间一分一秒地流逝,

两个多小时过去了,女神还没有出现,小明看了下表,时针和分

针的位置正好跟开始等的时候互换,请问小明一共等了女神_____分钟。

A.165

B.150

C.172

D.166

正确答案:D

[解析]根套题目中的描述,可以画一个表示时针与分针的图例,如下期所示。

假设小明开始等待女神的那一时刻时针与分针的夹角为。弧度,那么,等

到时针与分针正好互换位置时,时针走过了0弧度,而由于分针转动一圈表示

的时间为一个小时,钟表一圈是一个圆,表示的弧度值为2兀,分针因为要转若

干圈才能到达时针的位置,记分钟所转圈数为n,此时分针转过的角度则为2五

n-。弧度。

题目强调,“时间一分一秒地流逝,两个多小时过去了,女神还没有出

现”,通过这条信息可知,分针转了2〜3圈,接近3圈,此时可知,n值取

3,所以,时针转过的角度值为0,分针转过的角度值为2兀*3-。=6兀-。。

对于时针而言,2n代表一圈,即12个小时,那么弧度。表示的时间值为

12*8/2B小时,对于分针而言,2Ji代表一圈,即60分钟,那么6冗一。表示的

是60*(6五-。)/2兀分钟。由于时钟走过的时间值与分钟走过的时间值所代表的

时间量是一个量,故而二者是相等的,由此可以构建如下等式关系:

(120/2JI)*60=60*(6JI-8)/2JI

求解上述等式可知,0=6n/13,即小明等待的时间反映在钟表上为6n

/13弧度值,所以,小明一共等了12*(6兀/13)/2冗小时,即36/13小时,合

166分钟。

所以,本题的答案为D。

2.全等运算符===如何比较两个值?

A.把它们转换成相同的数据类型再比较转换后的值

B.只在两者的数据类型和值都相同时才返回true

C.如果两个值是字符串,则进行词汇比较

D.基于strcmp函数进行比较

正确答案:B

[解析]全1运算符主要比较两者数据类型和值是否相等,都相等时才会返回

true。

本题中,对于选项A,全等运算符是先比较它们的值是否相等,如果不相

等,那么返回false;如果相等,那么比较数据类型是否相等。并不是先转换相

同的数据类型,再进行值的比较。选项A错误。

对丁选项B,全等运算符是比较两者的数据类型和值是否都相等,如果数

据类型和值都相等,那么返回true。选项B正确。

对于选项C,如果比较的两个值都是字符串,那么会对每个字符进行比

较,而不是进行词汇比较。选项C错误。

对于选项D,strcmp只能用来比较两个字符串的值是否相等,而全等比较

还能比较两个数据的类型是否相等,显然它们的功能是不同的,因此全等也不

是基于strcmp实现的。选项D错误。

所以,本题的答案为B。

3.可以用来表现以下条件判断最合适的语法结构是

if($a==,a,){

somefunctionO;

}elseif($a==,b,){

anotherfunction();

}elseif($a==,c){

dosomething();

}else{

donothingO;

A.没有default的switch语句

B.一个递归函数

C.while语句

D.有default的switch语句

正确答案:D

[解析]对于if...elseif...else结构的分支结构程序可以使用switch语句进

行优化,从而可以避免冗长的代码块。本题中,else相当于switch里面的

default部分,即条件没有符合的都可以执行到default里面的语句。选项A错

误,选项D正确。

逻辑判断语句是不可能被改成循环语句或递归函数完成对应功能的,选项

B选项C错误。

所以,本题的答案为D。

4.假设$a=5,有$1)=($@—),贝ij$b是

A.4

B.5

C.6

D.O

正确答案:B

[解析]$4($5-)相当丁$4$旷-,$〃一会先把$&的值赋值给$b再减1,得到

$b=5o

所以,本题的答案为B。

5.考虑如下数组,能从数组$multi_array中找出值cat的方法是

$mu11i_array=array("red","green”,

42二〉〃blue",

yellow=>array(apple,9=>pear,banana,

orange=>array(dog,cat,iguana))

);

A.$multi_arrayyellow']['apple*][0]

B.$multi_arrayblue'][0]['orange'][1]

C.$multi_array[3][3][2]

D.array]yellow']['orange,]['cat']

E.$multi_arrayyellow']['orange,][1]

正确答橐:E

[解析]$multi_array数组是一个多维数组,值cat在orange数组中,键名

1,orange又在yellow,数组中,所以获得cat值的方法应该为

$multi_array[*yellow,]orange,][1]。选项E正确。

所以,本题的答案为E。

6.下面关于PHP抽象类的描述中,错误的是

A.PHP中抽象类使用abstract关键字定义

B.没有方法体的方法叫抽象方法,包含抽象方法的类必须是抽象类

C.抽象类中必须有抽象方法,否则不叫抽象类

D.抽象类不能实例化,也就是不可以new成对象

正确答案:c

[解析]抽象类可以是个空类,也就是不一定需要有抽象方法。但抽象方法只能

存在抽象类中。选项C错误。

所以,本题的答案为C。

10.___处理HTTP文件上传时,PHP把文件存储在$FILES中。在PHP脚本的执行

周期中,这些文件将被放在本地的临时文件夹里,而在脚本结束后,文件将被

自动删除。在处理HTTP文件上传时,确保当前操作的文件是正确的方法有

_____(双选)

A.操作前,将文件名与浏览器报告的文件名对比

B.操作前,用fileexists函数确保文件存在

C.用isuploadedfile0函数确认文件的确是通过HTTP方式传输过来的

D.用moveuploadfile。将文件移动到安全位置

E.只信任PHP存储临时文件目录下的文件

正确答案:CD

[解析]在上传前,一定要用is_uploaded_file()函数确保文件名正确传输,并

把本地临时文件通过move_upload_fiie()函数在上传文件前检查文件,再移动

文件到安全位置进行长期保存,防止文件丢失。而在操作前不需要特意地对文

件名进行对比和使用。file_exists()函数判断文件是否存在。其次,文件的上

传,PHP并不是只信任临时文件目录下的文件。选项C选项D正确。

所以,本题的答案为CD。

11.如果用+操作符把一个字符串和一个整型数字相加,那么结果是

A.解释器输出一个类型错误

B.字符串将被转换成数字,再与整型数字相加

C.字符串将被丢弃,只保留整型数字

D.字符串和整型数字将连接成一个新字符串

E.整型数字将被丢弃,而保留字符串

正确答案:B

[解析]字符串将被转换成数字(如果无法发生转换,那么就是0),然后与整型

数字相加。

所以,本题的答案为B。

12.下列函数不是被用于处理数组的是_____

A.inarray()

B.array_slice()

C.list()

D.intval()

正确答案:D

[解析]本题中,in_array()函数可以判断值是否在数组中,array_slice()函

数可以在数组中根据条件取出一段值,list。函数可以一次操作所有的变量,

无论是单个变量还是数组都可以。而intval()函数是获取数据的整数值,不能

用于对象中。选项D正确。

所以,本题的答案为D。

13.以下关于PHP文件处理的说法中,正确的是

A.file_get_contcnts()函数能用来抓取网页数据,但是没办法设置超时时间

B.fileO函薮既能读取文本文件也能读取二进制文件,但是读取二进制文件有

可能出现安全问题

C.如果表单中没有选择上传的文件,则PHP变量的值将为NULL

D.fsockopen()和fputs()结合起来可以发送邮件,也可以用来抓取网页内容、

下载ftp文件等

正确答案:C

[解析]对于选项A,可以通过context参数设置超时时间。选项A错误。

对于选项B,file。函数可以安全用于读取二进制文件。选项B错误。

对于选项C,表单中没有文件上传时,PHP的$_FILES变量值为NULL。选

项C正确。

对于选项D,fputs()用于写入字符串到文件中时,只能用于上传不能用于

下载ftp文件。选项D错误。

所以,本题的答案为C。

14.下列PHP配置项中,和安全最不相关的是

A.openbasedir

B.register_globals

C.disablefunctions

D.file_uploads

正确答案:D

[解析]对于选项A,open_basedir可将用户访问文件的活动范围限制在指定的

区域,通常是其家目录的路径,也可用符号来代表当前目录。注意,用

open_basedir指定的限制实际上是前缀,而不是目录名。举例来说,若

uopen_basedir=/dir/user,那么目录“/dir/user"和“/dir/userl”都是

可以访问的。所以如果要将访问限制在仅为指定的目录,那么要用斜线结束路

径名。例如,设置成"openbasedir=/dir/user/"o

对于选项B,registejglobals的意思就是注册为全局变量,所以当它的

值被设为on的时候,传递过来的值会被直接注册为全局变量来使用。当被设为

off的时候,要到特定的数组里去获得它。但需要注意的是:

1)从PHP4.2.0版开始,配置文件中register_globals的默认值从on改

为off,虽然可以设置它为。n,但是当无法控制服奖器的时候,代码的兼容性

就成为一个大问题,所以,最好从现在就开始使用。ff的风格来编程。

2)当register_globals打开以后,各种变量都会被注入代码中,例如,

来自HTML表单的请求变量。再加上PHP在使用变量之前是无须进行初始化的,

这就使得更容易写出不安全的代码。当打开时,人们使用变量时确实不知道变

量是哪里来的。但是register_globals的关闭改变了这种代码内部变量和客户

端发送的变量混杂在一起的糟糕情况。

对于选项C,disable_functions限制程序使用一些可以直接执行系统命

令的函数,如system、exec、passthru、shellexec>procopen等。所以如

果想保证服务器的安全,那么要将这个函数加到disable_functions里或者将

安全模式打开。

对于选项D,file_uploads是决定PHP文件上传时记录file_uploads指

令是否启用的函数,默认值为。n。该函数和安全最不相关,选项D正确。

所以,本题的答案为D。

15.在PHP中,使用sendmail程序从Windows或Novell系统中发送邮件的

方式,与从类UNIX系统中发送的方式不同。以下哪些选项说明了这个不

同?(双选)

AJVindows/Novell不需要第三方软件的支持就能实现该功能

B.UNIX中,sendmail_from的配置决定了邮件头中的From信息

C.在Windows/Novell中,无法发送有多个收件人的电子邮件,每个收件人都必

须单独发送

D.有可能完全相同,这取决于sendmailpath的配置

E.不同于Windows/Novell,在UNIX中,必须用SMTP和smtpport配置好MTA

主机和端口

正确答案:AD

[解析]对于选项A,Windows/Novell版本通过SMTP可以直接用MTA发送邮

件,而UNIX的PHP需要用sendmail程序通过MTA发送邮件。选项A正确,选

项E错误。

对于选项B,在Windows/Novell上使用mail。时,需要配置

sendmailfrom才能使用,并不是通过sendmailfrom配置决定邮件中的From

信息。而UNIX发邮件是交给sendmail程序来处理的。选项D正确,选项B错

误。

对于选项3条件允许的情况卜,Windows/Novell上的PHP可以进行配

置,通过“sendmail”封装器模拟sendmail发信,可以发送多个收件人的电子

邮件。选项C错误。

所以,本题的答案为AD。

二、填空题

1.假设机器上没有安装sendmail,要想mail函数能在Windows下使用,需

要o

正确答案:

改变php.ini的设置。

[解析]在UNIX、Linux系统中,PHP主要使用sendmail程序来处理邮件。而在

Windows中除非已经有sendmail包装器,否则只能使用服务器的SMTP配置进

行,而SMTP是可以在php.ini文件中进行配置开启的。

2.PHP支持的流传输方式的是和o

正确答案:

STDIO>stream。

[解析]PHP只支持两种流传输,分别为本地操作的STDIO和远程操作的

stream,并且可以根据创建的流的类型来自动选择合适的传输方式。

3.能让类在整个脚本里只实例化一次的设计模式是o

正确答案:

单例模式。

[解析]单例模式是一种用于确保程序中只有一个类实例化的程序。

4.使用final关键字时,应注意的问题有、、3

正确答案:

定义的类禁止继承;定义的成员禁止继承;定义的方法禁止重写。

5.即时加载一个类的方法是o

正确答案:

splautoloadregister()函数。

[解析]spl_autoload_registerl()提供了一种更加灵活的方式来实现类的自动

加载(同一个应用文件可支持任意数量的加载器,比如第三方库中的类文

件)o而—autoload。函数在PHP7.2版本中已经被废除。

三、简答题

1.5名海盗抢得了窖藏的100枚金币,并打算瓜分这些战利品。这是一些讲

民主的海盗(当然是他们自己特有的民主),他们的习惯是按卜面的方式进行分

配:最厉害的一名海盗提出分配方案,然后所有的海盗(包括提出方案者本人)

就此方案进行表决。如果50%或更多的海盗赞同此方案,此方案就获得通过并据

此分配战利品。否则提出方案的海盗将被扔到海里,然后下一名最厉害的海盗

又重复上述过程。

所有的海盗都乐于看到他们的一位同伙被扔进海里,不过,如果让他们

选择的话,他们还是宁可得一笔现金。他们当然也不愿意自己被扔到海里。所

有的海盗都是有理性的,而且知道其他的海盗也是有理性的。此外,没有两名

海盗是同等厉害的一一这些海盗按照完全由上到下的等级排好了座次,并且每

个人都清楚自己和其他所有人的等级。这些金块不能再分,也不允许几名海盗

共有金块,因为任何海盗都不相信他的同伙会遵守关于共享金块的安排。这是

一伙每人都只为自己打算的海盗。

最凶的一名海盗应当提出什么样的分配方案才能使他获得最多的金子呢?

正确答案:

如果轮到第四个海盗分配:100,0;

轮到第三个:99,0,1;

轮到第二个:99,0,1,0;

轮到第一个:98,0,1,0,1,这就是第一个海盗的最佳方案。

可以从后往前推测每次最优的方案,从而确定第一种方案就是最好的。

1)当只剩两个海盗分金时,因为只要有50布或以上的支持率则方案通过,

所以第四个海盗和第五个海盗分金时,无论第五个海盗是否支持自己,第四个

海盗都可以给自己分配100枚金币。

2)当只剩三个海盗分金时,第三个海盗分金的方案,除了自己的支持外,

还需要一个海盗的支持,否则方案不通过。所以,如果第三个海盗想要拿最多

金币,最好的方案就是让第五个海盗得到金币来支持他,因为第四个海盗可以

通过否定第三个海盗的方案实现自己的利益最大化。所以,第三个海盗得99枚

金币,而第五个海盗得1枚金币的方案是最好的方案。

3)当只剩下四个海盗分金时,第二个海盗的方案,只需要一个海盗支持他

即可通过方案。由2)的分析知道,要第四个海盗支持自己是最有利的,所以可

以得到最好的方案是第二个海盗得99枚金币,第四个海盗得1枚金币的方案。

最初的情况,5个海盗分金,第一个海盗必须要其余2名海盗支持自己,

他才有可能得到最多的金币。通过3)的分析知道,分配给第三个海盗和第五个

海盗1枚金币,让他们支持自己是最优的方案。

2.如何定义一个函数?函数名区分大小写吗?

正确答案:

定义一个函数的步骤为以下几点,函数名的大小写是不区分的。

1)通过function关键字声明函数,格式为function函数名(){}。

2)函数命名遵循变量命名的规则,以字母或卜划线开头,且不能以数字开

头。

3)函数名不可以使用系统函数的名称,且不能使用已经声明过的函数名。

PHP中函数名、方法名、类名不区分大小写,但PHP的变量名是区分大小

写的。

实现代码为

<?php

functionabc(){

echo〃l〃;

)

ABC();

?>

程序运行结果为1。

从上面运行结果可以看出,函数名是abc小写,但是可以通过ABC大写去

调用该函数。

3.谈谈你对MVC的认识,介绍几种目前比较流行的MVC框架。

正确答案:

MVC是一种设计模式,由模型层、逻辑层和视图层组成。用户通过入口访问到控

制器,控制器从模型层获取数据然后分配视图,并加载数据到视图层。用户通

过视图层操作向逻辑层反馈,逻辑层处理反馈,如果涉及数据库操作,那么将

会在模型层中对数据库增、册h改、查。最后逻辑层将执行结果返回到视图

层。

目前比较流行的M行框架有Laravel、ThinkPHP、Yii>codelgniter>

CakePHP等。

4.请介绍说明观察者模式。

正确答案:

观察者模式(也被称为发布/订阅模式)提供了避免组件之间紧密耦合的另一种方

法,它将观察者和被观察的对象分离开。在该模式中,一个对象通过添加一个

方法(该方法允许另一个对象,即观察者注册自己)使本身变得可观察.当可观

察的对象更改时,它会将消息发送到已注册的观察者。这些观察者使用该信息

执行的操作与可观察的对象无关,结果是对象可以相互对话,而不必了解原

因。

例如,用户界面可以作为一个观察者,业务数据是被观察者,用户界面观

察业务数据的变化,发现数据变化后,就显示在界面上。面向对象设计的一个

原则是,系统中的每个类将重点放在某一个功能上,而不是其他方面。一个对

象只做一件事情,并且将它做好。观察者模式在模块之间划定了清晰的界限,

提高了应用程序的可维护性和重用性。

实现的代码如下:

<?php

〃观察者接口

interfaceInterfaceobserver

{

functiononListen($sender,$args);

functiongetObserverName();

}

〃可被观察者接口

interfaceInterfaceObservable

{

functionaddObserver($observer);

functionremoveObserver($observername);

)

〃观察者抽象类

abstractclassObserverimplementsInterfaceobserver

(

protected$observername;

functiongetObserverName()

{

return$this->observername;

)

functiononListen($sender,$args)

()

}

〃可被观察类

abstractclassObservableimplementsInterfaceObservable

{

protected$observers=array();

publicfunctionaddObserver($observer)

{

if($observerinstanceofInterfaceobserver)

{

$this->observers[]=$observer;

}

}

publicfunctionremoveObserver($observer_name)

{-

foreach($this->observersas$index=>$observer)

(

if($observer->getObserverName()===$observer_name)

(

arraysplice($this->observers,$index,1);

return;

}

}

)

}

〃模拟一个可以被观察的类

classAextendsObservable

{

publicfunctionaddListener($listener)

{

foreach($this->observersas$observer)

(

$observer->onListen($this,$listener);

)

}

}

〃模拟一个观察者类

classBextendsObserver

(

protected$observer_name=,B';

publicfunctiononListen($sender,$args)

(

varclump($sender);

echo〃Vbr>〃;

varclump($args);

echo〃Vbr>”;

)

}

〃模拟另外一个观察者类

classCextendsObserver

{

protected$observer_name=,C,;

publicfunctiononListen(Ssender,$args)

(

vardump($sender);

echo"Vbr>〃;

var_dump($args);

echo"Vbr>〃;

$a=newA();

〃注入观察者

$a->addObserver(newB());

$a->addObserver(newCO);

〃可以看到观察到的信息

$a->addListenerCD');

〃移除观察者

$ci->ie!!ioveObseivei-(?B,);

?>

5.Memcache的工作原理是什么?

正确答案:

Memcache的工作就是在专门的机器内存里维护一张巨大的hash表,存储经常被

读写的一些文件与数据,从而极大地提高网站的运行效率。

Memcache的程序运行在一个或多个服务器中,Memcache把全部的数据保

存在内存中,通过hash表的方式,每条数据由key/value的形式构成,随时接

受客户端的请求,然后返回结果。

客户端与Memcache建立连接后,存储对象主要是通过唯一的key存储

value到内存中,取数据时通过这个key从内存中获取对应的value。因为

Memcache的数据是存储在内存中而不是保存在cache文件中,所以Memcache访

问比较快。但是因为这些数据不是永久化存储•,所以不建议存储重要数据在

Memcache中,因为重启服务器后这些数据就会消失。

四、编程题

1.数字1-1000放在含有1001个元素的数组中,其中只有唯一的一个元素

值重复,其他数字均只出现一次。设计一个算法,将重复元素找出来,要求每

个数组元素只能访问一次。如果不使用辅助存储空间,能否设计一个算法实现?

正确答案:

拿到题目,首先需要做的就是分析题目所要达到的目标以及其中的限定条件。

从题目的描述中可以发现,本题的目标就是在一个有且仅有一个元素值重复的

数组中找出这个唯一的重复元素,而限定条件就是每个数组元素只能访问一

次,并且不许使用辅助存储空间。

示例代码如下:

<?php

/*

**函数功能:在数组中找唯一重复的元素

**输入参数:array数组首地址,len数组长度

**返回值:重复元素的值,无重复元素则返回

*/

functionfindDup($array)

{

$len=count($array);

if(!$array|$len<l)

return-1;

$newArr=array();

for($1=0;$i<$1erj-1;$i++)

$newArr[$i]=0;

for($i=0;$i<$len;$i++)

{

if($newArr[$array[$i]-l]==0)

{

$newArr[$array;

}else

{

return$array[$i];

}

}

return-1;

}

$array=[l,3,4,2,5,3];

printf(,,%d,z,findDup($array));

?>

程序的运行结果为

3

2.设计一个算法,判断给定的一个数n是否是某个数的平方,不能使用开方

运算。例如,16就满足条件,因为它是4的平方;而15则不满足条件,因为不

存在一个数使得其平方值为15o

正确答案:

通过对平方数进行分析发现有如下规律:

(n+l”2=if2+2n+l=(n-1)-2+(2*(n-1)+1)+2*n+l=…

=1+(2*1+1)+(2*2+1)+…+(2*n+l)。

通过上式可以发现,这些项构成了一个公差为2的等差数列的和,由此可

以得到如下的解决方法:对.n依次减1,3,5,7,…,如果相减后的值大于

0,则继续减下一项;如果相减的后的值等于0,则说明n是某个数的平方;如

果相减后的值小于0,则说明n不是某个数的平方。根据这个思路,代码实现如

下:

functionisPower($n)

{

if($n<=0)

(

printf(〃%d不是自然数\n〃,n);

returnfalse;

}

$minus=l;

while($n>0)

{

$n=$n-$minus;

//n是某个数的平方

if($n=0)

returntrue;

//n不是某个数的平方

elseif($n<0)

returnfalse;

〃每次减数都加2

else

$minus+=2;

)

returnfalse;

}

3.用类编程实现:Stu类中有两个私有属性name和sex,有两个公有方法,

setNameO和setSexO参数自定,方法可实现对两个私有属性进行修改。在实例

化类的时候要求对私有属性能初始化。

正确答案:

实现代码如下:

<?php

ClassStu(

private$name;

private$sex;

publicfunctionsetName($name){

$this->name=$nair.e;

publicfunctionsetSex($sex){

$this->sex=$sex;

}

?>

4.把链表相邻元素翻转,例如,给定链表为1->2->3->4->5->6->7,

则翻转后的链表变为2->1->4->3->6->5->7O

正确答案:

主要思藤通过调整结点指针域的指向来直接调换相邻的两个结点。如果单

链表恰好有偶数个结点,那么只需要将奇偶结点对调,如果链表有奇数个结

点,那么除最后一结点外的其他结点进行奇偶对调。为了便于理解,下图给出

了其中第一对结点对调的方法。

precur

⑤;⑥;

hcadT_THTn"H_d_H^TH'n_H^TH^TH"n~l

在上图中,当前遍历到结点cur,通过①〜⑥6个步骤用虚线的指针来代

替实线的指针实现相邻结点的逆序。其中,①〜④实现了前两个结点的逆序操

作,⑤和⑥两个步骤向后移动指针,接着可以采用同样的方式实现后面两个相

邻结点的逆序操作。

实现代码如下:

<?php

header("content-type:text/html;charset=utf-8〃);

〃链表结点

classnode{

public$data;

〃存储数据

public$next;

〃下一结点

publicfunction_construct($data){

$this->data=$data;

$this->next=NULL;

}

}

〃单链表

classlinkList(

private$header;

〃链表头结点

〃构造方法

publicfunction_construct($data=NULL){

$this->header=newnode($data);

)

〃添加结点数据

publicfunctionaddLink($node){

$current=$this->header;

while($current->next!=NULL){

$current=$

温馨提示

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

评论

0/150

提交评论