2025年Java面試題庫及答案_第1頁
2025年Java面試題庫及答案_第2頁
2025年Java面試題庫及答案_第3頁
2025年Java面試題庫及答案_第4頁
2025年Java面試題庫及答案_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2025年Java面試題庫及答案Java基礎(chǔ)Q:Java中面向?qū)ο蟮乃拇筇匦允鞘裁矗空埛謩e舉例說明。A:封裝、繼承、多態(tài)、抽象。封裝通過訪問控制符(private、protected)隱藏內(nèi)部實(shí)現(xiàn),如類的屬性設(shè)為private并提供public的get/set方法;繼承通過extends實(shí)現(xiàn)代碼復(fù)用,如子類Student繼承父類Person;多態(tài)表現(xiàn)為父類引用指向子類對象(運(yùn)行時多態(tài)),如Listlist=newArrayList(),調(diào)用list.add()時實(shí)際執(zhí)行ArrayList的實(shí)現(xiàn);抽象通過abstract類或接口定義規(guī)范,如定義Shape抽象類包含抽象方法area(),由Circle、Rectangle等子類實(shí)現(xiàn)具體計算邏輯。Q:基本數(shù)據(jù)類型和包裝類的區(qū)別是什么?自動裝箱拆箱需要注意哪些問題?A:基本類型(如int、double)存儲值,包裝類(如Integer、Double)是對象,可用于泛型和null值。區(qū)別包括:基本類型在棧中直接存儲值(除long/double占8字節(jié)外其他占4字節(jié)),包裝類對象在堆中;基本類型無方法,包裝類提供parseXxx()等工具方法。自動裝箱(int→Integer)調(diào)用Integer.valueOf(),拆箱(Integer→int)調(diào)用intValue()。需注意:頻繁裝箱拆箱影響性能(如循環(huán)中);Integer緩存范圍-128~127(通過new創(chuàng)建的對象不共享),比較時用equals而非==;null值拆箱會拋出NullPointerException(如Integera=null;intb=a)。Q:String、StringBuilder、StringBuffer的區(qū)別及使用場景?A:String是不可變類(底層finalchar[]),每次修改會提供新對象,適合少量字符串操作;StringBuilder非線程安全(JDK1.5引入),內(nèi)部使用可變char[](初始容量16,擴(kuò)容為原容量2+2),適合單線程下大量拼接(如循環(huán)內(nèi));StringBuffer線程安全(方法用synchronized修飾),性能略低于StringBuilder,適合多線程下的字符串操作(如全局日志拼接)。示例:單線程拼接SQL用StringBuilder,多線程提供報表用StringBuffer。Q:Java異常分為哪幾類?finally塊是否一定執(zhí)行?try-with-resources的優(yōu)勢?A:異常繼承自Throwable,分為Error(JVM錯誤如OOM,不可恢復(fù))和Exception(可處理)。Exception又分檢查型異常(受檢,如IOException,必須顯式處理)和非檢查型異常(運(yùn)行時異常,如NullPointerException,可捕獲或拋出)。finally塊在以下情況不執(zhí)行:程序退出(System.exit())、線程死亡、finally塊前JVM崩潰。try-with-resources(JDK1.7+)用于自動關(guān)閉實(shí)現(xiàn)AutoCloseable接口的資源(如文件流、數(shù)據(jù)庫連接),資源聲明在try括號內(nèi),會自動調(diào)用close()(順序與聲明相反),避免手動關(guān)閉導(dǎo)致的資源泄漏,代碼更簡潔。Java高級特性Q:HashMap的底層結(jié)構(gòu)?JDK1.7與1.8的主要區(qū)別?擴(kuò)容時如何避免性能問題?A:JDK1.7使用數(shù)組+鏈表,數(shù)組是Entry<K,V>[],鏈表解決哈希沖突;JDK1.8優(yōu)化為數(shù)組+鏈表+紅黑樹(當(dāng)鏈表長度≥8且數(shù)組容量≥64時,鏈表轉(zhuǎn)紅黑樹;長度≤6時轉(zhuǎn)回鏈表)。主要區(qū)別:1.7頭插法(多線程擴(kuò)容可能形成循環(huán)鏈表),1.8尾插法;1.7用Entry節(jié)點(diǎn),1.8用Node(紅黑樹時用TreeNode);1.7擴(kuò)容時重新計算哈希,1.8通過(e.hash&oldCap)判斷是否移動(0則留在原位置,非0則移到原位置+oldCap)。擴(kuò)容時若數(shù)組容量是2的冪次,哈希計算可用位運(yùn)算(hash&(n-1))替代取模,提升效率;1.8的高低位拆分(如原容量16,擴(kuò)容到32時,元素要么在索引i,要么在i+16)減少重新哈希的計算量。Q:ConcurrentHashMap如何保證線程安全?JDK1.7與1.8的實(shí)現(xiàn)差異?A:1.7采用分段鎖(Segment數(shù)組,每個Segment繼承ReentrantLock,默認(rèn)16段,支持16個線程并發(fā)寫),每個Segment管理一個哈希表;1.8放棄分段鎖,改用synchronized+CAS:節(jié)點(diǎn)數(shù)組Node<K,V>[],插入時若節(jié)點(diǎn)為空(tabAt方法用CAS)則直接插入;若節(jié)點(diǎn)不為空(鏈表或紅黑樹頭節(jié)點(diǎn)),用synchronized鎖住頭節(jié)點(diǎn),避免鎖住整個數(shù)組。1.8鎖粒度更?。▋H鎖頭節(jié)點(diǎn)),并發(fā)度更高;紅黑樹結(jié)構(gòu)減少鏈表過長時的查找時間。Q:泛型的類型擦除是什么?通配符<?extendsT>和<?superT>的區(qū)別?A:類型擦除指編譯時泛型信息(如List<String>的String)被擦除為原始類型(List<Object>),僅保留邊界信息(如<TextendsNumber>擦除為Number)。因此運(yùn)行時無法通過反射獲取具體泛型類型(如list.getClass()返回List.class)。<?extendsT>(上界通配符)表示元素是T或其子類,支持讀(獲取T類型)但不支持寫(無法確定具體子類,除null外不能添加元素);<?superT>(下界通配符)表示元素是T或其父類,支持寫(可添加T或其子類)但讀時只能獲取Object類型。PECS原則(ProducerExtends,ConsumerSuper):生產(chǎn)數(shù)據(jù)(讀?。┯胑xtends,消費(fèi)數(shù)據(jù)(寫入)用super。Q:反射的應(yīng)用場景?動態(tài)代理(JDK與CGLIB)的區(qū)別?A:反射通過Class、Method、Field等類在運(yùn)行時獲取類信息、調(diào)用方法或修改屬性,常見于框架(Spring的依賴注入、MyBatis的參數(shù)映射)、工具類(JSON反序列化如Jackson)、插件機(jī)制(動態(tài)加載類)。動態(tài)代理用于實(shí)現(xiàn)AOP,JDK動態(tài)代理基于接口(通過Proxy.newProxyInstance()提供代理類,繼承Proxy并實(shí)現(xiàn)目標(biāo)接口),只能代理接口方法;CGLIB基于ASM字節(jié)碼增強(qiáng)(提供目標(biāo)類的子類,覆蓋非final方法),可代理普通類(需引入cglib-nodep.jar)。JDK代理性能在JDK8+優(yōu)化后(如緩存提供的代理類)接近CGLIB,CGLIB在無接口場景(如Spring的@Transactional注解)中更常用。并發(fā)編程Q:線程池的核心參數(shù)有哪些?如何合理配置線程數(shù)?拒絕策略有哪些?A:線程池通過ThreadPoolExecutor創(chuàng)建,核心參數(shù):corePoolSize(核心線程數(shù),即使空閑也保留)、maximumPoolSize(最大線程數(shù))、keepAliveTime(非核心線程空閑超時時間)、unit(時間單位)、workQueue(任務(wù)隊(duì)列,如ArrayBlockingQueue、LinkedBlockingQueue)、threadFactory(線程工廠,可自定義命名)、handler(拒絕策略)。線程數(shù)配置:CPU密集型(任務(wù)主要消耗CPU)設(shè)為CPU核心數(shù)+1(避免上下文切換);IO密集型(任務(wù)多等待IO)設(shè)為CPU核心數(shù)2或(線程等待時間/線程運(yùn)行時間+1)CPU核心數(shù)。拒絕策略:AbortPolicy(默認(rèn),拋RejectedExecutionException)、CallerRunsPolicy(調(diào)用者線程執(zhí)行)、DiscardPolicy(丟棄任務(wù))、DiscardOldestPolicy(丟棄隊(duì)列最舊任務(wù)后嘗試提交)。Q:synchronized和Lock的區(qū)別?ReentrantLock的可重入性如何實(shí)現(xiàn)?A:synchronized是JVM關(guān)鍵字,隱式鎖(自動釋放),支持對象鎖(鎖實(shí)例)和類鎖(鎖Class對象);Lock是接口(如ReentrantLock),顯式鎖(需手動unlock()),支持可中斷鎖(lockInterruptibly())、嘗試鎖(tryLock())、公平鎖(按等待隊(duì)列順序獲?。?。區(qū)別:synchronized不可判斷鎖狀態(tài),Lock可通過isLocked()查詢;synchronized非公平鎖(默認(rèn)),Lock可指定公平/非公平;synchronized在異常時自動釋放鎖,Lock需在finally中釋放。ReentrantLock的可重入性通過AQS(AbstractQueuedSynchronizer)的state變量實(shí)現(xiàn):線程獲取鎖時state+1(重入次數(shù)),釋放時state-1,state=0時完全釋放。Q:volatile的作用?happens-before原則有哪些?A:volatile保證變量的可見性(禁止編譯器優(yōu)化,寫操作后強(qiáng)制刷新主內(nèi)存,讀操作時從主內(nèi)存讀?。┖徒怪噶钪嘏牛ㄍㄟ^內(nèi)存屏障),但不保證原子性(如i++操作需synchronized或AtomicInteger)。happens-before原則(JVM定義的有序性規(guī)則):程序順序規(guī)則(單線程內(nèi)操作按順序)、管程鎖定規(guī)則(unlock先于lock)、volatile變量規(guī)則(寫先于讀)、線程啟動規(guī)則(start()先于線程操作)、線程終止規(guī)則(線程操作先于join()返回)、傳遞性規(guī)則(Ahappens-beforeB,Bhappens-beforeC→Ahappens-beforeC)。Q:線程間通信的方式?wait/notify和Condition的區(qū)別?A:方式包括:共享變量(volatile)、wait/notify(基于synchronized)、Condition(基于Lock)、BlockingQueue(如ArrayBlockingQueue)。wait/notify需在synchronized塊內(nèi)調(diào)用(否則拋IllegalMonitorStateException),喚醒隨機(jī)一個線程(notify())或所有(notifyAll());Condition通過Lock.newCondition()創(chuàng)建,支持多個等待隊(duì)列(如生產(chǎn)者-消費(fèi)者模型中用不同Condition區(qū)分生產(chǎn)和消費(fèi)等待),可精確喚醒指定線程(signal()/signalAll()),且可設(shè)置等待超時(await(time,unit))。JVMQ:JVM內(nèi)存區(qū)域如何劃分?各區(qū)域的作用及OOM場景?A:運(yùn)行時數(shù)據(jù)區(qū)包括:1.程序計數(shù)器:記錄當(dāng)前線程執(zhí)行的字節(jié)碼行號,唯一無OOM的區(qū)域;2.虛擬機(jī)棧:存儲棧幀(局部變量表、操作數(shù)棧、動態(tài)鏈接、方法出口),線程私有,棧深度超過限制拋StackOverflowError(如遞歸過深);3.本地方法棧:為本地方法(native)服務(wù),HotSpot與虛擬機(jī)棧合并;4.堆(最大區(qū)域):存儲對象實(shí)例和數(shù)組,GC的主要區(qū)域,對象過多無法分配時拋OOM(Javaheapspace);5.方法區(qū)(JDK1.8后為元空間,MetaSpace):存儲類元信息(類名、字段、方法)、常量池、靜態(tài)變量,元空間使用本地內(nèi)存(默認(rèn)無上限),類加載過多(如動態(tài)提供大量Class)時拋OOM(Metaspace)。Q:類加載的過程?雙親委派模型的作用?如何破壞?A:類加載過程:加載(通過類加載器將class文件讀入內(nèi)存,提供Class對象)→驗(yàn)證(檢查字節(jié)碼格式、語義)→準(zhǔn)備(為靜態(tài)變量分配內(nèi)存并賦初始值,如int賦0)→解析(將符號引用轉(zhuǎn)為直接引用)→初始化(執(zhí)行<clinit>()方法,靜態(tài)變量賦值和靜態(tài)代碼塊執(zhí)行)。雙親委派模型:類加載器(啟動類、擴(kuò)展類、應(yīng)用類)收到加載請求時,先委托父類加載器加載,父類無法加載時再自己加載。作用:避免重復(fù)加載(如java.lang.String只會被啟動類加載器加載一次),防止核心類被篡改(如自定義String類不會被加載)。破壞場景:SPI(如JDBC,應(yīng)用類加載器需委托線程上下文類加載器加載第三方驅(qū)動,打破父類優(yōu)先)、熱部署(如Tomcat的WebAppClassLoader為每個應(yīng)用單獨(dú)加載類)。Q:G1和ZGC收集器的特點(diǎn)?如何選擇?A:G1(Garbage-First,JDK1.7+)目標(biāo)是替換CMS,基于Region分區(qū)(堆劃分為多個大小相同的Region),混合收集(回收年輕代+部分老年代),通過RememberedSet記錄跨Region引用,停頓時間可控(通過-XX:MaxGCPauseMillis設(shè)置)。ZGC(JDK11+)基于染色指針(64位指針的高4位存儲對象狀態(tài):存活/標(biāo)記/重定位)和讀屏障,支持TB級堆(最大4TB,JDK15+支持16TB),停頓時間≤10ms(與堆大小無關(guān)),適合大內(nèi)存、低延遲場景(如大數(shù)據(jù)、實(shí)時交易系統(tǒng))。選擇:小內(nèi)存(≤4GB)用CMS或Parallel;大內(nèi)存且需低延遲用ZGC;需兼容舊版本用G1。Q:如何排查內(nèi)存泄漏?常用工具及步驟?A:內(nèi)存泄漏指對象不再使用但未被回收(被長生命周期對象引用)。排查步驟:1.監(jiān)控內(nèi)存使用(jstat-gcpid100010查看GC頻率和內(nèi)存增長);2.提供堆轉(zhuǎn)儲文件(jmap-dump:format=b,file=heap.binpid或使用Arthas的heapdump);3.分析堆文件(用EclipseMAT或JProfiler),查找大對象或長生命周期的引用鏈(如靜態(tài)集合未清理、監(jiān)聽器未移除);4.定位代碼(通過MAT的DominatorTree查看對象占用內(nèi)存,ThreadOOM分析線程棧)。示例:緩存對象未設(shè)置過期時間,導(dǎo)致堆內(nèi)存持續(xù)增長,GC后無明顯下降。Spring框架Q:SpringIOC的實(shí)現(xiàn)原理?Bean的生命周期?A:IOC(控制反轉(zhuǎn))通過容器管理對象的創(chuàng)建和依賴注入,底層通過反射或CGLIB實(shí)例化Bean,依賴注入(DI)支持構(gòu)造器注入、setter注入、字段注入。容器啟動流程:加載配置(XML/注解)→解析Bean定義(BeanDefinition)→注冊到BeanFactory→實(shí)例化Bean(通過getBean()觸發(fā))→填充屬性(依賴注入)→執(zhí)行Aware接口(如BeanFactoryAware獲取工廠)→執(zhí)行BeanPostProcessor的postProcessBeforeInitialization(初始化前)→執(zhí)行初始化方法(@PostConstruct或afterPropertiesSet())→執(zhí)行BeanPostProcessor的postProcessAfterInitialization(初始化后)→銷毀時執(zhí)行DisposableBean的destroy()或@PreDestroy。Q:Spring如何解決循環(huán)依賴?三級緩存的作用?A:循環(huán)依賴指A依賴B,B依賴A。Spring僅解決單例Bean的構(gòu)造器注入以外的循環(huán)依賴(如setter注入)。三級緩存:1.singletonObjects(一級):已初始化完成的單例Bean;2.earlySingletonObjects(二級):已實(shí)例化但未初始化的早期Bean(通過ObjectFactory獲?。?;3.singletonFactories(三級):Bean工廠,存儲ObjectFactory(用于提供早期Bean,解決AOP代理問題)。流程:創(chuàng)建A時,實(shí)例化A(未初始化)→將A的ObjectFactory(lambda表達(dá)式:()->getEarlyBeanReference(beanName,mbd,bean))存入三級緩存→注入B時觸發(fā)B的創(chuàng)建→B實(shí)例化后存入三級緩存→B注入A時,從A的三級緩存獲取ObjectFactory,提供早期A(可能是代理對象)存入二級緩存→B初始化完成存入一級緩存→A獲取B后初始化完成,從二級緩存獲取早期A(若未代理則為原對象),存入一級緩存。Q:SpringMVC的執(zhí)行流程?DispatcherServlet的作用?A:流程:1.客戶端請求→DispatcherServlet(前端控制器)接收;2.HandlerMapping(處理器映射)根據(jù)請求URL找到Handler(Controller方法)及Interceptor;3.HandlerAdapter(處理器適配器)調(diào)用Handler(如調(diào)用@GetMapping注解的方法);4.Handler處理后返回ModelAndView;5.ViewResolver(視圖解析器)根據(jù)View名稱解析為具體視圖(如JSP、Thymeleaf);6.視圖渲染數(shù)據(jù)后返回響應(yīng)。DispatcherServlet是核心,負(fù)責(zé)協(xié)調(diào)各組件(如HandlerMapping、HandlerAdapter、ViewResolver),統(tǒng)一處理請求入口和響應(yīng)出口。Q:MyBatis的一級緩存和二級緩存的區(qū)別?如何配置?A:一級緩存(SqlSession級):默認(rèn)開啟,基于PerpetualCache(HashMap),同一SqlSession內(nèi)執(zhí)行相同查詢(相同SQL、參數(shù)、環(huán)境)會直接從緩存返回,SqlSession關(guān)閉或執(zhí)行增刪改時清空。二級緩存(Mapper級):需手動開啟(<settingname="cacheEnabled"value="true"/>),基于Mappernamespace,多個SqlSession共享(需SqlSession提交后才會將一級緩存數(shù)據(jù)同步到二級緩存)。配置二級緩存:在Mapper接口加@CacheNamespace,或在XML中<cache/>,可指定eviction(淘汰策略,如LRU)、flushInterval(刷新間隔)等。注意:二級緩存存儲的是序列化后的對象(需實(shí)現(xiàn)Serializable),適用于查詢多、修改少的場景(如字典表)。分布式與微服務(wù)Q:服務(wù)注冊與發(fā)現(xiàn)的原理?Eureka與Nacos的區(qū)別?A:服務(wù)注冊(Provider啟動時向注冊中心登記自身IP、端口、服務(wù)名)、發(fā)現(xiàn)(Consumer從注冊中心獲取可用Provider列表)、心跳(Provider定期發(fā)送心跳,超時則被剔除)。Eureka(Netflix)是AP模型(可用優(yōu)先),無主節(jié)點(diǎn)(Peer-to-Peer),自我保護(hù)機(jī)制(網(wǎng)絡(luò)分區(qū)時不剔除健康實(shí)例);Nacos(阿里)支持AP和CP模式(通過nacos.core.switch.standalone配置),提供更豐富的功能(動態(tài)配置、元數(shù)據(jù)管理、流量管理),支持GRPC協(xié)議,適合云原生場景。Q:分布式事務(wù)的解決方案?TCC與本地消息表的適用場景?A:常見方案:1.2PC(兩階段提交,XA協(xié)議):協(xié)調(diào)者發(fā)送準(zhǔn)備(Prepare)→參與者響應(yīng)→協(xié)調(diào)者發(fā)送提交(Commit)或回滾(Rollback),強(qiáng)一致性但性能差(鎖資源時間長);2.3PC(三階段提交):增加CanCommit階段(預(yù)詢問),減少阻塞但仍未完全解決腦裂問題;3.TCC(Try-Confirm-Cancel):業(yè)務(wù)層定義三個方法,Try(預(yù)留資源)→Confirm(提交資源)→Cancel(釋放資源),最終一致性,適合短事務(wù)(如電商下單預(yù)留庫存);4.本地消息表(異步確保):業(yè)務(wù)操作與消息寫入同一本地事務(wù),消息服務(wù)輪詢消息表并發(fā)送,消費(fèi)者確認(rèn)后刪除,適合高并發(fā)場景(如訂單支付后發(fā)送短信)。TCC適合資源需預(yù)留且事務(wù)鏈短的場景(如金融轉(zhuǎn)賬);本地消息表適合異步通知、最終一致性要求的場景(如物流狀態(tài)更新)。Q:如何解決緩存擊穿、穿透、雪崩?A:緩存擊穿:熱點(diǎn)key過期時大量請求打向數(shù)據(jù)庫。解決:設(shè)置熱點(diǎn)key永不過期(邏輯過期),或使用互斥鎖(如Redis的setNX),僅一個線程回源加載,其他線程等待。緩存穿透:查詢不存在的key(如id=-1),導(dǎo)致每次請求都查數(shù)據(jù)庫。解決:緩存空值(設(shè)置短過期時間),或布隆過濾器(預(yù)處理所有可能的key,請求前檢查是否存在)。緩存雪崩:大量key同時過期或緩存服務(wù)宕機(jī),請求涌入數(shù)據(jù)庫。解決:分散key的過期時間(加隨機(jī)值),使用多級緩存(本地緩存+Redis),緩存服務(wù)做高可用(主從+哨兵)。設(shè)計模式Q:單例模式的幾種實(shí)現(xiàn)方式?線程安全的寫法?A:餓漢式(類加載時初始化,線程安全):```javapublicclassSingleton{privatestaticfinalSingletonINSTANCE=newSingleton();privateSingleton(){}publicstaticSingletongetInstance(){returnINSTANCE;}}```懶漢式(延遲初始化,需處理線程安全):```java//線程不安全(多線程可能創(chuàng)建多個實(shí)例)publicstaticSingletongetInstance(){if(INSTANCE==null){INSTANCE=newSingleton();}returnINSTANCE;}//線程安全(synchronized,性能差)publicstaticsynchronizedSingletongetInstance(){...}//雙重檢查鎖定(推薦,JDK1.5+,volatile防止指令重排)publicclassSingleton{privatestaticvolatileSingletonINSTANCE;privateSingleton(){}publicstaticSingletongetInstance(){if(INSTANCE==null){synchronized(Singleton.class){if(INSTANCE==null){INSTANCE=newSingleton();}}}returnINSTANCE;}}//枚舉(天然線程安全,防反射/反序列化攻擊)publicenumSingleton{INSTANCE;}```Q:工廠模式的分類?應(yīng)用場景?A:簡單工廠(靜態(tài)工廠):通過工廠類的靜態(tài)方法根據(jù)參數(shù)創(chuàng)建不同對象(如ShapeFactory.createShape("circle")),但新增類型需修改工廠類,違反開閉原則。工廠方法:定義工廠接口(Factory),由具體工廠(CircleFactory、RectangleFactory)實(shí)現(xiàn)創(chuàng)建方法,符合開閉原則(新增類型只需添加新工廠),適用于對象創(chuàng)建邏輯復(fù)雜或需擴(kuò)展的場景(如日志框架的不同日志處理器)。抽象工廠:創(chuàng)建產(chǎn)品族(相關(guān)或依賴的對象組),如家電工廠(創(chuàng)建冰箱、電視),具體工廠(HaierFactory、MideaFactory)實(shí)現(xiàn)不同品牌的產(chǎn)品族,適用于系統(tǒng)需支持多套產(chǎn)品族的場景(如跨數(shù)據(jù)庫的DAO層,MySQLFactory和OracleFactory創(chuàng)建不同的Connection、Statement)。數(shù)據(jù)庫Q:MySQL索引的類型?如何優(yōu)化索引?

溫馨提示

  • 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

提交評論