版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2025年高頻java高級(jí)面試題及答案1.類加載機(jī)制中雙親委派模型的具體流程是什么?哪些場(chǎng)景會(huì)破壞該模型?如何解決破壞后的一致性問題?雙親委派模型的核心流程是:當(dāng)一個(gè)類加載器收到類加載請(qǐng)求時(shí),首先將請(qǐng)求委派給父類加載器處理,只有父類加載器無法加載該類(在其搜索路徑中未找到)時(shí),當(dāng)前類加載器才會(huì)嘗試自己加載。具體層級(jí)為:啟動(dòng)類加載器(BootstrapClassLoader)→擴(kuò)展類加載器(ExtensionClassLoader)→應(yīng)用程序類加載器(ApplicationClassLoader)→自定義類加載器。例如加載java.lang.Object時(shí),無論哪個(gè)類加載器請(qǐng)求,最終都會(huì)被委派到啟動(dòng)類加載器,確保核心類的唯一性。破壞雙親委派的典型場(chǎng)景包括:JNDI服務(wù):需要調(diào)用SPI實(shí)現(xiàn)類,而SPI的接口由啟動(dòng)類加載器加載,實(shí)現(xiàn)類由應(yīng)用類加載器加載,此時(shí)需要線程上下文類加載器(ThreadContextClassLoader)反向委托。OSGi框架:實(shí)現(xiàn)模塊化熱部署,不同模塊使用獨(dú)立的類加載器,允許類的重復(fù)加載。自定義類加載器:某些框架(如Tomcat)為隔離Web應(yīng)用,每個(gè)應(yīng)用使用獨(dú)立類加載器,打破父類優(yōu)先的規(guī)則。破壞后的一致性問題可通過以下方式解決:對(duì)于SPI場(chǎng)景,使用線程上下文類加載器傳遞加載權(quán);對(duì)于模塊化場(chǎng)景(如OSGi),通過明確的模塊依賴聲明和類加載器作用域控制;自定義類加載器需重寫loadClass方法時(shí),需謹(jǐn)慎處理父類加載器的委派邏輯,避免核心類被覆蓋。2.如何排查生產(chǎn)環(huán)境中的JVM內(nèi)存泄漏?請(qǐng)描述具體工具鏈和分析步驟。內(nèi)存泄漏的常見表現(xiàn)是堆內(nèi)存持續(xù)增長、頻繁FullGC后內(nèi)存無法回收、應(yīng)用響應(yīng)逐漸變慢。排查步驟如下:(1)監(jiān)控階段:使用JDK自帶工具或APM工具(如Prometheus+Grafana)監(jiān)控堆內(nèi)存使用情況,重點(diǎn)關(guān)注OldGen或G1的Old區(qū)域增長趨勢(shì)。通過jstat-gcutil<pid>1000觀察各代GC回收率,若Old區(qū)回收率長期低于50%且持續(xù)增長,可能存在泄漏。(2)堆轉(zhuǎn)儲(chǔ):使用jmap-dump:format=b,file=heap.bin<pid>或jcmd<pid>GC.heap_dumpheap.bin提供堆轉(zhuǎn)儲(chǔ)文件。生產(chǎn)環(huán)境建議在低峰期執(zhí)行,避免影響應(yīng)用(堆轉(zhuǎn)儲(chǔ)會(huì)觸發(fā)FullGC)。(3)分析堆文件:使用EclipseMAT(MemoryAnalyzerTool)或JProfiler打開堆文件。重點(diǎn)查看:大對(duì)象列表(DominatorTree):定位占用內(nèi)存最大的對(duì)象。泄漏嫌疑人(LeakSuspectsReport):MAT自動(dòng)分析可能的泄漏點(diǎn),通常表現(xiàn)為長生命周期對(duì)象(如靜態(tài)Map、單例)持有短生命周期對(duì)象的強(qiáng)引用。對(duì)象存活路徑(PathtoGCRoots):確認(rèn)對(duì)象是否被GCRoots(如線程棧變量、靜態(tài)變量)直接或間接引用且無法被回收。(4)代碼溯源:根據(jù)分析結(jié)果定位具體類,檢查是否存在未關(guān)閉的資源(如InputStream、Connection)、監(jiān)聽器未移除(如Swing組件的Listener)、緩存未設(shè)置過期策略(如ConcurrentHashMap未清理無效條目)等情況。例如,若發(fā)現(xiàn)大量未關(guān)閉的HttpClient實(shí)例被線程池中的線程持有,需檢查連接釋放邏輯是否在finally塊中執(zhí)行。(5)驗(yàn)證修復(fù):修復(fù)代碼后,通過壓測(cè)模擬生產(chǎn)負(fù)載,使用Arthas的heapdump命令實(shí)時(shí)抓取堆數(shù)據(jù),驗(yàn)證內(nèi)存增長是否趨于穩(wěn)定。3.對(duì)比ReentrantLock與synchronized在實(shí)現(xiàn)和使用上的差異,說明StampedLock的適用場(chǎng)景。ReentrantLock與synchronized的核心差異:(1)實(shí)現(xiàn)層面:synchronized是JVM內(nèi)置鎖,基于Monitor對(duì)象實(shí)現(xiàn),依賴操作系統(tǒng)的互斥量(Mutex),存在用戶態(tài)與內(nèi)核態(tài)切換的開銷;ReentrantLock基于AQS(AbstractQueuedSynchronizer)實(shí)現(xiàn),通過CAS操作和volatile變量控制狀態(tài),可在用戶態(tài)完成鎖競爭,減少上下文切換。(2)功能特性:可中斷性:ReentrantLock支持lockInterruptibly()方法,允許在等待鎖時(shí)響應(yīng)中斷;synchronized的鎖獲取不可中斷。超時(shí)獲?。簍ryLock(longtimeout,TimeUnitunit)允許設(shè)置超時(shí)時(shí)間避免死鎖;synchronized無此功能。公平性:ReentrantLock可通過構(gòu)造函數(shù)指定公平鎖(FairSync)或非公平鎖(NonfairSync);synchronized始終為非公平鎖(JVM優(yōu)化后可能有適應(yīng)性自旋,但整體仍非公平)。條件變量:ReentrantLock通過newCondition()支持多個(gè)Condition對(duì)象(如生產(chǎn)者-消費(fèi)者模型中區(qū)分不同等待隊(duì)列);synchronized僅支持一個(gè)wait/notify隊(duì)列。StampedLock的適用場(chǎng)景:StampedLock提供了三種模式——寫、讀、樂觀讀。其核心優(yōu)勢(shì)是樂觀讀(tryOptimisticRead()),適用于讀多寫少且讀操作時(shí)間短的場(chǎng)景。例如,統(tǒng)計(jì)緩存中的數(shù)據(jù)版本:當(dāng)執(zhí)行讀操作時(shí),先獲取一個(gè)“戳”(stamp),讀取數(shù)據(jù)后驗(yàn)證戳是否未被寫操作修改(validate(stamp)),若未修改則直接使用數(shù)據(jù),避免了讀鎖的互斥開銷。相比ReentrantReadWriteLock,StampedLock的樂觀讀在高并發(fā)讀場(chǎng)景下性能更優(yōu),但需注意:樂觀讀不阻塞寫操作,若驗(yàn)證失敗需降級(jí)為悲觀讀鎖,且不支持重入,使用時(shí)需嚴(yán)格遵循“獲取戳→讀取→驗(yàn)證→處理”的流程,否則可能導(dǎo)致數(shù)據(jù)不一致。4.如何設(shè)計(jì)一個(gè)高并發(fā)場(chǎng)景下的線程池?請(qǐng)說明核心參數(shù)的選擇依據(jù)及拒絕策略的應(yīng)用場(chǎng)景。高并發(fā)線程池的設(shè)計(jì)需結(jié)合任務(wù)類型(CPU密集型/IO密集型)、任務(wù)耗時(shí)、系統(tǒng)資源(CPU核心數(shù)、內(nèi)存)綜合考慮。核心參數(shù)包括:(1)corePoolSize(核心線程數(shù)):CPU密集型任務(wù)(如復(fù)雜計(jì)算、加密):核心線程數(shù)建議設(shè)置為CPU核心數(shù)+1(避免線程切換開銷,+1用于處理偶發(fā)的頁缺失等中斷)。公式:corePoolSize=Runtime.getRuntime().availableProcessors()+1。IO密集型任務(wù)(如數(shù)據(jù)庫查詢、網(wǎng)絡(luò)請(qǐng)求):線程常因等待IO而阻塞,核心線程數(shù)可適當(dāng)增加,公式:corePoolSize≈CPU核心數(shù)×(1+等待時(shí)間/計(jì)算時(shí)間)。例如,若等待時(shí)間是計(jì)算時(shí)間的3倍,則設(shè)置為CPU核心數(shù)×4。(2)maximumPoolSize(最大線程數(shù)):對(duì)于CPU密集型任務(wù),最大線程數(shù)應(yīng)等于核心線程數(shù)(避免過多線程競爭CPU);對(duì)于IO密集型任務(wù),可設(shè)置為核心線程數(shù)的2-3倍,但需結(jié)合內(nèi)存限制(每個(gè)線程默認(rèn)棧大小為1MB,過多線程會(huì)導(dǎo)致OOM)。(3)keepAliveTime(線程空閑存活時(shí)間):對(duì)于突發(fā)流量場(chǎng)景(如秒殺),可設(shè)置較長的存活時(shí)間(如30秒),使空閑線程保留以應(yīng)對(duì)后續(xù)請(qǐng)求;對(duì)于穩(wěn)定流量場(chǎng)景,可設(shè)置較短時(shí)間(如5秒),減少資源占用。(4)workQueue(工作隊(duì)列):有界隊(duì)列(如ArrayBlockingQueue):推薦使用,避免無界隊(duì)列(如LinkedBlockingQueue)導(dǎo)致OOM。隊(duì)列大小需根據(jù)任務(wù)積壓能力設(shè)置,例如,若每秒處理1000個(gè)任務(wù),允許最多積壓10秒,則隊(duì)列大小設(shè)為10000。同步移交隊(duì)列(SynchronousQueue):適用于任務(wù)處理極快、線程能快速釋放的場(chǎng)景(如Netty的IO線程池),此時(shí)隊(duì)列不存儲(chǔ)任務(wù),直接移交線程處理。(5)拒絕策略:AbortPolicy(默認(rèn)):直接拋出RejectedExecutionException,適用于關(guān)鍵任務(wù),需上層捕獲異常并處理(如記錄日志、補(bǔ)償操作)。CallerRunsPolicy:由調(diào)用線程執(zhí)行任務(wù),適用于流量控制場(chǎng)景(如HTTP請(qǐng)求處理,讓主線程處理可降低接收新請(qǐng)求的速度)。DiscardPolicy:靜默丟棄最新任務(wù),適用于允許丟失非關(guān)鍵任務(wù)的場(chǎng)景(如日志記錄)。DiscardOldestPolicy:丟棄隊(duì)列中最老的任務(wù),適用于對(duì)時(shí)效性要求高的場(chǎng)景(如實(shí)時(shí)統(tǒng)計(jì),舊數(shù)據(jù)無意義)。示例:電商秒殺場(chǎng)景(IO密集型,短時(shí)間高并發(fā)),假設(shè)CPU核心數(shù)為8,等待時(shí)間/計(jì)算時(shí)間≈5,則corePoolSize=8×(1+5)=48,maximumPoolSize=48×2=96,keepAliveTime=30秒,workQueue=ArrayBlockingQueue(10000),拒絕策略選擇CallerRunsPolicy(避免秒殺請(qǐng)求被直接拒絕,由主線程處理可緩解壓力)。5.Spring如何解決循環(huán)依賴?三級(jí)緩存的具體作用是什么?原型Bean為何無法解決循環(huán)依賴?Spring通過三級(jí)緩存(DefaultSingletonBeanRegistry中的三個(gè)Map)解決單例Bean的循環(huán)依賴,核心思路是“提前暴露未完全初始化的Bean”。三級(jí)緩存的結(jié)構(gòu)及作用:(1)singletonObjects(一級(jí)緩存):存儲(chǔ)已完成初始化的單例Bean(key為Bean名稱,value為Bean實(shí)例)。(2)earlySingletonObjects(二級(jí)緩存):存儲(chǔ)已創(chuàng)建但未完成初始化的早期Bean實(shí)例,用于避免重復(fù)創(chuàng)建早期實(shí)例(當(dāng)A依賴B,B又依賴A時(shí),A在實(shí)例化后會(huì)被放入三級(jí)緩存,B實(shí)例化時(shí)需要A的早期引用,此時(shí)從三級(jí)緩存獲取工廠并提供早期實(shí)例,放入二級(jí)緩存)。(3)singletonFactories(三級(jí)緩存):存儲(chǔ)Bean工廠對(duì)象(ObjectFactory),用于提供早期Bean實(shí)例。工廠對(duì)象的getObject()方法會(huì)調(diào)用getEarlyBeanReference(),處理可能的AOP代理(若Bean需要被代理,此時(shí)提供代理對(duì)象,而非原始對(duì)象)。解決循環(huán)依賴的流程(以A→B→A為例):1.創(chuàng)建A:調(diào)用構(gòu)造器實(shí)例化A,此時(shí)A為“半成品”(未填充屬性),將A的工廠(()->getEarlyBeanReference(beanName,mbd,bean))放入singletonFactories。2.填充A的屬性B:檢查B是否已創(chuàng)建,未創(chuàng)建則創(chuàng)建B。3.創(chuàng)建B:調(diào)用構(gòu)造器實(shí)例化B,將B的工廠放入singletonFactories。4.填充B的屬性A:檢查A是否在一級(jí)緩存(無),二級(jí)緩存(無),則從三級(jí)緩存獲取A的工廠,提供早期A實(shí)例(可能是代理對(duì)象),放入earlySingletonObjects,并移除三級(jí)緩存中的工廠。5.B完成屬性填充,執(zhí)行初始化方法,放入一級(jí)緩存,移除二、三級(jí)緩存中的B。6.A獲取到B的實(shí)例(已在一級(jí)緩存),完成屬性填充,執(zhí)行初始化方法,放入一級(jí)緩存,移除二、三級(jí)緩存中的A。原型Bean(prototype)無法解決循環(huán)依賴的原因:原型Bean每次獲取都會(huì)創(chuàng)建新實(shí)例,Spring無法緩存原型Bean的早期實(shí)例(因?yàn)樾枰WC每次獲取都是新對(duì)象)。當(dāng)A(原型)依賴B(原型),B又依賴A時(shí),創(chuàng)建A時(shí)需要B,創(chuàng)建B時(shí)需要新的A,導(dǎo)致無限遞歸創(chuàng)建,最終拋出BeanCurrentlyInCreationException。6.分布式事務(wù)中TCC模式與Seata的AT模式有何區(qū)別?各自的適用場(chǎng)景是什么?TCC(Try-Confirm-Cancel)與SeataAT(AutomaticTransaction)模式的核心區(qū)別:(1)實(shí)現(xiàn)方式:TCC:需要業(yè)務(wù)層顯式實(shí)現(xiàn)三個(gè)方法:Try:預(yù)留資源(如凍結(jié)賬戶余額、標(biāo)記庫存為已占用),保證冪等性。Confirm:提交資源(如扣除凍結(jié)余額、減少庫存),需保證可重復(fù)調(diào)用(冪等)。Cancel:回滾資源(如解凍余額、釋放庫存),需處理空回滾(Try未執(zhí)行時(shí)Cancel被調(diào)用)和懸掛(Cancel先于Try執(zhí)行)。SeataAT:基于數(shù)據(jù)庫的本地事務(wù)和回滾日志自動(dòng)管理。執(zhí)行階段(分支事務(wù))先執(zhí)行業(yè)務(wù)SQL,同時(shí)記錄前像(BeforeImage)和后像(AfterImage)到UNDO_LOG表。提交階段直接提交本地事務(wù);回滾階段根據(jù)UNDO_LOG的后像提供反向SQL,恢復(fù)數(shù)據(jù)。(2)侵入性:TCC:業(yè)務(wù)代碼需嵌入Try/Confirm/Cancel邏輯,侵入性高,但資源控制更精細(xì)(可針對(duì)部分資源預(yù)留)。AT:無需修改業(yè)務(wù)代碼(僅需添加@GlobalTransactional注解),通過Seata的DataSourceProxy攔截SQL,自動(dòng)提供回滾日志,侵入性低。(3)性能:TCC:Try階段需要兩次數(shù)據(jù)庫操作(預(yù)留+實(shí)際操作),Confirm/Cancel需額外邏輯,性能開銷較大。AT:執(zhí)行階段僅多記錄回滾日志(一次INSERT到UNDO_LOG),性能接近本地事務(wù),適合高并發(fā)場(chǎng)景。(4)隔離性:TCC:Try階段完成資源預(yù)留后,后續(xù)操作(Confirm/Cancel)可保證隔離性,屬于強(qiáng)隔離。AT:默認(rèn)使用“讀未提交”隔離級(jí)別(因?yàn)榉种聞?wù)提交前,主事務(wù)未提交),若需要“讀已提交”,需通過全局鎖(Seata1.4+支持),但會(huì)增加鎖競爭。適用場(chǎng)景:TCC:適用于資源需要嚴(yán)格控制(如金融交易中的資金凍結(jié))、業(yè)務(wù)邏輯復(fù)雜(需自定義回滾邏輯)、對(duì)隔離性要求高的場(chǎng)景。例如,訂單服務(wù)與庫存服務(wù)的分布式事務(wù),需凍結(jié)庫存后再扣減。AT:適用于業(yè)務(wù)邏輯簡單、對(duì)侵入性敏感、性能要求高的場(chǎng)景。例如,電商系統(tǒng)中的訂單創(chuàng)建與積分扣減(積分扣減可通過AT模式自動(dòng)回滾)。7.如何優(yōu)化MySQL的慢查詢?請(qǐng)結(jié)合執(zhí)行計(jì)劃說明索引優(yōu)化的具體方法。優(yōu)化慢查詢的核心步驟是:定位慢查詢→分析執(zhí)行計(jì)劃→優(yōu)化索引或SQL→驗(yàn)證效果。(1)定位慢查詢:開啟慢查詢?nèi)罩荆╯low_query_log=1,long_query_time=1),使用pt-query-digest工具分析日志,找出執(zhí)行時(shí)間長、掃描行數(shù)多的SQL。(2)分析執(zhí)行計(jì)劃:對(duì)目標(biāo)SQL執(zhí)行EXPLAIN,重點(diǎn)關(guān)注以下字段:type:表示訪問類型,最優(yōu)為const(主鍵或唯一索引等值查詢),次優(yōu)為ref(非唯一索引等值查詢),最差為ALL(全表掃描)。key:實(shí)際使用的索引,若為NULL表示未使用索引。rows:掃描的行數(shù),值越大性能越差。Extra:常見問題如“Usingfilesort”(文件排序)、“Usingtemporary”(臨時(shí)表)、“Usingindex”(覆蓋索引)。(3)索引優(yōu)化方法:復(fù)合索引的最左匹配原則:例如,查詢條件為WHEREa=1ANDb=2ANDc=3,索引(a,b,c)可被利用;若條件為WHEREb=2ANDa=1,MySQL優(yōu)化器會(huì)自動(dòng)調(diào)整順序匹配索引;若條件為WHEREa=1ANDc=3(缺少b),則索引可能只用到a部分。避免索引失效:避免在索引列上使用函數(shù)或表達(dá)式(如WHEREDATE(create_time)='2024-01-01',應(yīng)改為create_time>='2024-01-01'ANDcreate_time<'2024-01-02')。避免類型不匹配(如索引列是INT,查詢條件用字符串'123',可能導(dǎo)致全表掃描)。避免NULL值判斷(索引不存儲(chǔ)NULL值,WHEREcolISNULL可能無法使用索引)。覆蓋索引:查詢的列全部包含在索引中,避免回表。例如,查詢SELECTid,nameFROMuserWHEREage=20,若索引為(age,id,name),則可通過索引直接獲取數(shù)據(jù),無需訪問數(shù)據(jù)行。解決排序問題:若SQL包含ORDERBY,確保排序字段與索引順序一致。例如,ORDERBYa,b,c,索引(a,b,c)可避免文件排序(Usingfilesort)。若排序字段與索引順序相反(如ORDERBYaDESC,bDESC),需確認(rèn)索引是否為降序(MySQL8.0支持降序索引)。(4)示例優(yōu)化:假設(shè)慢查詢?yōu)镾ELECT,o.order_noFROMuseruJOINorderoONu.id=o.user_idWHEREu.age=25ANDo.status=1ORDERBYo.create_timeDESC;執(zhí)行計(jì)劃顯示type為ALL(全表掃描),rows=100000。優(yōu)化步驟:為user表添加索引(age,id)(覆蓋age查詢和JOIN的id)。為order表添加索引(status,user_id,create_time,order_no)(覆蓋status查詢、JOIN的user_id、排序的create_time,以及查詢的order_no)。調(diào)整后,EXPLAIN的type變?yōu)閞ef,rows降至100,Extra顯示“Usingindex”(覆蓋索引)和“Usingfilesort”消失(排序由索引完成)。8.簡述Spring6的主要新特性及其對(duì)企業(yè)開發(fā)的影響。Spring6作為2023年發(fā)布的大版本,聚焦云原生、性能優(yōu)化和現(xiàn)代化技術(shù)集成,主要新特性:(1)JakartaEE9+支持:替換javax包為jakarta包(如javax.servlet→jakarta.servlet),適配最新的JakartaEE標(biāo)準(zhǔn)(如JakartaPersistence3.1),解決JavaEE商標(biāo)爭議,推動(dòng)框架與云原生技術(shù)棧(如MicroProfile)的兼容。(2)GraalVM原生鏡像支持:通過SpringNative項(xiàng)目(現(xiàn)集成到Spring6),支持將應(yīng)用編譯為GraalVM原
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年貴定縣幼兒園教師招教考試備考題庫帶答案解析
- 吳艷妮時(shí)政點(diǎn)評(píng)課件
- 2024年資中縣幼兒園教師招教考試備考題庫及答案解析(奪冠)
- 2025年黑龍江省哈爾濱市單招職業(yè)適應(yīng)性測(cè)試題庫附答案解析
- 2025年昂仁縣招教考試備考題庫附答案解析
- 2026年上海中僑職業(yè)技術(shù)大學(xué)單招職業(yè)適應(yīng)性測(cè)試模擬測(cè)試卷附答案解析
- 2024年閩江學(xué)院馬克思主義基本原理概論期末考試題含答案解析(奪冠)
- 2025年龍陵縣招教考試備考題庫含答案解析(必刷)
- 2025年吉林建筑大學(xué)馬克思主義基本原理概論期末考試模擬題附答案解析(奪冠)
- 2024年長春科技學(xué)院馬克思主義基本原理概論期末考試題帶答案解析(奪冠)
- 沖突解決之道醫(yī)患溝通實(shí)踐案例分析
- SJG01-2010地基基礎(chǔ)勘察設(shè)計(jì)規(guī)范
- 超聲波成像技術(shù)突破-全面剖析
- 水電與新能源典型事故案例
- 2024屆新高考語文高中古詩文必背72篇 【原文+注音+翻譯】
- DZ∕T 0217-2020 石油天然氣儲(chǔ)量估算規(guī)范
- DL-T439-2018火力發(fā)電廠高溫緊固件技術(shù)導(dǎo)則
- 2024年首屆全國“紅旗杯”班組長大賽考試題庫1400題(含答案)
- 網(wǎng)站對(duì)歷史發(fā)布信息進(jìn)行備份和查閱的相關(guān)管理制度及執(zhí)行情況說明(模板)
- 工資新老方案對(duì)比分析報(bào)告
- HGT 2520-2023 工業(yè)亞磷酸 (正式版)
評(píng)論
0/150
提交評(píng)論