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

下载本文档

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

文档简介

php工程师面试题及答案PHP工程师面试题及答案一、选择题(每题2分,共20分)1.以下哪个不是PHP的超级全局变量?A.$_GETB.$_POSTC.$_REQUESTD.$_VARIABLE2.在PHP中,以下哪个函数用于获取文件的最后修改时间?A.filetime()B.filemtime()C.fileatime()D.filectime()3.关于PHP中的命名空间,以下说法正确的是?A.命名空间不能嵌套B.使用namespace关键字声明命名空间C.命名空间只能在文件顶部声明D.以上都正确4.在PHP中,以下哪个函数用于将字符串转换为数组?A.str_to_array()B.explode()C.split()D.str_split()5.以下哪个PHP魔术方法用于在对象被当作字符串使用时调用?A.__toString()B.__string()C.__tostring()D.__String()6.在PHP中,以下哪个关键字用于实现接口?A.implementsB.extendC.implementsD.include7.关于PHP中的会话(Session),以下说法正确的是?A.Session存储在客户端B.Session存储在服务器端C.Session数据大小有限制,通常为4KBD.Session不能跨页面使用8.在PHP中,以下哪个函数用于获取当前脚本的URL?A.current_url()B.self_url()C.$_SERVER['PHP_SELF']D.$_SERVER['REQUEST_URI']9.关于PHP中的异常处理,以下哪个语句用于抛出异常?A.throwB.throwsC.catchD.try10.在PHP7中,以下哪个类型不是新增的标量类型?A.intB.floatC.stringD.array二、填空题(每题1分,共10分)1.在PHP中,使用________关键字可以定义一个常量。2.PHP中的________函数用于将变量转换为字符串。3.在PHP中,使用________函数可以获取数组的长度。4.PHP中的________函数用于将数组转换为字符串,每个元素用指定分隔符连接。5.在PHP中,使用________关键字可以声明一个抽象类。6.在PHP中,________函数用于获取当前日期和时间。7.在PHP中,使用________运算符可以检查一个变量是否为NULL。8.在PHP中,________函数用于执行一个外部命令。9.在PHP中,使用________关键字可以声明一个trait。10.在PHP中,________函数用于获取当前脚本的执行时间。三、判断题(每题1分,共10分)1.PHP中,变量名区分大小写。()2.在PHP中,可以使用"=="运算符来比较两个变量的值和类型是否相等。()3.PHP中的require_once和include_once的区别在于,如果文件已经包含过,require_once会产生错误,而include_once不会。()4.在PHP中,final关键字可以用于修饰类,表示该类不能被继承。()5.PHP中,count()函数只能用于数组,不能用于其他类型。()6.在PHP中,使用header()函数必须在任何输出之前调用,否则会导致错误。()7.PHP中的session_start()函数可以在脚本的任何位置调用,不会影响功能。()8.在PHP中,接口中的方法必须都是public的,不能是protected或private的。()9.PHP中的static关键字只能用于修饰属性和方法,不能用于修饰类。()10.在PHP中,使用die()函数会终止脚本的执行,并输出一条消息。()四、简答题(每题5分,共25分)1.简述PHP中的include、require、include_once和require_once的区别。2.解释PHP中的魔术方法__construct、__destruct、__get和__set的作用。3.简述PHP中面向对象编程的三大特性:封装、继承和多态。4.解释PHP中的命名空间及其作用。5.简述PHP中的MVC设计模式及其在Web开发中的应用。五、编程题(每题10分,共30分)1.编写一个PHP函数,实现字符串反转,但不能使用PHP内置的strrev()函数。2.编写一个PHP类,实现一个简单的单例模式。3.编写一个PHP脚本,实现一个简单的分页功能,给定总记录数和每页显示数量,计算总页数和当前页的数据。六、系统设计题(5分)请设计一个简单的用户登录系统,包括数据库表设计、登录流程和安全性考虑。答案:一、选择题答案1.答案:D解释:PHP的超级全局变量包括$_GET、$_POST、$_REQUEST、$_COOKIE、$_SESSION、$_FILES、$_SERVER、$_ENV、$_GLOBALS等。$_VARIABLE不是PHP的超级全局变量,而是用户自定义变量的名称。2.答案:B解释:在PHP中,filemtime()函数用于获取文件的最后修改时间。fileatime()函数用于获取文件的最后访问时间,filectime()函数用于获取文件的最后状态改变时间。这三个函数都返回Unix时间戳。3.答案:B解释:在PHP中,使用namespace关键字声明命名空间。命名空间可以嵌套,也可以不在文件顶部声明(虽然最佳实践是在文件顶部声明)。选项A错误,因为命名空间可以嵌套;选项C错误,因为命名空间可以在代码的任何位置声明,但最佳实践是在文件顶部。4.答案:D解释:在PHP中,str_split()函数用于将字符串转换为数组,每个字符作为一个元素。explode()函数用于使用一个字符串分割另一个字符串,split()函数已被废弃。str_to_array()不是PHP内置函数。5.答案:A解释:在PHP中,__toString()魔术方法用于在对象被当作字符串使用时调用,例如在echo语句中。__string()和__tostring()不是有效的PHP魔术方法名称,__String()也不是。6.答案:A解释:在PHP中,使用implements关键字来实现接口。extend不是PHP的关键字,可能是extend()函数的混淆,但该函数也不存在。7.答案:B解释:在PHP中,Session存储在服务器端,而Cookie存储在客户端。Session数据大小没有严格限制,可以跨页面使用。选项A错误,因为Session存储在服务器端;选项C错误,因为Session数据大小没有固定限制;选项D错误,因为Session可以跨页面使用。8.答案:D解释:在PHP中,$_SERVER['REQUEST_URI']用于获取当前请求的URI,包括查询字符串。$_SERVER['PHP_SELF']获取当前正在执行脚本的文件名。current_url()和self_url()不是PHP内置函数。9.答案:A解释:在PHP中,使用throw关键字来抛出异常。try和catch用于异常处理,但不是用来抛出异常的。throws也不是PHP的关键字。10.答案:D解释:在PHP7中,新增的标量类型包括int、float、string和bool。array不是标量类型,而是复合类型,因此不是新增的标量类型。二、填空题答案1.define解释:在PHP中,使用define()关键字可以定义一个常量。例如:define("PI",3.14159);定义了一个名为PI的常量,值为3.14159。常量一旦定义,就不能被修改或取消定义。2.strval()解释:在PHP中,strval()函数用于将变量转换为字符串。例如:$str=strval(123);将整数123转换为字符串"123"。这个函数可以处理几乎所有PHP数据类型。3.count()解释:在PHP中,count()函数用于获取数组的长度。例如:$count=count($array);返回数组$array的元素数量。对于其他类型,如countable对象,也可以使用count()函数。4.implode()解释:在PHP中,implode()函数用于将数组转换为字符串,每个元素用指定分隔符连接。例如:$str=implode(",",$array);将数组$array的元素用逗号连接成一个字符串。join()是implode()的别名。5.abstract解释:在PHP中,使用abstract关键字可以声明一个抽象类。抽象类不能被实例化,只能被继承。抽象类中可以包含抽象方法(没有方法体的方法)和具体方法。6.date()解释:在PHP中,date()函数用于获取当前日期和时间。例如:$date=date("Y-m-dH:i:s");返回当前日期和时间,格式为"年-月-日时:分:秒"。date()函数的第一个参数是格式字符串,第二个参数是可选的时间戳。7.===解释:在PHP中,===运算符用于检查一个变量是否为NULL,同时检查类型。例如:if($var===null){...}检查变量$var是否为NULL且类型为NULL。==运算符只检查值,不检查类型。8.exec()解释:在PHP中,exec()函数用于执行一个外部命令。例如:exec("ls-l",$output);执行"ls-l"命令,并将输出存储在数组$output中。exec()函数返回命令输出的最后一行。9.trait解释:在PHP中,使用trait关键字可以声明一个trait,用于实现代码复用。trait是一种类似类的结构,但只能包含方法,不能包含属性。trait可以被多个类使用,解决单继承的限制。10.microtime()解释:在PHP中,microtime()函数用于获取当前脚本的执行时间。例如:$time=microtime(true);返回当前时间的微秒数。microtime()函数可以接受一个布尔参数,如果为true,则返回浮点数形式的时间戳。三、判断题答案1.错误解释:在PHP中,变量名不区分大小写,但函数名区分大小写。例如,变量$var和$VAR是同一个变量,但函数function()和FUNCTION()是不同的函数。2.错误解释:在PHP中,"=="运算符只比较值是否相等,不比较类型;"==="运算符才比较值和类型是否相等。例如,"1"==1返回true,但"1"===1返回false。3.错误解释:在PHP中,require_once和include_once的区别在于,如果文件已经包含过,require_once会产生致命错误(E_COMPILE_ERROR),而include_once只会产生警告(E_WARNING)。两者的相同点是如果文件已经包含过,则不会再次包含。4.正确解释:在PHP中,final关键字可以用于修饰类,表示该类不能被继承;也可以用于修饰方法,表示该方法不能被重写。例如:finalclassMyClass{...}表示MyClass不能被继承。5.错误解释:在PHP中,count()函数不仅可以用于数组,也可以用于其他类型,如countable对象。对于非数组和非countable对象,count()函数返回1。6.正确解释:在PHP中,使用header()函数必须在任何输出之前调用,因为在发送HTTP头之前不能有任何输出。如果已经有输出,header()函数将失败并返回false。7.错误解释:在PHP中,session_start()函数必须在任何输出之前调用,否则会产生错误。如果有输出,session_start()函数将失败并返回false。8.正确解释:在PHP中,接口中的方法必须都是public的,不能是protected或private的。接口中的方法不能有实现,只能有方法声明。9.正确解释:在PHP中,static关键字只能用于修饰属性和方法,不能用于修饰类。static属性和方法属于类本身,而不是类的实例。10.正确解释:在PHP中,die()函数会终止脚本的执行,并输出一条消息。它相当于exit()函数。die()函数常用于错误处理和调试。四、简答题答案1.简述PHP中的include、require、include_once和require_once的区别:include和require的主要区别在于处理错误的方式不同。当包含的文件不存在时,include会产生一个警告(E_WARNING),而脚本会继续执行;require会产生一个致命错误(E_COMPILE_ERROR),而脚本会停止执行。include_once和require_once与include和require的功能相同,但它们会检查文件是否已经被包含过,如果已经包含过,则不会再次包含。这可以避免重复包含文件导致的函数或类重复声明错误。总结:-include:包含文件,如果文件不存在,产生警告,脚本继续执行-require:包含文件,如果文件不存在,产生致命错误,脚本停止执行-include_once:包含文件,如果文件已经包含过,则不再包含-require_once:包含文件,如果文件已经包含过,则不再包含,如果文件不存在,产生致命错误例如:```phpinclude'file.php';//如果file.php不存在,产生警告,脚本继续执行require'file.php';//如果file.php不存在,产生致命错误,脚本停止执行include_once'file.php';//如果file.php已经包含过,则不再包含require_once'file.php';//如果file.php已经包含过,则不再包含,如果文件不存在,产生致命错误```2.解释PHP中的魔术方法__construct、__destruct、__get和__set的作用:-__construct:构造函数,当创建对象时自动调用。用于初始化对象的属性。例如:```phpclassPerson{public$name;publicfunction__construct($name){$this->name=$name;}}```-__destruct:析构函数,当对象被销毁时自动调用。例如:```phpclassPerson{publicfunction__destruct(){//清理资源}}```-__get:当读取不可访问或未定义的属性时调用。例如:```phpclassPerson{private$data=array();publicfunction__get($key){return$this->data[$key];}}```-__set:当给不可访问或未定义的属性赋值时调用。例如:```phpclassPerson{private$data=array();publicfunction__set($key,$value){$this->data[$key]=$value;}}```这些魔术方法提供了在不修改类代码的情况下,动态地控制对象行为的能力。它们是PHP面向对象编程的重要组成部分,使得代码更加灵活和可扩展。3.简述PHP中面向对象编程的三大特性:封装、继承和多态:-封装:封装是将数据和方法捆绑在一起,形成一个独立的单元(类),并隐藏对象的内部实现细节,只暴露必要的接口。封装通过访问修饰符(public、protected、private)来实现。例如:```phpclassPerson{private$name;//私有属性,只能在类内部访问publicfunctionsetName($name){//公共方法,外部可以调用$this->name=$name;}publicfunctiongetName(){//公共方法,外部可以调用return$this->name;}}```-继承:继承允许一个类(子类)继承另一个类(父类)的属性和方法。子类可以扩展父类的功能,也可以重写父类的方法。例如:```phpclassAnimal{publicfunctioneat(){echo"Animaliseating";}}classDogextendsAnimal{publicfunctionbark(){echo"Dogisbarking";}}```-多态:多态是指不同的对象对同一消息做出不同的响应。在PHP中,多态通常通过接口和抽象类来实现。例如:```phpinterfaceShape{publicfunctionarea();}classCircleimplementsShape{private$radius;publicfunction__construct($radius){$this->radius=$radius;}publicfunctionarea(){returnpi()$this->radius$this->radius;}}classRectangleimplementsShape{private$width;private$height;publicfunction__construct($width,$height){$this->width=$width;$this->height=$height;}publicfunctionarea(){return$this->width$this->height;}}functioncalculateArea(Shape$shape){return$shape->area();}```这三大特性使得PHP的面向对象编程更加灵活、可维护和可扩展,是现代软件开发的重要基础。4.解释PHP中的命名空间及其作用:命名空间是PHP5.3引入的一个重要特性,用于解决代码中的命名冲突问题。命名空间可以将相关的类、函数、常量等组织在一起,形成一个独立的命名空间。命名空间的作用:-避免命名冲突:在不同的命名空间中,可以使用相同的类名、函数名和常量名,而不会产生冲突。-代码组织:通过命名空间,可以将相关的代码组织在一起,提高代码的可读性和可维护性。-便于代码重用:通过命名空间,可以更容易地重用第三方库的代码。例如:```php//声明一个命名空间namespaceMyProject;classMyClass{publicfunctionsayHello(){echo"HellofromMyProject\\MyClass";}}//使用命名空间$obj=newMyProject\MyClass();$obj->sayHello();```在PHP中,命名空间通过namespace关键字声明,通过反斜杠(\)分隔。命名空间可以嵌套,也可以使用use关键字引入其他命名空间中的类、函数或常量。5.简述PHP中的MVC设计模式及其在Web开发中的应用:MVC(Model-View-Controller)是一种软件设计模式,将应用程序分为三个主要部分:-Model(模型):负责处理数据和业务逻辑。模型与数据库交互,执行CRUD操作,并封装了数据相关的逻辑。-View(视图):负责显示数据。视图是用户界面,从模型获取数据并展示给用户。-Controller(控制器):负责处理用户输入,并协调模型和视图。控制器接收用户的请求,调用相应的模型处理数据,然后选择合适的视图展示结果。在PHPWeb开发中的应用:-使用MVC模式可以将代码分离,提高代码的可维护性和可扩展性。-模型可以独立于视图和控制器进行测试。-视图可以独立于业务逻辑进行修改。-控制器可以集中处理用户请求和响应。例如,在Laravel框架中:-模型:位于app/Models目录下,例如User.php-视图:位于resources/views目录下,例如user.blade.php-控制器:位于app/Http/Controllers目录下,例如UserController.php当用户访问/user/1时,流程如下:1.路由将请求映射到UserController的show方法2.UserController调用User模型的find方法获取ID为1的用户数据3.UserController将用户数据传递给user.blade.php视图4.视图渲染HTML并返回给用户MVC模式使得PHP应用程序更加模块化,便于团队协作和代码维护,是现代PHPWeb开发的主流架构模式。五、编程题答案1.编写一个PHP函数,实现字符串反转,但不能使用PHP内置的strrev()函数。```phpfunctionreverseString($str){$result='';$length=strlen($str);for($i=$length-1;$i>=0;$i--){$result.=$str[$i];}return$result;}//测试$str="Hello,World!";echoreverseString($str);//输出:"!dlroW,olleH"```解释:这个函数通过循环从字符串的最后一个字符开始,逐个将字符添加到结果字符串中,从而实现字符串反转。具体步骤如下:1.初始化一个空字符串$result用于存储反转后的结果2.使用strlen()函数获取字符串的长度3.使用for循环从字符串的最后一个字符开始(索引为$length-1),逐个向前遍历4.在循环中,将当前字符添加到$result字符串的末尾5.循环结束后,返回反转后的字符串这种方法的时间复杂度是O(n),其中n是字符串的长度。空间复杂度也是O(n),因为需要创建一个新的字符串来存储反转后的结果。2.编写一个PHP类,实现一个简单的单例模式。```phpclassSingleton{privatestatic$instance=null;private$data;//私有构造函数,防止外部直接实例化privatefunction__construct(){$this->data="Singletoninstancedata";}//获取单例实例的静态方法publicstaticfunctiongetInstance(){if(self::$instance===null){self::$instance=newself();}returnself::$instance;}//防止对象被克隆privatefunction__clone(){}//防止对象被序列化publicfunction__wakeup(){thrownewException("Cannotunserializesingleton");}//示例方法publicfunctiongetData(){return$this->data;}publicfunctionsetData($data){$this->data=$data;}}//测试$instance1=Singleton::getInstance();$instance2=Singleton::getInstance();echo$instance1===$instance2?"Sameinstance":"Differentinstances";//输出:Sameinstance```解释:单例模式确保一个类只有一个实例,并提供一个全局访问点。在这个实现中:-使用静态属性$instance来保存类的唯一实例-构造函数是私有的,防止外部直接实例化-提供一个静态方法getInstance()来获取单例实例,如果实例不存在,则创建一个新实例-私有__clone()方法防止对象被克隆-重写__wakeup()方法防止对象被序列化-提供示例方法getData()和setData()来操作实例数据单例模式常用于需要全局访问的资源,如数据库连接、配置管理器等。在这个例子中,无论调用多少次Singleton::getInstance(),返回的都是同一个实例,确保了类的唯一性。3.编写一个PHP脚本,实现一个简单的分页功能,给定总记录数和每页显示数量,计算总页数和当前页的数据。```phpclassPagination{private$totalRecords;private$recordsPerPage;private$currentPage;private$totalPages;private$offset;publicfunction__construct($totalRecords,$recordsPerPage,$currentPage=1){$this->totalRecords=$totalRecords;$this->recordsPerPage=$recordsPerPage;$this->currentPage=$currentPage;//计算总页数$this->totalPages=ceil($totalRecords/$recordsPerPage);//确保当前页在有效范围内$this->currentPage=max(1,min($this->currentPage,$this->totalPages));//计算偏移量$this->offset=($this->current1)$this->recordsPerPage;}publicfunctiongetOffset(){return$this->offset;}publicfunctiongetCurrentPage(){return$this->currentPage;}publicfunctiongetTotalPages(){return$this->totalPages;}publicfunctiongetRecordsPerPage(){return$this->recordsPerPage;}publicfunctiongetRecords($data){returnarray_slice($data,$this->offset,$this->recordsPerPage);}publicfunctiongetLinks($baseUrl){$links='';//上一页链接if($this->currentPage>1){$links.='<ahref="'.$baseUrl.'?page='.($this->current1).'">上一页</a>';}//页码链接for($i=1;$i<=$this->totalPages;$i++){if($i==$this->currentPage){$links.='<span>'.$i.'</span>';}else{$links.='<ahref="'.$baseUrl.'?page='.$i.'">'.$i.'</a>';}}//下一页链接if($this->currentPage<$this->totalPages){$links.='<ahref="'.$baseUrl.'?page='.($this->currentPage+1).'">下一页</a>';}return$links;}}//测试//模拟数据$data=range(1,100);//1到100的数组$totalRecords=count($data);$recordsPerPage=10;$currentPage=isset($_GET['page'])?(int)$_GET['page']:1;$pagination=newPagination($totalRecords,$recordsPerPage,$currentPage);$currentPageData=$pagination->getRecords($data);echo"当前页:".$pagination->getCurrentPage()."<br>";echo"总页数:".$pagination->getTotalPages()."<br>";echo"每页记录数:".$pagination->getRecordsPerPage()."<br>";echo"当前页数据:".implode(",",$currentPageData)."<br>";echo"分页链接:".$pagination->getLinks("pagination_test.php");```解释:这个分页类实现了以下功能:-计算总页数:使用ceil()函数向上取整,确保即使有余数也能计算完整页数-确保当前页在有效范围内:使用max()和min()函数确保当前页不小于1且不大于总页数-计算偏移量:用于数据库查询或数组切片,确定当前页的起始位置-获取当前页的数据:使用array_slice()函数从数据数组中提取当前页的数据-生成分页链接:包括上一页、页码和下一页链接,当前页的页码用span标签突出显示这个分页类可以用于任何需要分页的数据,包括数据库查询结果、数组数据等。使用时,只需创建一个Pagination实例,然后调用相应的方法获取分页信息。六、系统设计题答案1.数据库表设计:用户表(users):```sqlCREATETABLEusers(idINTAUTO_INCREMENTPRIMARYKEY,usernameVARCHAR(50)NOTNULLUNIQUE,emailVARCHAR(100)NOTNULLUNIQUE,password_hashVARCHAR(255)NOTNULL,created_atTIMESTAMPDEFAULTCURRENT_TIMESTAMP,updated_atTIMESTAMPDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMP,is_activeBOOLEANDEFAULTTRUE);```登录日志表(login_logs):```sqlCREATETABLElogin_logs(idINTAUTO_INCREMENTPRIMARYKEY,user_idINTNOTNULL,ip_addressVARCHAR(45)NOTNULL,user_agentTEXT,login_timeTIMESTAMPDEFAULTCURRENT_TIMESTAMP,login_statusENUM('success','failure')NOTNULL,FOREIGNKEY(user_id)REFERENCESusers(id));```密码重置表(password_resets):```sqlCREATETABLEpassword_resets(idINTAUTO_INCREMENTPRIMARYKEY,emailVARCHAR(100)NOTNULL,tokenVARCHAR(100)NOTNULL,created_atTIMESTAMPDEFAULTCURRENT_TIMESTAMP,expires_atTIMESTAMPNOTNULL,is_usedBOOLEANDEFAULTFALSE,UNIQUE(email,token));```2.登录流程:-用户访问登录页面-用户输入用户名和密码-后端验证:-检查用户名是否存在-检查密码是否正确(使用password_verify函数验证)-检查用户是否激活-登录成功:-创建会话(Session)-记录登录日志(登录成功)-跳转到用户主页-登录失败:-记录登录日志(登录失败)-显示错误信息-增加登录尝试次数限制(防止暴力破解)登录处理代码示例:```phpfunctionlogin($username,$password){//验证输入if(empty($username)||empty($password)){return['success'=>false,'message'=>'用户名和密码不能为空'];}//查询用户$stmt=$pdo->prepare("SELECTid,password_hash,is_activeFROMusersWHEREusername=?");$stmt->execute([$username]);$user=$stmt->fetch(PDO::FETCH_ASSOC);if(!$user){//记录失败的登录尝试logFailedLogin($username,$_SERVER['REMOTE_ADDR']);return['success'=>false,'message'=>'用户名或密码错误'];}//验证密码if(!password_verify($password,$user['password_hash'])){//记录失败的登录尝试logFailedLogin($username,$_SERVER['REMOTE_ADDR']);return['success'=>false,'message'=>'用户名或密码错误'];}//检查用户是否激活if(!$user['is_active']){return['success'=>false,'message'=>'账户已被禁用'];}//创建会话$_SESSION['user_id']=$user['id'];$_SESSION['username']=$username;//记录成功的登录logSuccessfulLogin($user['id'],$_SERVER['REMOTE_ADDR']);return['success'=>true,'message'=>'登录成功'];}```3.安全性考虑:-密码安全:-使用password_hash()函数进行密码哈希处理-不要存储明文密码-使用强密码策略(长度、复杂度)-会话安全:-使用HTTPS传输数据-设置适当的Session过期时间-使用HttpOnly和Secure标志的Cookie-防止暴力破解:-限制登录尝试次数-使用验证码-记录失败的登录尝试

温馨提示

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

评论

0/150

提交评论