![python面試題精選.doc_第1頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2020-4/2/1cb4dd8c-3054-41e5-8ced-5f3dce185ed8/1cb4dd8c-3054-41e5-8ced-5f3dce185ed81.gif)
![python面試題精選.doc_第2頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2020-4/2/1cb4dd8c-3054-41e5-8ced-5f3dce185ed8/1cb4dd8c-3054-41e5-8ced-5f3dce185ed82.gif)
![python面試題精選.doc_第3頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2020-4/2/1cb4dd8c-3054-41e5-8ced-5f3dce185ed8/1cb4dd8c-3054-41e5-8ced-5f3dce185ed83.gif)
![python面試題精選.doc_第4頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2020-4/2/1cb4dd8c-3054-41e5-8ced-5f3dce185ed8/1cb4dd8c-3054-41e5-8ced-5f3dce185ed84.gif)
![python面試題精選.doc_第5頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2020-4/2/1cb4dd8c-3054-41e5-8ced-5f3dce185ed8/1cb4dd8c-3054-41e5-8ced-5f3dce185ed85.gif)
已閱讀5頁(yè),還剩39頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
問(wèn)題1到底什么是Python?你可以在回答中與其他技術(shù)進(jìn)行對(duì)比(也鼓勵(lì)這樣做)。答案下面是一些關(guān)鍵點(diǎn): Python是一種解釋型語(yǔ)言,Python代碼在運(yùn)行之前不需要編譯。 Python是動(dòng)態(tài)類(lèi)型語(yǔ)言,在聲明變量時(shí),不需要說(shuō)明變量的類(lèi)型。 Python非常適合面向?qū)ο蟮木幊蹋∣OP),因?yàn)樗С滞ㄟ^(guò)組合(composition)與繼承(inheritance)的方式定義類(lèi)(class)。Python中沒(méi)有訪(fǎng)問(wèn)說(shuō)明符public和private, 在Python語(yǔ)言中,函數(shù)是第一類(lèi)對(duì)象(first-class objects)。這指的是它們可以被指定給變量,函數(shù)既能返回函數(shù)類(lèi)型,也可以接受函數(shù)作為輸入。類(lèi)(class)也是第一類(lèi)對(duì)象。 Python代碼編寫(xiě)快,但是運(yùn)行速度比編譯語(yǔ)言通常要慢。ython允許加入基于C語(yǔ)言編寫(xiě)的擴(kuò)展,因此我們能夠優(yōu)化代碼,消除瓶頸,這點(diǎn)通常是可以實(shí)現(xiàn)的。numpy就是一個(gè)很好地例子,它的運(yùn)行速度真的非???,因?yàn)楹芏嗨阈g(shù)運(yùn)算其實(shí)并不是通過(guò)Python實(shí)現(xiàn)的。 Python用途非常廣泛網(wǎng)絡(luò)應(yīng)用,自動(dòng)化,科學(xué)建模,大數(shù)據(jù)應(yīng)用,等等。它也常被用作“膠水語(yǔ)言”,幫助其他語(yǔ)言和組件改善運(yùn)行狀況。 Python讓困難的事情變得容易,因此程序員可以專(zhuān)注于算法和數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì),而不用處理底層的細(xì)節(jié)。問(wèn)題2補(bǔ)充缺失的代碼def print_directory_contents(sPath): 這個(gè)函數(shù)接受文件夾的名稱(chēng)作為輸入?yún)?shù), 返回該文件夾中文件的路徑, 以及其包含文件夾中文件的路徑。 # 補(bǔ)充代碼答案def print_directory_contents(sPath): import os for sChild in os.listdir(sPath): sChildPath = os.path.join(sPath,sChild) if os.path.isdir(sChildPath): print_directory_contents(sChildPath) else: print sChildPath特別要注意以下幾點(diǎn): 命名規(guī)范要統(tǒng)一。如果樣本代碼中能夠看出命名規(guī)范,遵循其已有的規(guī)范。 遞歸函數(shù)需要遞歸并終止。確保你明白其中的原理,否則你將面臨無(wú)休無(wú)止的調(diào)用棧(callstack)。 我們使用os模塊與操作系統(tǒng)進(jìn)行交互,同時(shí)做到交互方式是可以跨平臺(tái)的。你可以把代碼寫(xiě)成sChildPath = sPath + / + sChild,但是這個(gè)在Windows系統(tǒng)上會(huì)出錯(cuò)。 熟悉基礎(chǔ)模塊是非常有價(jià)值的,但是別想破腦袋都背下來(lái),記住Google是你工作中的良師益友。 如果你不明白代碼的預(yù)期功能,就大膽提問(wèn)。 堅(jiān)持KISS原則!保持簡(jiǎn)單,不過(guò)腦子就能懂!為什么提這個(gè)問(wèn)題: 說(shuō)明面試者對(duì)與操作系統(tǒng)交互的基礎(chǔ)知識(shí) 遞歸真是太好用啦問(wèn)題3閱讀下面的代碼,寫(xiě)出A0,A1至An的最終值。A0 = dict(zip(a,b,c,d,e),(1,2,3,4,5)A1 = range(10)A2 = i for i in A1 if i in A0A3 = A0s for s in A0A4 = i for i in A1 if i in A3A5 = i:i*i for i in A1A6 = i,i*i for i in A1答案A0 = a: 1, c: 3, b: 2, e: 5, d: 4A1 = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9A2 = A3 = 1, 3, 2, 5, 4A4 = 1, 2, 3, 4, 5A5 = 0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81A6 = 0, 0, 1, 1, 2, 4, 3, 9, 4, 16, 5, 25, 6, 36, 7, 49, 8, 64, 9, 81問(wèn)題4Python和多線(xiàn)程(multi-threading)。這是個(gè)好主意碼?列舉一些讓Python代碼以并行方式運(yùn)行的方法。答案Python并不支持真正意義上的多線(xiàn)程。Python中提供了多線(xiàn)程包,但是如果你想通過(guò)多線(xiàn)程提高代碼的速度,使用多線(xiàn)程包并不是個(gè)好主意。Python中有一個(gè)被稱(chēng)為Global Interpreter Lock(GIL)的東西,它會(huì)確保任何時(shí)候你的多個(gè)線(xiàn)程中,只有一個(gè)被執(zhí)行。線(xiàn)程的執(zhí)行速度非常之快,會(huì)讓你誤以為線(xiàn)程是并行執(zhí)行的,但是實(shí)際上都是輪流執(zhí)行。經(jīng)過(guò)GIL這一道關(guān)卡處理,會(huì)增加執(zhí)行的開(kāi)銷(xiāo)。這意味著,如果你想提高代碼的運(yùn)行速度,使用threading包并不是一個(gè)很好的方法。不過(guò)還是有很多理由促使我們使用threading包的。如果你想同時(shí)執(zhí)行一些任務(wù),而且不考慮效率問(wèn)題,那么使用這個(gè)包是完全沒(méi)問(wèn)題的,而且也很方便。但是大部分情況下,并不是這么一回事,你會(huì)希望把多線(xiàn)程的部分外包給操作系統(tǒng)完成(通過(guò)開(kāi)啟多個(gè)進(jìn)程),或者是某些調(diào)用你的Python代碼的外部程序(例如Spark或Hadoop),又或者是你的Python代碼調(diào)用的其他代碼(例如,你可以在Python中調(diào)用C函數(shù),用于處理開(kāi)銷(xiāo)較大的多線(xiàn)程工作)。問(wèn)題5你如何管理不同版本的代碼?答案:版本管理!GIT, SVN問(wèn)題6下面代碼會(huì)輸出什么:def f(x,l=): for i in range(x): l.append(i*i) print lf(2)f(3,3,2,1)f(3)答案:0, 13, 2, 1, 0, 1, 40, 1, 0, 1, 4呃?第一個(gè)函數(shù)調(diào)用十分明顯,for循環(huán)先后將0和1添加至了空列表l中。l是變量的名字,指向內(nèi)存中存儲(chǔ)的一個(gè)列表。第二個(gè)函數(shù)調(diào)用在一塊新的內(nèi)存中創(chuàng)建了新的列表。l這時(shí)指向了新生成的列表。之后再往新列表中添加0、1、2和4。很棒吧。第三個(gè)函數(shù)調(diào)用的結(jié)果就有些奇怪了。它使用了之前內(nèi)存地址中存儲(chǔ)的舊列表。這就是為什么它的前兩個(gè)元素是0和1了。不明白的話(huà)就試著運(yùn)行下面的代碼吧:l_mem = l = l_mem # the first callfor i in range(2): l.append(i*i)print l # 0, 1l = 3,2,1 # the second callfor i in range(3): l.append(i*i)print l # 3, 2, 1, 0, 1, 4l = l_mem # the third callfor i in range(3): l.append(i*i)print l # 0, 1, 0, 1, 4問(wèn)題7monkey patch (猴子補(bǔ)丁)用來(lái)在運(yùn)行時(shí)動(dòng)態(tài)修改已有的代碼,而不需要修改原始代碼。簡(jiǎn)單的monkey patch 實(shí)現(xiàn):python#coding=utf-8def originalFunc(): print this is original function!def modifiedFunc(): modifiedFunc=1 print this is modified function!def main(): originalFunc()if _name_=_main_: originalFunc=modifiedFunc main()python中所有的東西都是object,包括基本類(lèi)型。查看一個(gè)object的所有屬性的方法是:dir(obj)函數(shù)在python中可以像使用變量一樣對(duì)它進(jìn)行賦值等操作。查看屬性的方法:print locals()print globals()問(wèn)題8這兩個(gè)參數(shù)是什么意思:*args,*kwargs?我們?yōu)槭裁匆褂盟鼈??答案如果我們不確定要往函數(shù)中傳入多少個(gè)參數(shù),或者我們想往函數(shù)中以列表和元組的形式傳參數(shù)時(shí),那就使要用*args;如果我們不知道要往函數(shù)中傳入多少個(gè)關(guān)鍵詞參數(shù),或者想傳入字典的值作為關(guān)鍵詞參數(shù)時(shí),那就要使用*kwargs。args和kwargs這兩個(gè)標(biāo)識(shí)符是約定俗成的用法,你當(dāng)然還可以用*bob和*billy,但是這樣就并不太妥。下面是具體的示例:def f(*args,*kwargs): print args, kwargsl = 1,2,3t = (4,5,6)d = a:7,b:8,c:9f()f(1,2,3) # (1, 2, 3) f(1,2,3,groovy) # (1, 2, 3, groovy) f(a=1,b=2,c=3) # () a: 1, c: 3, b: 2f(a=1,b=2,c=3,zzz=hi) # () a: 1, c: 3, b: 2, zzz: hif(1,2,3,a=1,b=2,c=3) # (1, 2, 3) a: 1, c: 3, b: 2f(*l,*d) # (1, 2, 3) a: 7, c: 9, b: 8f(*t,*d) # (4, 5, 6) a: 7, c: 9, b: 8f(1,2,*t) # (1, 2, 4, 5, 6) f(q=winning,*d) # () a: 7, q: winning, c: 9, b: 8f(1,2,*t,q=winning,*d) # (1, 2, 4, 5, 6) a: 7, q: winning, c: 9, b: 8def f2(arg1,arg2,*args,*kwargs): print arg1,arg2, args, kwargsf2(1,2,3) # 1 2 (3,) f2(1,2,3,groovy) # 1 2 (3, groovy) f2(arg1=1,arg2=2,c=3) # 1 2 () c: 3f2(arg1=1,arg2=2,c=3,zzz=hi) # 1 2 () c: 3, zzz: hif2(1,2,3,a=1,b=2,c=3) # 1 2 (3,) a: 1, c: 3, b: 2f2(*l,*d) # 1 2 (3,) a: 7, c: 9, b: 8f2(*t,*d) # 4 5 (6,) a: 7, c: 9, b: 8f2(1,2,*t) # 1 2 (4, 5, 6) f2(1,1,q=winning,*d) # 1 1 () a: 7, q: winning, c: 9, b: 8f2(1,2,*t,q=winning,*d) # 1 2 (4, 5, 6) a: 7, q: winning, c: 9, b: 8為什么提這個(gè)問(wèn)題?有時(shí)候,我們需要往函數(shù)中傳入未知個(gè)數(shù)的參數(shù)或關(guān)鍵詞參數(shù)。有時(shí)候,我們也希望把參數(shù)或關(guān)鍵詞參數(shù)儲(chǔ)存起來(lái),以備以后使用。有時(shí)候,僅僅是為了節(jié)省時(shí)間。問(wèn)題9下面這些是什么意思:classmethod,staticmethod,property?回答背景知識(shí)這些都是裝飾器(decorator)。裝飾器是一種特殊的函數(shù),要么接受函數(shù)作為輸入?yún)?shù),并返回一個(gè)函數(shù),要么接受一個(gè)類(lèi)作為輸入?yún)?shù),并返回一個(gè)類(lèi)。標(biāo)記是語(yǔ)法糖(syntactic sugar),可以讓你以簡(jiǎn)單易讀得方式裝飾目標(biāo)對(duì)象。my_decoratordef my_func(stuff): do_thingsIs equivalent todef my_func(stuff): do_thingsmy_func = my_decorator(my_func)你可以在本網(wǎng)站上找到介紹裝飾器工作原理的教材。真正的答案classmethod,staticmethod和property這三個(gè)裝飾器的使用對(duì)象是在類(lèi)中定義的函數(shù)。下面的例子展示了它們的用法和行為:class MyClass(object): def _init_(self): self._some_property = properties are nice self._some_other_property = VERY nice def normal_method(*args,*kwargs): print calling normal_method(0,1).format(args,kwargs) classmethod def class_method(*args,*kwargs): print calling class_method(0,1).format(args,kwargs) staticmethod def static_method(*args,*kwargs): print calling static_method(0,1).format(args,kwargs) property def some_property(self,*args,*kwargs): print calling some_property getter(0,1,2).format(self,args,kwargs) return self._some_property some_property.setter def some_property(self,*args,*kwargs): print calling some_property setter(0,1,2).format(self,args,kwargs) self._some_property = args0 property def some_other_property(self,*args,*kwargs): print calling some_other_property getter(0,1,2).format(self,args,kwargs) return self._some_other_propertyo = MyClass()# 未裝飾的方法還是正常的行為方式,需要當(dāng)前的類(lèi)實(shí)例(self)作為第一個(gè)參數(shù)。o.normal_method # bound method MyClass.normal_method of o.normal_method() # normal_method(,),)o.normal_method(1,2,x=3,y=4) # normal_method(, 1, 2),y: 4, x: 3)# 類(lèi)方法的第一個(gè)參數(shù)永遠(yuǎn)是該類(lèi)o.class_method# bound method classobj.class_method of o.class_method()# class_method(,),)o.class_method(1,2,x=3,y=4)# class_method(, 1, 2),y: 4, x: 3)# 靜態(tài)方法(static method)中除了你調(diào)用時(shí)傳入的參數(shù)以外,沒(méi)有其他的參數(shù)。o.static_method# o.static_method()# static_method(),)o.static_method(1,2,x=3,y=4)# static_method(1, 2),y: 4, x: 3)# property是實(shí)現(xiàn)getter和setter方法的一種方式。直接調(diào)用它們是錯(cuò)誤的。# “只讀”屬性可以通過(guò)只定義getter方法,不定義setter方法實(shí)現(xiàn)。o.some_property# 調(diào)用some_property的getter(,(),)# properties are nice# “屬性”是很好的功能o.some_property()# calling some_property getter(,(),)# Traceback (most recent call last):# File , line 1, in # TypeError: str object is not callableo.some_other_property# calling some_other_property getter(,(),)# VERY nice# o.some_other_property()# calling some_other_property getter(,(),)# Traceback (most recent call last):# File , line 1, in # TypeError: str object is not callableo.some_property = groovy# calling some_property setter(,(groovy,),)o.some_property# calling some_property getter(,(),)# groovyo.some_other_property = very groovy# Traceback (most recent call last):# File , line 1, in # AttributeError: cant set attributeo.some_other_property# calling some_other_property getter(,(),)問(wèn)題10閱讀下面的代碼,它的輸出結(jié)果是什么?class A(object): def go(self): print go A go! def stop(self): print stop A stop! def pause(self): raise Exception(Not Implemented)class B(A): def go(self): super(B, self).go() print go B go!class C(A): def go(self): super(C, self).go() print go C go! def stop(self): super(C, self).stop() print stop C stop!class D(B,C): def go(self): super(D, self).go() print go D go! def stop(self): super(D, self).stop() print stop D stop! def pause(self): print wait D wait!class E(B,C): passa = A()b = B()c = C()d = D()e = E()# 說(shuō)明下列代碼的輸出結(jié)果a.go()b.go()c.go()d.go()e.go()a.stop()b.stop()c.stop()d.stop()e.stop()a.pause()b.pause()c.pause()d.pause()e.pause()答案輸出結(jié)果以注釋的形式表示:a.go()# go A go!b.go()# go A go!# go B go!c.go()# go A go!# go C go!d.go()# go A go!# go C go!# go B go!# go D go!e.go()# go A go!# go C go!# go B go!a.stop()# stop A stop!b.stop()# stop A stop!c.stop()# stop A stop!# stop C stop!d.stop()# stop A stop!# stop C stop!# stop D stop!e.stop()# stop A stop!a.pause()# . Exception: Not Implementedb.pause()# . Exception: Not Implementedc.pause()# . Exception: Not Implementedd.pause()# wait D wait!e.pause()# .Exception: Not Implemented問(wèn)題11閱讀下面的代碼,它的輸出結(jié)果是什么?class Node(object): def _init_(self,sName): self._lChildren = self.sName = sName def _repr_(self): return .format(self.sName) def append(self,*args,*kwargs): self._lChildren.append(*args,*kwargs) def print_all_1(self): print self for oChild in self._lChildren: oChild.print_all_1() def print_all_2(self): def gen(o): lAll = o, while lAll: oNext = lAll.pop(0) lAll.extend(oNext._lChildren) yield oNext for oNode in gen(self): print oNodeoRoot = Node(root)oChild1 = Node(child1)oChild2 = Node(child2)oChild3 = Node(child3)oChild4 = Node(child4)oChild5 = Node(child5)oChild6 = Node(child6)oChild7 = Node(child7)oChild8 = Node(child8)oChild9 = Node(child9)oChild10 = Node(child10)oRoot.append(oChild1)oRoot.append(oChild2)oRoot.append(oChild3)oChild1.append(oChild4)oChild1.append(oChild5)oChild2.append(oChild6)oChild4.append(oChild7)oChild3.append(oChild8)oChild3.append(oChild9)oChild6.append(oChild10)# 說(shuō)明下面代碼的輸出結(jié)果oRoot.print_all_1()oRoot.print_all_2()答案oRoot.print_all_1()會(huì)打印下面的結(jié)果:oRoot.print_all_1()會(huì)打印下面的結(jié)果:為什么提這個(gè)問(wèn)題?因?yàn)閷?duì)象的精髓就在于組合(composition)與對(duì)象構(gòu)造(object construction)。對(duì)象需要有組合成分構(gòu)成,而且得以某種方式初始化。這里也涉及到遞歸和生成器(generator)的使用。生成器是很棒的數(shù)據(jù)類(lèi)型。你可以只通過(guò)構(gòu)造一個(gè)很長(zhǎng)的列表,然后打印列表的內(nèi)容,就可以取得與print_all_2類(lèi)似的功能。生成器還有一個(gè)好處,就是不用占據(jù)很多內(nèi)存。有一點(diǎn)還值得指出,就是print_all_1會(huì)以深度優(yōu)先(depth-first)的方式遍歷樹(shù)(tree),而print_all_2則是寬度優(yōu)先(width-first)。有時(shí)候,一種遍歷方式比另一種更合適。但這要看你的應(yīng)用的具體情況。問(wèn)題12簡(jiǎn)要描述Python的垃圾回收機(jī)制(garbage collection)。答案這里能說(shuō)的很多。你應(yīng)該提到下面幾個(gè)主要的點(diǎn): Python在內(nèi)存中存儲(chǔ)了每個(gè)對(duì)象的引用計(jì)數(shù)(reference count)。如果計(jì)數(shù)值變成0,那么相應(yīng)的對(duì)象就會(huì)消失,分配給該對(duì)象的內(nèi)存就會(huì)釋放出來(lái)用作他用。 偶爾也會(huì)出現(xiàn)引用循環(huán)(reference cycle)。垃圾回收器會(huì)定時(shí)尋找這個(gè)循環(huán),并將其回收。舉個(gè)例子,假設(shè)有兩個(gè)對(duì)象o1和o2,而且符合o1.x = o2和o2.x = o1這兩個(gè)條件。如果o1和o2沒(méi)有其他代碼引用,那么它們就不應(yīng)該繼續(xù)存在。但它們的引用計(jì)數(shù)都是1。 Python中使用了某些啟發(fā)式算法(heuristics)來(lái)加速垃圾回收。例如,越晚創(chuàng)建的對(duì)象更有可能被回收。對(duì)象被創(chuàng)建之后,垃圾回收器會(huì)分配它們所屬的代(generation)。每個(gè)對(duì)象都會(huì)被分配一個(gè)代,而被分配更年輕代的對(duì)象是優(yōu)先被處理的。問(wèn)題13將下面的函數(shù)按照?qǐng)?zhí)行效率高低排序。它們都接受由0至1之間的數(shù)字構(gòu)成的列表作為輸入。這個(gè)列表可以很長(zhǎng)。一個(gè)輸入列表的示例如下:random.random() for i in range(100000)。你如何證明自己的答案是正確的。def f1(lIn): l1 = sorted(lIn) l2 = i for i in l1 if i0.5 return i*i for i in l2def f2(lIn): l1 = i for i in lIn if i0.5 l2 = sorted(l1) return i*i for i in l2def f3(lIn): l1 = i*i for i in lIn l2 = sorted(l1) return i for i in l1 if i0printfilter(lambdas:sandlen(s.strip()0,test,None,str,END) 裝飾器:給函數(shù)添加新功能,并簡(jiǎn)化該函數(shù)調(diào)用;無(wú)參數(shù)裝飾器示例:python view plain copydeflog(f):deffn(*args,*kw):#*args,*kw保證對(duì)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 教育培訓(xùn)機(jī)構(gòu)評(píng)估居間合同
- 紡織品交易居間合同協(xié)議書(shū)
- 2025年度辦公室日常保潔與節(jié)能照明設(shè)備供應(yīng)服務(wù)合同
- 廣告投放數(shù)據(jù)分析合同
- 產(chǎn)品包裝設(shè)計(jì)技術(shù)指南
- 安全生產(chǎn)托管協(xié)議合同
- 工礦企業(yè)產(chǎn)品購(gòu)銷(xiāo)合同
- 廚房承包協(xié)議集錦
- 農(nóng)業(yè)質(zhì)量標(biāo)準(zhǔn)制定指南
- 能源行業(yè)能源供應(yīng)鏈優(yōu)化與智能倉(cāng)儲(chǔ)管理
- 保潔班長(zhǎng)演講稿
- 勞務(wù)雇傭協(xié)議書(shū)范本
- JGJ52-2006 普通混凝土用砂、石質(zhì)量及檢驗(yàn)方法標(biāo)準(zhǔn)
- 環(huán)境監(jiān)測(cè)的基本知識(shí)
- 電動(dòng)車(chē)棚施工方案
- 《中國(guó)十大書(shū)法家》課件
- 超實(shí)用可編輯版中國(guó)地圖全圖及分省地圖
- 尿路結(jié)石腔內(nèi)碎石患者圍手術(shù)期并發(fā)尿膿毒癥護(hù)理專(zhuān)家共識(shí)
- 交換機(jī)工作原理詳解(附原理圖)
- 小學(xué)總復(fù)習(xí)非連續(xù)性文本教學(xué)課件
- 2023年考研考博考博英語(yǔ)福建師范大學(xué)考試高頻考點(diǎn)參考題庫(kù)帶答案
評(píng)論
0/150
提交評(píng)論