高頻phpjs面試題及答案_第1頁
高頻phpjs面試題及答案_第2頁
高頻phpjs面試題及答案_第3頁
高頻phpjs面試題及答案_第4頁
高頻phpjs面試題及答案_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

高頻phpjs面試題及答案Q:PHP中如何實現(xiàn)對象的深拷貝?A:PHP默認(rèn)的對象賦值是淺拷貝(引用傳遞),若要實現(xiàn)深拷貝需使用`clone`關(guān)鍵字并配合`__clone()`魔術(shù)方法。當(dāng)對象包含其他對象屬性時,僅用`clone`會導(dǎo)致內(nèi)部對象仍為引用,此時需在`__clone()`方法內(nèi)手動對內(nèi)部對象調(diào)用`clone`。例如:```phpclassSubObj{public$val=1;}classMainObj{public$sub;publicfunction__construct(){$this->sub=newSubObj();}publicfunction__clone(){$this->sub=clone$this->sub;//手動深拷貝內(nèi)部對象}}$obj1=newMainObj();$obj2=clone$obj1;$obj2->sub->val=2;//修改$obj2的sub屬性不會影響$obj1的sub```需注意,若對象屬性包含資源類型(如文件句柄),需在`__clone()`中重新初始化資源,避免資源共享導(dǎo)致的問題。Q:JavaScript中`let`、`const`和`var`的區(qū)別是什么?A:三者均用于聲明變量,但作用域和特性差異顯著:1.作用域:`var`是函數(shù)作用域(或全局),`let`和`const`是塊級作用域(`{}`內(nèi)有效)。例如循環(huán)中用`var`聲明的變量會泄漏到循環(huán)外,而`let`不會。2.變量提升:`var`存在變量提升(聲明提前,賦值不提前),`let`和`const`存在“暫時性死區(qū)”(TDZ),在聲明前訪問會報錯。3.重新賦值:`var`和`let`可重新賦值,`const`聲明時必須初始化且不可重新賦值(但對象/數(shù)組的屬性可修改)。示例:```javascript//var的函數(shù)作用域functiontestVar(){if(true){vara=1;}console.log(a);//1(泄漏到函數(shù)作用域)}//let的塊級作用域functiontestLet(){if(true){letb=2;}console.log(b);//ReferenceError:bisnotdefined}//const不可重新賦值constc=3;c=4;//TypeError:Assignmenttoconstantvariable```Q:PHP中如何防止SQL注入?A:SQL注入的核心是用戶輸入未經(jīng)過濾直接拼接至SQL語句。防范方法包括:1.預(yù)處理語句(PreparedStatements):使用PDO或mysqli的預(yù)處理功能,通過占位符綁定參數(shù)。PDO示例:```php$pdo=newPDO("mysql:host=localhost;dbname=test","user","pass");$stmt=$pdo->prepare("SELECTFROMusersWHEREusername=:username");$stmt->execute(['username'=>$_POST['username']]);//參數(shù)自動轉(zhuǎn)義```2.轉(zhuǎn)義函數(shù):若無法使用預(yù)處理,可用`mysqli_real_escape_string()`(mysqli擴(kuò)展)或`PDO::quote()`(PDO)轉(zhuǎn)義用戶輸入,但需注意數(shù)據(jù)庫連接字符集需正確設(shè)置(如`utf8mb4`)。3.避免動態(tài)拼接SQL:禁止直接將用戶輸入拼接至SQL語句,尤其是`WHERE`、`ORDERBY`等敏感位置。4.使用ORM框架:如Laravel的Eloquent,自動處理參數(shù)綁定,降低注入風(fēng)險。Q:JavaScript中`call`、`apply`和`bind`的區(qū)別及應(yīng)用場景?A:三者均用于改變函數(shù)的`this`指向,但調(diào)用方式和返回值不同:call:立即執(zhí)行函數(shù),參數(shù)以逗號分隔傳遞。apply:立即執(zhí)行函數(shù),參數(shù)以數(shù)組形式傳遞。bind:返回一個新函數(shù),原函數(shù)的`this`被綁定,參數(shù)可部分預(yù)傳遞(柯里化)。示例:```javascriptconstobj={name:'Alice'};functiongreet(age){console.log(`Hello,${},age${age}`);}//call傳遞單個參數(shù)greet.call(obj,25);//Hello,Alice,age25//apply傳遞數(shù)組參數(shù)greet.apply(obj,[25]);//同上//bind返回綁定后的函數(shù),延遲執(zhí)行constboundGreet=greet.bind(obj,25);boundGreet();//Hello,Alice,age25```應(yīng)用場景:`call`/`apply`用于需要立即執(zhí)行且動態(tài)改變`this`的場景(如繼承中調(diào)用父類構(gòu)造函數(shù));`bind`用于創(chuàng)建固定`this`的函數(shù)(如事件處理函數(shù)需要綁定組件實例)。Q:PHP中Session和Cookie的區(qū)別及如何配合使用?A:核心區(qū)別:1.存儲位置:Session數(shù)據(jù)存儲在服務(wù)器端(默認(rèn)文件/數(shù)據(jù)庫/Redis),Cookie存儲在客戶端(瀏覽器)。2.安全性:Session更安全(數(shù)據(jù)不在客戶端暴露),Cookie易被篡改(需配合`HttpOnly`、`Secure`等屬性增強(qiáng)安全)。3.存儲容量:Session無固定限制(取決于服務(wù)器配置),Cookie通常限制4KB左右。4.生命周期:Session默認(rèn)隨瀏覽器關(guān)閉失效(可通過`session_set_cookie_params()`設(shè)置持久化),Cookie可設(shè)置過期時間長期存儲。配合使用場景:Session通過Cookie傳遞`PHPSESSID`(會話ID),若客戶端禁用Cookie,需通過URL重寫(如`session_use_trans_sid()`)傳遞`PHPSESSID`。示例:```phpsession_start();//自動發(fā)送PHPSESSID到客戶端Cookie$_SESSION['user_id']=123;//服務(wù)器端存儲用戶ID//客戶端Cookie中查看PHPSESSID=abc123...```Q:JavaScript中如何實現(xiàn)數(shù)組去重?至少寫出3種方法。A:常見方法:1.Set數(shù)據(jù)結(jié)構(gòu)(ES6):利用`Set`成員唯一性,轉(zhuǎn)換為數(shù)組。```javascriptconstarr=[1,2,2,3,3,3];constuniqueArr=[...newSet(arr)];//[1,2,3]```2.filter+indexOf:過濾掉非首次出現(xiàn)的元素。```javascriptconstuniqueArr=arr.filter((item,index)=>arr.indexOf(item)===index);```3.對象屬性唯一性:遍歷數(shù)組,用對象鍵存儲已出現(xiàn)元素。```javascriptconstobj={};constuniqueArr=[];for(constitemofarr){if(!obj.hasOwnProperty(item)){obj[item]=true;uniqueArr.push(item);}}```4.reduce+includes(適合小規(guī)模數(shù)組):```javascriptconstuniqueArr=arr.reduce((acc,cur)=>{!acc.includes(cur)&&acc.push(cur);returnacc;},[]);```Q:PHP中`require`、`include`、`require_once`、`include_once`的區(qū)別?A:加載文件的核心差異:requirevsinclude:`require`在文件不存在時拋出致命錯誤(`E_COMPILE_ERROR`),程序終止;`include`拋出警告(`E_WARNING`),程序繼續(xù)執(zhí)行。once后綴:`require_once`和`include_once`會先檢查文件是否已加載,避免重復(fù)包含(通過文件路徑的哈希值判斷),適合加載配置文件或類庫時防止重復(fù)定義。使用建議:加載必須存在的文件(如框架核心類)用`require`;可選文件(如插件)用`include`;需避免重復(fù)加載時用`_once`系列(注意性能:每次檢查哈??赡苡绊懶?,可手動控制加載邏輯替代)。Q:JavaScript中事件冒泡和事件捕獲的區(qū)別?如何阻止?A:事件流分為三個階段:捕獲階段(從window到目標(biāo)元素)、目標(biāo)階段(目標(biāo)元素自身)、冒泡階段(從目標(biāo)元素到window)。默認(rèn)事件處理函數(shù)在冒泡階段觸發(fā)。事件冒泡:事件從目標(biāo)元素向上傳播至父元素,直至window。例如點擊子div,其父div的點擊事件會被觸發(fā)。事件捕獲:事件從window向下傳播至目標(biāo)元素,需在`addEventListener`的第三個參數(shù)設(shè)為`true`(或`{capture:true}`)觸發(fā)。阻止方法:阻止冒泡:`event.stopPropagation()`(不影響其他同階段監(jiān)聽器)或`event.cancelBubble=true`(IE舊語法)。阻止捕獲:同上,因捕獲和冒泡是同一事件流的不同階段,`stopPropagation`會同時阻止后續(xù)階段。阻止默認(rèn)行為:`event.preventDefault()`(如阻止a標(biāo)簽跳轉(zhuǎn))或`returnfalse`(僅在DOM0級事件中有效)。示例:```javascript//冒泡階段監(jiān)聽(默認(rèn))parentDiv.addEventListener('click',()=>console.log('父元素冒泡'),false);//捕獲階段監(jiān)聽childDiv.addEventListener('click',(e)=>{e.stopPropagation();//阻止后續(xù)冒泡/捕獲console.log('子元素捕獲');},true);```Q:PHP中如何實現(xiàn)MVC模式?各部分的職責(zé)是什么?A:MVC(模型-視圖-控制器)是一種架構(gòu)模式,PHP中通過分離代碼職責(zé)實現(xiàn):模型(Model):處理數(shù)據(jù)邏輯,負(fù)責(zé)數(shù)據(jù)庫操作、業(yè)務(wù)規(guī)則(如驗證、計算)。例如用戶模型處理用戶數(shù)據(jù)的增刪改查。視圖(View):負(fù)責(zé)數(shù)據(jù)展示,提供HTML/JSON等輸出。通常是模板文件(如`.php`、`.twig`),僅包含展示邏輯(無業(yè)務(wù)邏輯)??刂破鳎–ontroller):接收用戶請求(如URL參數(shù)),調(diào)用模型獲取數(shù)據(jù),傳遞給視圖渲染。是模型和視圖的協(xié)調(diào)者。示例流程:用戶訪問`/user/profile`→路由指向`UserController`的`profileAction`→控制器調(diào)用`UserModel`獲取用戶數(shù)據(jù)→控制器將數(shù)據(jù)傳遞給`profile.php`視圖→視圖渲染后輸出。注意:現(xiàn)代框架(如Laravel、Symfony)已內(nèi)置MVC支持,開發(fā)者只需按規(guī)范編寫模型、控制器和視圖即可,無需手動實現(xiàn)路由分發(fā)等基礎(chǔ)邏輯。Q:JavaScript中`Promise`的狀態(tài)有哪些?如何處理異常?A:`Promise`有三種狀態(tài),一旦變化不可逆:pending(初始狀態(tài)):未完成也未拒絕。fulfilled(已成功):操作完成,有返回值。rejected(已失?。翰僮魇?,有錯誤原因。異常處理方式:1.catch方法:在`Promise`鏈末尾調(diào)用`catch`捕獲前面所有未處理的錯誤。```javascriptfetchData().then(res=>process(res)).catch(err=>console.error('錯誤:',err));```2.reject回調(diào):在`then`的第二個參數(shù)中處理錯誤(不推薦,因無法捕獲后續(xù)鏈中的錯誤)。```javascriptfetchData().then(res=>process(res),err=>console.error('錯誤:',err));```3.async/await配合try-catch(ES2017+):更接近同步代碼的錯誤處理。```javascriptasyncfunctiongetData(){try{constres=awaitfetchData();returnprocess(res);}catch(err){console.error('錯誤:',err);}}```需注意,`Promise`內(nèi)部的錯誤若未被捕獲,會導(dǎo)致未處理的拒絕(UnhandledRejection),可能引發(fā)程序崩潰(Node.js中)或瀏覽器控制臺警告。Q:PHP中`$_GET`、`$_POST`、`$_REQUEST`的區(qū)別?A:三者均為超全局?jǐn)?shù)組,存儲用戶輸入數(shù)據(jù):$_GET:獲取URL查詢參數(shù)(`?key=val`),數(shù)據(jù)顯示在URL中,長度受瀏覽器限制(通常2KB),適合傳遞非敏感信息。$_POST:獲取HTTPPOST請求體數(shù)據(jù),數(shù)據(jù)不顯示在URL中,長度受服務(wù)器`post_max_size`限制(默認(rèn)8M),適合提交表單或大文件。$_REQUEST:包含`$_GET`、`$_POST`和`$_COOKIE`的數(shù)據(jù)(默認(rèn)順序:COOKIE→GET→POST,后覆蓋前)。其作用域更廣,但因包含Cookie可能引入安全風(fēng)險(如CSRF),不推薦直接使用。示例:```php//URL:/test.php?name=Aliceecho$_GET['name'];//Alice//POST數(shù)據(jù):age=25(Content-Type:application/x-www-form-urlencoded)echo$_POST['age'];//25//$_REQUEST包含name和age(假設(shè)無同名Cookie)echo$_REQUEST['name'];//Aliceecho$_REQUEST['age'];//25```Q:JavaScript中如何實現(xiàn)繼承?至少寫出2種方式。A:ES6前通過原型鏈實現(xiàn),ES6引入`class`和`extends`語法糖,常見方法:1.原型鏈繼承:子構(gòu)造函數(shù)的原型指向父構(gòu)造函數(shù)的實例。```javascriptfunctionParent(){='Parent';}Ptotype.sayHi=function(){console.log('Hi,'+);};functionChild(){}Ctotype=newParent();//子原型指向父實例Ctotype.constructor=Child;//修正constructorconstchild=newChild();child.sayHi();//Hi,Parent(問題:父實例屬性會被所有子實例共享)```2.構(gòu)造函數(shù)繼承(借用構(gòu)造函數(shù)):在子構(gòu)造函數(shù)中調(diào)用父構(gòu)造函數(shù),使用`call`/`apply`綁定`this`。```javascriptfunctionParent(name){=name;}functionChild(name){Parent.call(this,name);//繼承父的實例屬性this.age=25;}constchild=newChild('Child');console.log();//Child(解決了原型鏈繼承的屬性共享問題,但無法繼承父原型方法)```3.組合繼承(原型鏈+構(gòu)造函數(shù)):結(jié)合兩者,父實例屬性通過`call`繼承,父原型方法通過原型鏈繼承。```javascriptfunctionParent(name){=name;}Ptotype.sayHi=function(){/.../};functionChild(name){Parent.call(this,name);//繼承實例屬性}Ctotype=newParent();//繼承原型方法Ctotype.constructor=Child;```4.ES6類繼承(推薦):使用`class`和`extends`,底層仍基于原型鏈。```javascriptclassParent{constructor(name){=name;}sayHi(){console.log('Hi,'+);}}classChildextendsParent{constructor(name,age){super(name);//調(diào)用父構(gòu)造函數(shù)this.age=age;}}```Q:PHP中如何優(yōu)化數(shù)據(jù)庫查詢性能?A:優(yōu)化方向包括SQL語句、索引、服務(wù)器配置和代碼邏輯:1.優(yōu)化SQL語句:避免`SELECT`(只取需要字段),減少`JOIN`表數(shù)量,避免子查詢(用`JOIN`替代),合理使用`EXPLAIN`分析執(zhí)行計劃(查看是否全表掃描、索引是否生效)。2.索引優(yōu)化:為`WHERE`、`JOIN`、`ORDERBY`、`GROUPBY`涉及的字段添加索引(避免在低基數(shù)列如性別字段建索引),復(fù)合索引遵循“最左前綴”原則,定期重建/分析索引(`ANALYZETABLE`)。3.減少數(shù)據(jù)庫交互:批量插入(`INSERTINTO...VALUES(...),(...)`),使用`LIMIT`分頁(避免`SELECTCOUNT()`全表統(tǒng)計,可用近似值或緩存),開啟查詢緩存(MySQL8.0已移除,可用Redis緩存熱點數(shù)據(jù))。4.分庫分表:數(shù)據(jù)量過大時,按業(yè)務(wù)(如用戶庫、訂單庫)分庫,按時間或ID哈希分表(如`user_001`、`user_002`)。5.使用連接池:PHP-FPM配合持久化連接(`pdo_mysql.persistence`)減少連接開銷(需注意長連接可能導(dǎo)致的線程安全問題)。示例:慢查詢優(yōu)化前:```sqlSELECTFROMordersWHEREuser_id=123ORDERBYcreate_timeDESC;```若`user_id`無索引,會全表掃描。優(yōu)化:為`(user_id,create_time)`添加復(fù)合索引,SQL改為:```sqlSELECTid,amountFROMordersWHEREuser_id=123ORDERBYcreate_timeDESCLIMIT10;```Q:JavaScript中`typeof`和`instanceof`的區(qū)別?A:`typeof`返回變量的原始類型(字符串形式),`instanceof`判斷對象是否是某個構(gòu)造函數(shù)的實例(基于原型鏈)。typeof:對基本類型:`number`、`string`、`boolean`、`undefined`、`symbol`、`bigint`。對對象:`object`(函數(shù)返回`function`)。示例:`typeofnull`返回`object`(歷史遺留問題),`typeof[]`返回`object`。instanceof:檢查對象的`[[Prototype]]`鏈?zhǔn)欠癜瑯?gòu)造函數(shù)的`prototype`屬性。示例:`[]instanceofArray`為`true`,`[]instanceofObject`也為`true`(因數(shù)組原型鏈指向`Ototype`)。注意:`typeof`無法區(qū)分對象類型(如數(shù)組、日期),`instanceof`無法判斷基本類型(需先包裝為對象,如`newString('a')instanceofString`)。Q:PHP中`session_start()`為什么通常放在文件頂部?A:原因有三:1.Cookie發(fā)送限制:`session_start()`會發(fā)送`Set-Cookie`頭(傳遞`PHPSESSID`),而HTTP頭必須在任何輸出(包括空格、HTML標(biāo)簽)之前發(fā)送。若文件頂部有輸出,會導(dǎo)致`Headersalreadysent`錯誤。2.會話數(shù)據(jù)讀?。篳session_start()`會讀取當(dāng)前會話數(shù)據(jù)(從文件/Redis等存儲),若在業(yè)務(wù)邏輯中間調(diào)用,可能導(dǎo)致之前的代碼無法訪問會話變量。3.性能優(yōu)化:盡早啟動會話可避免重復(fù)啟動(如包含其他文件時),減少不必要的開銷。若必須在輸出后啟動會話,可通過`ob_start()`開啟輸出緩沖(緩存輸出,待頭信息發(fā)送后再輸出內(nèi)容),但需注意緩沖可能增加內(nèi)存消耗。Q:JavaScript中如何實現(xiàn)函數(shù)防抖(debounce)和節(jié)流(throttle)?A:兩者均用于限制函數(shù)執(zhí)行頻率,適用于滾動、輸入框搜索等場景:防抖(debounce):在事件連續(xù)觸發(fā)時,僅最后一次觸發(fā)后延遲執(zhí)行。例如搜索框輸入,用戶停止輸入300ms后再請求接口。實現(xiàn):```javascriptfunctiondebounce(fn,delay=300){lettimer=null;returnfunction(...args){clearTimeout(timer);//每次觸發(fā)時重置定時器timer=setTimeout(()=>fn.apply(this,args),delay);};}//使用:input.addEventListener('input',debounce(search,300));```節(jié)流(throttle):在固定時間間隔內(nèi)只執(zhí)行一次。例如滾動事件,每200ms執(zhí)行一次處理函數(shù)。實現(xiàn)(時間戳版):```javascriptfunctionthrottle(fn,interval=200){letlastTime=0;returnfunction(...args){constnow=Date.now();if(nowlastTime>=interval){fn.apply(this,args);lastTime=now;}};}//或定時器版(延遲執(zhí)行最后一次)```區(qū)別:防抖關(guān)注“停止觸發(fā)后執(zhí)行”,節(jié)流關(guān)注“固定頻率執(zhí)行”。Q:PHP中`final`、`abstract`、`static`關(guān)鍵字的作用?A:final:修飾類時,類不可被繼承;修飾方法時,方法不可被子類重寫。用于限制擴(kuò)展(如核心工具類)。```phpfinalclassMyClass{/不可被繼承/}classParentClass{finalpublicfunctiontest(){/不可被重寫/}}```abstract:修飾類時為抽象類(不可實例化,需子類實現(xiàn)抽象方法);修飾方法時為抽象方法(無方法體,子類必須實現(xiàn))。用于定義接口規(guī)范。```phpabstractclassAnimal{abstractpublicfunctionsound();//抽象方法}classDogextendsAnimal{publicfunctionsound(){echo'汪汪';}//必須實現(xiàn)}```static:修飾屬性/方法時,屬于類本身(而非實例),可通過`類名::`直接訪問。靜態(tài)屬性在類加載時初始化,所有實例共享同一值。```phpclassCounter{publicstatic$count=0;publicstaticfunctionincrement(){self::$count++;}}Counter::increment();echoCounter::$count;//1```Q:JavaScript中`async/await`的原理是什么?如何處理多個異步操作?A:`async/await`是基于`Promise`的語法糖,通過`async`聲明函數(shù)返回`Promise`,`await`暫停執(zhí)行并等待`Promise`解決(或拋出錯誤)。其原理是利用提供器(Generator)和自動執(zhí)行器,將異步代碼轉(zhuǎn)換為類似同步的線性結(jié)構(gòu)。處理多個異步操作:1.順序執(zhí)行:`await`逐個調(diào)用,前一個完成后執(zhí)行下一個。```javascriptasyncfunctionfetchData(){constres1=awaitfetch('/api1');constres2=awaitfetch('/api2');//等待res1完成return[res1,res2];}```2.并行執(zhí)行:用`Promise.all`同時啟動,等待所有完成(適合無依賴的異步操作)。```javascriptasyncfunctionfetchData(){const[res1,res2]=awaitPromise.all([fetch('/api1'),fetch('/api2')]);return[res1,res2];}```3.競態(tài)執(zhí)行:用`Promise.race`取最先完成的結(jié)果(如超時處理)。```javascriptasyncfunctionfetchWithTimeout(){consttimeout=newPromise((_,reject)=>setTimeout(()=>reject('超時'),5000));constres=awaitPromise.race([fetch('/api'),timeout]);returnres;}```注意:`await`后若不是`Promise`會隱式轉(zhuǎn)換為`Promise.resolve()`,錯誤需用`try-catch`捕獲。Q:PHP中如何處理大文件上傳?需要注意哪些配置?A:大文件上傳需調(diào)整PHP和Web服務(wù)器配置,并優(yōu)化代碼邏輯:1.PHP配置:`upload_max_filesize`:單個文件最大大?。J(rèn)2M)。`post_max_size`:POST請求總數(shù)據(jù)大?。ㄐ璐笥赻upload_max_filesize`,默認(rèn)8M)。`max_execution_time`:腳本最大執(zhí)行時間(默認(rèn)30秒,上傳大文件需延長)。`memory_limit`:腳本內(nèi)存限制(上傳時可能需要更多內(nèi)存處理文件,如`128M`)。2.Nginx/Apache配置:Nginx:`client_max_body_size`設(shè)置請求體大?。J(rèn)1M)。Apache:`LimitRequestBody`設(shè)置請求體大?。ㄐ鑶⒂胉mod_request`模塊)。3.分塊上傳:將文件切分為小片段(如1MB/片),依次上傳后合并。前端用`FormData`或`Blob.slice`分片,后端用`file_put_contents($path,$chunk,FILE_APPEND)`追加寫入。4.進(jìn)度跟蹤:前端用`XMLHttpRequest.upload.onprogress`事件獲取上傳進(jìn)度;后端用`$_SESSION`記錄已上傳分片(需注意并發(fā)問題,可用Redis替代Session)。5.臨時文件清理:上傳失敗時刪除臨時分片,避免磁盤空間浪費(fèi)。示例分塊上傳后端邏輯(PHP):```php$chunk=$_FILES['chunk']['tmp_name'];$filename=$_POST['filename'];$chunkInde

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論