




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
iOS程序員面試分類模擬2簡(jiǎn)答題1.
objective-C的優(yōu)缺點(diǎn)有哪些?正確答案:Objective-C的優(yōu)缺點(diǎn)見表。Objective-C的優(yōu)缺點(diǎn)優(yōu)點(diǎn)缺點(diǎn)1)Objec(江南博哥)tive-C是C語(yǔ)言的超集,在C語(yǔ)言的基礎(chǔ)上衍生了很多新的語(yǔ)言特性,封裝得很完善而且方便使用,大大降低了編程復(fù)雜度,因此開發(fā)中使用起來會(huì)感覺方便高效1)不支持命名空間(都是通過加一些像NS或者UI這樣的命名前綴來達(dá)到用命名空間防止命名沖突的作用,但這樣會(huì)使變量的命名更長(zhǎng))2)Category(類別)的使用,可以快速擴(kuò)展類的方法,同時(shí)使擴(kuò)展的功能模塊之間互不影響2)不支持運(yùn)算符重載3)Posing(扮演)特性,[ParentClassposeAs:[ChildrenClassclass]];該語(yǔ)言特性使得父類無須定義和初始化子類對(duì)象,即可通過父類扮演子類進(jìn)行操作3)不支持多重繼承(C++語(yǔ)言通過virtual關(guān)鍵字防止二義性的出現(xiàn),實(shí)現(xiàn)多重繼承)4)動(dòng)態(tài)語(yǔ)言特性,動(dòng)態(tài)類型、動(dòng)態(tài)綁定和動(dòng)態(tài)加載等,將類型確定、方法調(diào)用和資源加載等任務(wù)推遲到運(yùn)行時(shí),大大提高了編程靈活度4)使用動(dòng)態(tài)運(yùn)行時(shí)類型,所有的方法都是通過消息傳遞機(jī)制方法調(diào)用,有其動(dòng)態(tài)的優(yōu)勢(shì),同時(shí)也使很多編譯時(shí)的優(yōu)化方法無法使用降低了性能,例如:內(nèi)聯(lián)方法等5)指針:Objective-C保留了C語(yǔ)言強(qiáng)大的指針特性
6)Objective-C與C/C++可在.mm文件中進(jìn)行混合編程,靈活度更高
2.
相對(duì)于objective-C而言,Swift有什么新特性?正確答案:Swift是一門新型語(yǔ)言,它借鑒了Haskell、Ruby、Python、C#等語(yǔ)言特性,看上去偏腳本化。Swift仍然支持已有的Cocoa和CocoaTouch框架。
Swift的主要新特性如下:
1)安全:有嚴(yán)格的類型檢查。
2)強(qiáng)大:有高度優(yōu)化的LLVM編譯器。
3)新型:Swift借鑒多種語(yǔ)言特性,表達(dá)更簡(jiǎn)單精確。
Swift與Objective-C和C/C++的基本對(duì)比見表。C/C++、objective-C和Swift三者基本對(duì)比
C/C++Objective-CSwift庫(kù)引入#include<stdio.h>#import<Foundation/Foundation.h>importFoundation頭文件#include“Person.h”#import“Person.h”無常量定義#defineSPEED1.0#defineSPEED1.0letSPEED=1.0成員變量聲明intage;intage;varage:Int類方法聲明staticvoidspeak();+(void)speak();classfuncspeak(){...}實(shí)例方法聲明intspeak();-(int)speak();funcspeak(){...}動(dòng)態(tài)內(nèi)存申請(qǐng)Person*person=malloc(sizeof(Person));Person*person=newPerson;Person*person=[Personalloc];Varperson=Person()類方法調(diào)用Person::speak();[Personspeak];Person.speak()實(shí)例方法調(diào)用Person->speak();[personspeak]Person.speak()字符串“String”@“String”“String”
1.從基本的ViewController代碼窺探Objective-C和Swift的區(qū)別
(1)Swift
/*ViewController.swift*|
importUIKit
classViewController:UIViewController{
@IBOutletweakvarlabel1:UILabel!
@IBActionfuncbutton1(sender:AnyObject){
label1.text="HelloiOS!!!"
}
overridefuncviewDidLoad(){
super.viewDidLoad()
//Doanyadditionalsetupafterloadingtheview,typicallyfromanib.
}
overridefuncdidReceiveMemoryWaming(){
super.didReceiveMemoryWarning()
//Disposeofanyresourcesthatcanberecreated.
}
(2)Objective-C
/*ViewController.h*/
#import<UIKit/UIKit.h>
@interfaceViewController:UIViewController
@property(weak,nonatomic)IBOutletUILabel*labell;
-(IBAction)buttonl:(id)sender;
@end
/*ViewController.m*/
#import"ViewController.h"
@interfaceViewController()
@end
@implementationViewController
@synthesizelabel1;
-(void)viewDidLoad{
[superviewDidLoad];
//Doanyadditionalsetupafterloadingtheview,typicallyfromanib.
}
-(void)didReceiveMemoryWaming{
[superdidReceiveMemoryWarning];
//Disposeofanyresourcesthatcanberecreated.
}
-(IBAction)button1:(id)sender{
label1.text=@"HelloiOS!!!";
}
@end
2.SwiR類的定義
整個(gè)類文件都定義在一個(gè)Swift文件內(nèi):
importFoundation
classBall{
/*變量*/
varcenterX:Float
varcenterY:Float
varradius:Float
/*初始化方法*/
init(centerX:Float,centerY:Float,radius:Float){
selfcenterX=centerX
self.centerY=centerY
self.radius=radius
}
/*實(shí)例方法*/
funcmove(moveX:Float,_moveY:Float){
self.centerX+=moveX
self.centerY+=moveY
}
/*類方法*/
classfuncaClassMethod(){
print("Iamaclassmethod")
}
}
...
/*創(chuàng)建對(duì)象*/
varball1=Ball(centerX:7.0,centerY:5.0,radius:6.0)
/*方法調(diào)用*/
ball1.move(moveX:1.0,1.0)
Ball.aClassMethod0
3.Objective-C和Swift語(yǔ)言中流程控制語(yǔ)句的比較
(1)Objective-C
/*條件判斷*/
if(a<b){
//Dosomethinghere
}else{
//Doanotherthinghere
}
/*for循環(huán)*/
for(inti=0;i<10;i++){
//Dosomethinghere
}
/*while循環(huán)*/
while(count<10){
//Dosomethinghere
}
/*do-while循環(huán)*/
do{
//Dosomcthinghere
}while(count<10);
(2)Swift
/*條件判斷*/
ifa<b{
//Dosomethinghere
}else{
//Doanotherthinghere
}
/*for循環(huán)*/
forinti=0;i<10;i++{
//Dosomethinghere
}
/*while循環(huán)*/
whilecount<10{
//Dosomethinghere
}
/*repeat-while循環(huán)*/
repeat{
//Dosomethinghere
}whilecount<10
4.Objective-C和Swift語(yǔ)言中String字符串的對(duì)比
(1)Objective-C
NSString*Str=@"string";
NSString*formatStr=[NSStringstringWithFormat:@"%@andfloat%f",Str,3.1415"];
(2)Swift
/*可變字符串*/
varStr="string"
varStr:String="string"
varStr=String("string")
/*不可變字符串*/
letStr="string"
letStr:String="string"
letStr=String("string")
5.Objective-C和Swift語(yǔ)言中Array和MultableArray的對(duì)比
(1)Objective-C
/*靜態(tài)數(shù)組*/
NSArray*array=[[NSArrayalloc]initWithObjects:ball1,ball2,nil];
array[0].radius=10;
/*可變數(shù)組*/
NSMutableArray*mArray=[[NSMutableArrayalloc]initWithCapacity:2];
[mArrayaddObject:ball1];
[mArrayaddObject:ball2];
Ball*newball=[mArrayobjectAtIndex:1];
[mArrayremoveObjectAtIndex:1];
(2)Swift
/*靜態(tài)數(shù)組*/
letmyArray:Array<Ball>=[ball1,ball2]
letmyArray:[Ball]=[ball1,ball2]
letmyArray=[ball1,ball2]
myArray[0].radius=10
/*可變數(shù)組*/
vatmyArray:[Ball]=[]
myArray.append(ball1)
myArray.append(ball2)
varnewBall=myArray[1]
myArray.remove(at:0)
6.Objective-C和Swift語(yǔ)言中UIImageView的使用對(duì)比
(1)Objective-C
UIImageView*myImage=[[UIImageViewalloc]initWithImage:[UIImageimageNamed:@"tiger.png"]];
[self.viewaddSubview:myImage];
myImage.center=CGPointMake(150,200);
myImage.frame=CGRectMake(0,0,50,25);
(2)Swift
letmyImage=UIImageView(image:UIImage(named:"tiger.png"))
view.addSubview(myImage)
myImage2:frame=CGRect(x:0,y:0,width:50,height:25)
myImage2.center=CGPoint(x:150,y:200)
3.
Foundation對(duì)象與CoreFoundation對(duì)象有什么區(qū)別?正確答案:Foundation對(duì)象是Objective-C對(duì)象,使用Objective-C語(yǔ)言實(shí)現(xiàn);而CoreFoundation對(duì)象是C對(duì)象,使用C語(yǔ)言實(shí)現(xiàn)。兩者之間可以通過__bridge、__bridge_transfer、__bridge_retained等關(guān)鍵字轉(zhuǎn)換(橋接)。
Foundation對(duì)象和CoreFoundation對(duì)象更重要的區(qū)別是ARC下的內(nèi)存管理問題。在非ARC下兩者都需要開發(fā)者手動(dòng)管理內(nèi)存,沒有區(qū)別。但在ARC下,系統(tǒng)只會(huì)自動(dòng)管理Foundation對(duì)象的釋放,而不支持對(duì)CoreFoundation對(duì)象的管理。因此,在ARC下兩者進(jìn)行轉(zhuǎn)換后,必須要確定轉(zhuǎn)換后的對(duì)象是由開發(fā)者手動(dòng)管理,還是由ARC系統(tǒng)繼續(xù)管理,否則可能導(dǎo)致內(nèi)存泄漏問題。
下面以NSString對(duì)象(Foundation對(duì)象)和CFStringRef對(duì)象(CoreFoundation對(duì)象)為例,介紹兩者的轉(zhuǎn)換和內(nèi)存管理權(quán)移交問題。
1)在非ARC下,NSString對(duì)象和CFStringRef對(duì)象可以直接進(jìn)行強(qiáng)制轉(zhuǎn)換,都是手動(dòng)管理內(nèi)存,無須關(guān)心內(nèi)存管理權(quán)的移交問題。
2)在ARC下,NSString對(duì)象和CFStringRef對(duì)象在相互轉(zhuǎn)換時(shí),需要選擇使用__bridge、__bridge_transfer和__bridge_retained來確定對(duì)象的管理權(quán)轉(zhuǎn)移問題,三者的作用語(yǔ)義分別如下:
①__bridge關(guān)鍵詞最常用,它的含義是不改變對(duì)象的管理權(quán)所有者,本來由ARC管理的Foundation對(duì)象,轉(zhuǎn)換成CoreFoundation對(duì)象后依然由ARC管理;本來由開發(fā)者手動(dòng)管理的CoreFoundation對(duì)象轉(zhuǎn)換成Foundation對(duì)象后繼續(xù)由開發(fā)者手動(dòng)管理。示例代碼如下:
/*ARC管理的Foundation對(duì)象*/
NSString*s1=@"string";
/*轉(zhuǎn)換后依然由ARC管理釋放*/
CFStringRefcfstring=(__bridgeCFStringRef)s1;
/*開發(fā)者手動(dòng)管理的CoreFoundation對(duì)象*/
CFStringRefs2=CFStringCreateWithCString(NULL,"string",kCFStringEncodingASCII);
/*轉(zhuǎn)換后仍然需要開發(fā)者手動(dòng)管理釋放*/
NSString*fstring=(__bridgeNSString*)s2;
②__bfidge_transfer用在將CoreFoundation對(duì)象轉(zhuǎn)換成Foundation對(duì)象時(shí),用于進(jìn)行內(nèi)存管理權(quán)的移交,即本來需由開發(fā)者手動(dòng)管理釋放的CoreFoundation對(duì)象在轉(zhuǎn)換成Foundation對(duì)象后,交由ARC來管理對(duì)象的釋放,開發(fā)者不用再關(guān)心對(duì)象的釋放問題,因?yàn)椴粫?huì)發(fā)生內(nèi)存泄漏。示例代碼如下:
/*開發(fā)者手動(dòng)管理的CoreFoundation對(duì)象*/
CFStringRefs2=CFStringCreateWithCString(NULL,"string",kCFStringEncodingASCII);
/*轉(zhuǎn)換后改由ARC管理對(duì)象的釋放,不用擔(dān)心內(nèi)存泄漏*/
NSString*fstring=(__bridge__transferNSString*)s2;
//NSString*fstring=(NSString*)CFBridgingRelease(s2);
//另一種等效寫法
③__bridge_retained用在將Foundation對(duì)象轉(zhuǎn)換成CoreFoundation對(duì)象時(shí),進(jìn)行ARC內(nèi)存管理權(quán)的剝奪,即本來由ARC管理的Foundation對(duì)象在轉(zhuǎn)換成CoreFoundation對(duì)象后,ARC不再繼續(xù)管理該對(duì)象,需要開發(fā)者自己進(jìn)行手動(dòng)釋放該對(duì)象,否則會(huì)發(fā)生內(nèi)存泄漏。示例代碼如下:
/*ARC管理的Foundation對(duì)象*/
NSString*s1=@"string";
/*轉(zhuǎn)換后ARC不再繼續(xù)管理,需要手動(dòng)釋放*/
CFStringRefcfstring=(__bridge__retainedCFStringRef)s1;
//CFStringRefcfstring=(CFStringRef)CFBridgingRetain(s1);
//另一種等效寫法
4.
Objective-C中的類方法和實(shí)例方法有什么本質(zhì)區(qū)別和聯(lián)系?正確答案:在比較類方法和實(shí)例方法的區(qū)別之前,先要明確Objective-C中的類對(duì)象和實(shí)例對(duì)象的概念,開發(fā)中定義的類自身也是一個(gè)對(duì)象,稱為類對(duì)象,保存該類的成員變量、屬性列表和方法列表等。類對(duì)象經(jīng)alloc和init實(shí)例化后成為實(shí)例對(duì)象。實(shí)例對(duì)象、類對(duì)象和元類的底層結(jié)構(gòu)如圖所示。
實(shí)例對(duì)象、類對(duì)象和元類的關(guān)系結(jié)構(gòu)圖
1)類方法屬于類對(duì)象,用“+”號(hào)修飾,它類似于C語(yǔ)言中的靜態(tài)方法,類方法列表定義在類對(duì)象的元類中,通過isa指針找到;實(shí)例方法屬于實(shí)例對(duì)象,用“-”號(hào)修飾,實(shí)例方法列表定義在實(shí)例對(duì)象的類對(duì)象中,通過isa指針找到。
2)類方法只能通過類對(duì)象調(diào)用,也就是類名直接調(diào)用;實(shí)例方法則需要由通過alloc和init方法實(shí)例化后的實(shí)例對(duì)象調(diào)用。
3)類方法中的self指類對(duì)象;實(shí)例方法中的self指實(shí)例對(duì)象。
4)類方法可以調(diào)用其他的類方法,但不可以直接調(diào)用實(shí)例方法;而實(shí)例方法既可以調(diào)用其他實(shí)例方法,也可以通過類名直接調(diào)用本類或者外部類的類方法。
5)在實(shí)例方法中可以訪問成員變量,但類方法中不能訪問成員變量。
5.
子類初始化時(shí)為什么要調(diào)用self=[superinit]?正確答案:因?yàn)樽宇惱^承自父類,需要獲得父類的實(shí)例和方法等,所以初始化子類之前要先保證父類已經(jīng)初始化完畢,防止出錯(cuò)。當(dāng)調(diào)用self=[superinit]方法時(shí),如果父類初始化不成功,那么會(huì)返回nil,所以可以根據(jù)self是否為nil判斷父類是否初始化成功,從而進(jìn)行合理地處理,以便起到容錯(cuò)效果。
6.
使用dealloc方法釋放對(duì)象時(shí),為什么一定要調(diào)用[superdealloc]方法?在何處調(diào)用?正確答案:因?yàn)樽宇惖暮芏鄬?shí)例變量是繼承自父類的,所以要調(diào)用[superdealloc]方法來釋放從父類繼承來的實(shí)例變量,實(shí)際上還是釋放自己的實(shí)例變量,只是繼承來的這部分只能調(diào)用父類的dealloc方法來釋放。
按照自下往上的邏輯,一般要先釋放子類的實(shí)例,然后釋放父類的實(shí)例。自下往上的原因是,在調(diào)用[superdealloc]方法之前如果不先把子類中的變量從內(nèi)存中釋放掉,容易造成子類中變量的內(nèi)存積壓,導(dǎo)致內(nèi)存泄漏,所以[superdealloc]方法應(yīng)該在釋放掉子類變量之后最后調(diào)用。當(dāng)然在ARC中就不需要考慮這些問題了,變量會(huì)自動(dòng)釋放,此方法也不存在了。
7.
#import與#include以及#import<>與#import""各有什么區(qū)別?正確答案:#import與#include都是用來引入頭文件的。與#include相比,Objective-C中#import的優(yōu)勢(shì)是不會(huì)引起重復(fù)包含,相當(dāng)于多了C/C++中#pragmaonce的作用,它可以保證頭文件只被編譯一次。
#import<>與#import""的區(qū)別和C/C++中#include<>與#include""的區(qū)別一樣:使用尖括號(hào)<>指用來引入系統(tǒng)的頭文件,而使用引號(hào)""指用來引入本地用戶頭文件。
8.
Objective-C中@class代表什么?正確答案:@class相當(dāng)于只是在頭文件聲明一下要用到的類的頭文件(前向聲明),告訴編譯器有這樣一個(gè)類的定義但暫時(shí)不要將類的實(shí)現(xiàn)引入,讓該類定義的變量能夠編譯通過,直到運(yùn)行起來時(shí)才去查看類的實(shí)現(xiàn)文件。但實(shí)際上這樣也只能起到在頭文件中聲明該類實(shí)例變量的作用,在.m文件中如果用到類的實(shí)現(xiàn)細(xì)節(jié)(屬性和方法),那么還是要通過#import再次引入類的頭文件。
使用@class的好處是將頭文件的引入延遲了,至少延遲到了.m實(shí)現(xiàn)文件中,這也符合“直到真正用到的時(shí)候再確定引入”的動(dòng)態(tài)思想,盡量往后拖延,更重要的是這樣也可以有效地避免頭文件的重復(fù)引入甚至循環(huán)引用等問題。
9.
Objective-C中有二維數(shù)組嗎?如何實(shí)現(xiàn)?正確答案:Objective-C中是沒有二維數(shù)組的。二維數(shù)組是通過一維數(shù)組的嵌套實(shí)現(xiàn)的,但是別忘了還有字面量用法,實(shí)際上可以像C/C++一樣簡(jiǎn)潔地創(chuàng)建和使用二維數(shù)組。這里總結(jié)了創(chuàng)建二維數(shù)組的兩種方法以及數(shù)組的訪問方式。
1)通過字面量創(chuàng)建和使用二維數(shù)組(推薦)方法如下:
/*字面量創(chuàng)建二維數(shù)組并訪問(推薦)*/
NSArray*array2d=@[
@[@11,@12,@13],
@[@21,@22,@23],
@[@31,@32,@33]
];
/*字面量訪問方式(推薦)*/
NSLog(@"array2d[2][2]:%@",array2d[2][2]);
/*數(shù)組對(duì)象訪問*/
NSLog(@"array2d[2][2]:%@",[[array2dobjectAtIndex:2]objectAtIndex:2]);
打印結(jié)果如下:
2017-01-0521:59:49.694SingleView[10483:506166]array2d[2][2]:33
2017-01-0521:59:49.695SingleView[10483:506166]array2d[2][2]:33
2)通過嵌套原本的數(shù)組對(duì)象使用二維數(shù)組方式如下:
/*另外一種循環(huán)嵌套創(chuàng)建二維數(shù)組的方式*/
NSMutableArray*mulArrayD1=[[NSMutableArrayalloc]init];
//第一維數(shù)組
/*添加第二維*/
for(NSUIntegeri=1;i<=3;i++){
NSArray*arrayD2=@[@(i*10+1),@(i*10+2),@(i*10+3)];
[mulArrayD1addObject:arrayD2];
}
/*字面量訪問方式(推薦)*/
NSLog(@"array2d[2][2]:%@",mulArrayD1[2][2]);
/*數(shù)組對(duì)象訪問*/
NSLog(@"array2d[2][2]:%@",[[mulArrayD1objectAtIndex:2]objectAtIndex:2]);
打印結(jié)果如下:
2017-01-0521:59:49.695SingleView[10483:506166]array2d[2][2]:33
1:59:49.695SingleView[10483:506166]array2d[2][2]:33
10.
在Objective-C的數(shù)組或字典中,添加nil對(duì)象會(huì)有什么問題?正確答案:數(shù)組或字典如果通過addObject方法添加nil,那么程序會(huì)崩潰,但如果使用initWithObjects方法來初始化數(shù)組,其中的nil會(huì)被編譯器過濾去掉,不會(huì)出現(xiàn)崩潰問題。另外,如果使用糖衣語(yǔ)法初始化數(shù)組或字典,那么也不可以有nil,此時(shí)nil不會(huì)被過濾掉也會(huì)導(dǎo)致程序崩潰。
/*1.糖衣語(yǔ)法*/
NSArray*array=@[@1,@2,@3,nil];//錯(cuò)誤,不可有ni1,會(huì)編譯不通過:void*不是Objective-C對(duì)象
NSDictionary*dic=@{
@"KEY":@"VALUE",
@"KEY1":@"VALUE1",
@"KEY2":nil
};//語(yǔ)法就是錯(cuò)誤的,編譯不通過
/*2.原用法*/
NSMutableArray*mulArray=[[NSMutableArrayalloc]initWithObjects:@1,@2,@3,nil];//正確
NSMutableDictionary*mulDic=[[NSMutableDictionaryalloc]initWithObjectsAndKeys:
@"VALUE",@"KEY",
@"VALU
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 出售園林鋪面合同范本
- 保潔物料供貨合同范本
- 企業(yè)策劃宣傳合同范本
- 農(nóng)機(jī)割臺(tái)租售合同范本
- 出口螺桿驗(yàn)貨合同范本
- 公司分期手機(jī)合同范本
- 企業(yè)職員培養(yǎng)合同范本
- 企業(yè)終止租賃合同范本
- 化糞池安裝合同范本
- 2024年深圳市南山區(qū)蓓蕾幼教集團(tuán)招聘考試真題
- 杭州市淳安縣國(guó)有企業(yè)招聘筆試真題2024
- 安徽省蕪湖市2024-2025學(xué)年第一學(xué)期期末考試七年級(jí)語(yǔ)文試卷(含答案)
- 2024政府采購(gòu)評(píng)審專家考試真題庫(kù)及答案
- 2024年花盆市場(chǎng)分析現(xiàn)狀
- 2025山東省退役軍人事務(wù)廳所屬事業(yè)單位招聘人員歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024年社區(qū)工作者考試時(shí)事政治模擬題及答案
- 物業(yè)服務(wù)行業(yè)禮儀培訓(xùn)
- 退市新規(guī)解讀-上海證券交易所、大同證券
- 教育部中國(guó)特色學(xué)徒制課題:現(xiàn)代職業(yè)教育體系建設(shè)背景下中國(guó)特色學(xué)徒制治理體系與資源配置研究
- 22陳涉世家 司馬遷 公開課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì) 度部編版初中語(yǔ)文九年級(jí)下冊(cè)
- 外墻真石漆施工方案
評(píng)論
0/150
提交評(píng)論