OC 測試題

※ 選擇題(共80題,每題1分)
1、NSString *name = [[NSString alloc]initWithString:@”張三”];
NSLog(@”%d”,[name retainCount]);
上述代碼打印結果是:
答案:(A)
A、-1
B、0
C、1
D、2
2、以下代碼執行後,person對象的retain count是多少:
Person * person = [[Person alloc] init];
[person retain]; [person release];
答案:(B)
A、0
B、1
C、2
D、3
3、聲明一個方法:提供Student對象數組按照學號升序排列的判斷條件:
答案:(A)
A、
-(NSComparisonResult)compareWithNumberForAscendSort:(Student*)otherStudent
B、-(NSInteger)compareWithNumberForAscendSort:(Student*)otherStudent
C、- (BOOL))compareWithNumberForAscendSort:(Student*)otherStudent
D、+(int)compareWithNumberForAscendSort:(Student
4、現有如下集合,能準確刪除“張三”的代碼是:
NSMutableDictionary * peoples=[NSMutableDictionary dictionaryWithObjectsAndKeys:@”張三”,@”左護法”,@”李四”,@”右使”,@”唐sir”,@”老大哥”, nil];
答案:(A)
A、[peoples removeObjectForKey:@”左護法”];
B、[peoples removeObject:@”張三”];
C、[peoples removeObjectAtIndex:0];
D、[peoples removeAllObjects];
5、使用 Objective-C 語言輸出“This is a Objective-C program.”正確的是:
答案:(D)
A、NSLog(@”%s”,This is a Objective-C program.);
B、NSLog(@”%@”,This is a Objective-C program.);
C、NSLog(@”This is a Objective-C program.”,%@);
D、NSLog(@”This is a Objective-C program.”);
6、OC中,所有類的根類是:
答案:(A)
A、NSObject
B、NSDate
C、NSCoding
D、UIView
7、NSDictionary *dict = [NSDictionary dictionaryWithObject:@”a value” forKey:@”aKey”];
NSLog(@”%@”,[dict objectForKey:@”aKey”]);
[dict release];
控制檯中打印的最後一條信息會是:
答案:(C)
A、a value
B、aKey : a value
C、崩潰信息
D、a value : aKey
8、關於集合描述不正確的是:
答案:(A)
A、所有的集合都可以添加元素。
B、集合分爲可變集合、不可變集合。
C、數組、字典、NSSet這三種集合存儲數據的方式不同。
D、所有集合都能保存id類型數據。
9、向Xcode控制檯輸出一個字符串應該用:
答案:(A)
A、NSLog()
B、Printf()
C、NSPrintf()
D、scanf()
10、下面哪些選項是屬性的正確聲明方式:
答案:(C)
A、@property(nonatomic,retain)NSString myString;
B、@property(nonatomic,assign)NSString * myString;
C、@property(nonatomic,assign)int mynumber;
D、@property(nonatomic,retain)int mynumber;
11、對於Objective-C中的方括號“[]”的作用,下列說法錯誤的是:
答案:(D)
A、用於通知某個對象該做什麼
B、方括號內第一項是對象,其餘部分是你需要對象執行的操作
C、在Objective-C中通知對象執行某種操作,稱爲發送消息.(也叫調用方法)
D、方括號中可以爲空
12、在OC中類的接口聲明關鍵字爲:
答案:(B)
A、@import
B、@interface
C、@implemention
D、@protocol
13、
NSMutableString * str = [[NSMutableString alloc] initWithFormat:@”123”];
NSLog(@”str = %p”,str);
[str appendFormat:@”456”];
NSLog(@”str = %p”,str);
上面代碼對字符串str進行拼接後,2次打印的地址是否相同:
答案:(A)
A、相同
B、不同
C、隨機打印
D、有時相同,有時不同
14、OC中的委託最好聲明成:
答案:(B)
A、retain
B、assign
C、copy
D、readonly
15、用哪個關鍵字定義協議中必須實現的方法:
答案:(D)
A、@optional
B、@protected
C、@private
D、不用寫關鍵字
16、面向對象的特性不包括:
答案:(D)
A、封裝
B、繼承
C、多態
D、構造
17、名爲print::的方法有幾個傳入參數:
答案:(C)
A、0
B、1
C、2
D、3
18、OC中與alloc相反的方法是:
答案:(C)
A、release
B、retain
C、dealloc
D、free
19、
NSArray *array = [NSArray arrayWithObjects:@”1”,@”2”,@”3”,@”4”,@”2”, nil];
NSMutableSet *set = [[NSMutableSet alloc]init];
for(NSString *str in array)
{
[set addObject:str];
}
NSLog(@”%lu”,[set count]);
[set release];
控制檯打印的結果是:
答案:(A)
A、4
B、5
C、6
D、7
20、下面哪些選項是類:
答案:(A)
A、導演
B、張藝謀
C、擎天柱
D、輝哥的雪鐵龍
21、Objective-C的代碼文件的後綴爲:
答案:(B)
A、.cpp
B、.m
C、.pl
D、.c
22、在OC中,類中成員變量的可見度(訪問權限)不包括:
答案:(D)
A、@public
B、@protected
C、@private
D、@optional
23、下面關於類概念的描述中,錯誤的是:
答案:(D)
A、類是抽象數據類型的實現
B、類是具有共同行爲的若干對象的統一描述體
C、類是創建對象的模板
D、類就是C語言中的結構體類型
24、在OC中,類的定義包括兩部分(聲明與實現),其中實現部分是:
答案:(C)
A、@import
B、@interface
C、@implementation
D、@protocol
25、經過下列哪種操作後需要使用release方法。
答案:(C)
A、delegate
B、assign
C、retain
D、dealloc
26、下列選項中全部屬於對象的是:
答案:(C)
A、我的白色iPhone4s;Mac Mini
B、狗;老虎
C、鄰居家的貓咪“貝貝”;我的弟弟“張三”
D、保時捷;犀利哥
27、以下說法不正確的是:
答案:(A)
A、nonatomic:提供多線程保護,提高性能,在沒有使用多線程的編程中可以選擇使用。
B、assign:屬性默認值。說明設置器直接進行賦值,針對基礎數據類型 (NSInteger,CGFloat)和C數據類型(int, float, double, char)等等。
C、retain:此屬性只用於obj-c的對象類型,對參數進行release舊值,再retain新值。
D、copy:此屬性只對實現NSCopying協議的對象有效(NSString)。拷貝工作由copy方法執行。
28、Objective-C中包含一個自定義的頭文件應該使用:
答案:(C)
A、#include “”
B、#include<>
C、#import “”
D、#import<>
29、-(id)setName:(NSString )name :(NSString )sex age:(int)age的方法名是:
答案:(C)
A、-(id)setName:(NSString )name :(NSString )sex age:(int)age
B、-setName:name :sex age:age
C、setName: : age:
D、setName:name:age:
30、不會立刻使引用計數器改變的是:
答案:(C)
A、release
B、alloc
C、autorelease
D、retain
31、NSRange是什麼數據類型:
答案:(C)
A、數組
B、字典
C、結構體
D、指針
32、在OC中擴展類的方法的形式不包括:
答案:(B)
A、繼承
B、多態
C、類目
D、延展
33、NSString 和 NSMutableString的關係和區別描述不正確的是:
答案:(D)
A、NSString是不可變字符串,即本身內容不能被改變。
B、NSMutableString是可變字符串,即本身內容可修改。
C、NSMutableString是NSString的子類。
D、NSString和NSMutableString沒有任何關係。
34、類何時調用dealloc方法:
答案:(D)
A、[property release]後
B、[instance release]後
C、[super dealloc]時
D、當引用計數爲0時.
35、關於類目的說法正確的有:
答案:(A)
A、類目可以爲所有的類添加新方法。
B、類目中添加的方法比原類中定義的方法級別要低。
C、定義類目需要使用關鍵字category。
D、類目可以隨意使用。
36、協議與委託的描述不正確的是:
答案:(C)
A、委託是iOS的一種設計模式
B、協議裏的方法默認是必須實現的
C、類接受了多個協議,這些協議寫在父類後面的<>內,多個協議之間用“、”隔開
D、定義協議使用@protocol關鍵字
37、關於KVC的描述正確的是:
答案:(B)
A、KVC是指”Key-Value Observing”
B、是一種間接訪問對象的屬性的機制。
C、只能訪問對象的屬性。
D、當對象的屬性值改變時,我們能收到一個通知。
38、實例變量默認的訪問修飾符是:
答案:(C)
A、@public
B、@private
C、@protected
D、@package
39、Objective-C 語言中類的實例變量如果只可以被本類和其子類訪問,需要下列哪個修飾符:
答案:(C)
A、@public
B、@private
C、@protected
D、@friendly
40、關於NSSet描述正確的有:
答案:(B)
A、NSSet可以存放任何數據類型的數據。
B、NSSet存放數據是無序的。
C、NSSet可以通過下標獲取數據。
D、NSSet存放的數據是有序的。
41、以下說法正確的是:
答案:(C)
A、求數組的內容的個數用length方法
B、字典是根據其位置來索引數據的
C、協議中定義的方法默認是必須實現的
D、定義類目必須要拿到自己類的源代碼
42、@interface Person : NSObject
@property(nonatomic,retain)NSString * name;
@end
上面聲明一個Person類
Person * per = [[Person alloc] init];
per.name = [[NSString alloc] initWithFormat:@”張三”];
NSLog(@”per.name = %d”,[per.name retainCount]);
答案:(D)
A、per.name = -1;
B、per.name = 0;
C、per.name = 1;
D、per.name = 2;
43、聲明一個返回值爲NSArray,並且帶兩個字符串對象的BLOCK類型變量:
答案:(D)
A、NSArray (aBlock)(NSString str,NSString *str2)
B、NSArray ^(aBlock)(NSString str,NSString *str2)
C、NSArray (^aBlock)(NSString * str,NSString *str2)
D、NSArray (^aBlock)(NSString str,NSString *str2)
44、NSRange的成員變量有:
答案:(A)
A、location,length
B、width,height
C、location,height
D、length,width
45、下列代碼正確的輸出結果是:
NSString * urlStr = @”www.lanou3g.com”;
NSRange range = NSMakeRange(4,7);
NSString *prefix = [urlStr substringWithRange:range];
NSLog(@”%@”,prefix);
答案:(B)
A、lan
B、lanou3g
C、www.lan
D、ou3g
46、創建對象時,對象的內存和指向對象的指針分別分配在哪裏:
答案:(A)
A、堆區,棧區
B、常量區,堆區
C、全局區,棧區
D、棧區,堆區
47、以下對類的描述不正確的是:
答案:(C)
A、類的接口部分可以包含實例變量、屬性和方法
B、可以把聲明和實現都放到.h文件中
C、一對文件(Person.h Person.m)只能定義一個類
D、類比較抽象,對象比較具體
48、現要求聲明一個集合,並將字符串添加到集合中,編寫了如下代碼,其中錯誤的是第幾行:
NSString * aString = [[NSString alloc] initWithString:@”iLanou”]; (1)
[aString autorelease]; (2)
NSArray * arr = [NSArray array]; (3)
[arr addObject:aString]; (4)
NSLog(@”string = %lu”,[aString retainCount]);
答案:(C)
A、(1)
B、(2)
C、(3)
D、(4)
49、有一個類Student,要求實現:定義一個實例初始化方法,初始化方法需要傳入名字和性別:
答案:(B)
A、
-(id)initWithName:(NSString )name sex:(NSString )sex{
if (self){
self.name = name;
self.sex = sex;
}
return self;
}
B、
-(id)initWithName:(NSString )name sex:(NSString )sex{
if (self = [super init]) {
self.name = name;
self.sex = sex;
}
return self;
}
C、
-(id)initWithName:(NSString )name sex:(NSString )sex{
if (!self) {
self.name = name;
self.sex = sex;
}
return self;
}
D、
-(id)initWithName:(NSString )name sex:(NSString )sex{
if (self = [super init]) {
self.name = name;
self.sex = sex;
}
}
50、下面哪個選項無內存問題的:
答案:(C)
A、
-(NSString *)description{
NSString * str = [[NSString alloc] initWithFormat:@”description”];
return str;
}
B、
-(NSString *)description{
NSString * str = [[NSString alloc] initWithFormat:@”description”];
[str release];
return str;
}
C、
-(NSString *)description{
NSString * str = [[NSString alloc] initWithFormat:@”description”];
[str autorelease];
return str;
}
D、
-(NSString *)description{
NSString * str = [NSString stringWithFormat:@”description”];
return [str autorelease];
}
51、簡單類型的成員比如:int類型成員在使用@property()時,括號中應使用:
答案:(A)
A、assign
B、copy
C、retain
D、auto
52、內存管理的關鍵字描述錯誤的是:
答案:(C)
A、retaincount是指對象的引用計數。
B、retain關鍵字可以增大對象的引用計數。
C、release可以減小對象的引用計數,但autorelease不可以
D、dealloc方法不能直接調用
53、關於協議描述不正確的是:
答案:(D)
A、協議分正式和非正式協議。
B、在要求確認協議的類必須實現協議中的方法時,可以使用@required。
C、一個協議可以被多個類確認。
D、協議中聲明的方法,默認是@optional的。
54、對於語句NSString* testObject = [[NSData alloc] init];關於testObject是什麼類型對象,以下說法正確的是:
答案:(A)
A、編譯時,NSString類型,運行時,NSData類型
B、編譯與運行時,都是NSData類型
C、編譯與運行時,都是NSString類型
D、運行時,NSString類型,編譯時,NSData類型
55、現有Person類聲明和Person的子類Student,代碼如下:
@interface Person : NSObject
-(void) walk;
@end
@implementation Person
-(void) walk
{
NSLog(@”Person is walking…”);
}
@end
@interface Student : Person
-(void) studentWalk;
@end
@implementation Student
-(void) studentWalk
{
(1)
}
end
在下列選項中,那些代碼可以填在(1)處實現調用Person類中的walk方法,並輸出“Person is walking…”:
答案:(C)
A、walk();
B、super.walk;
C、[self walk];
D、self.walk();
56、下面描述正確的選項是:
答案:(B)
A、當計數器爲1時,dealloc方法由系統自動調用
B、一個對象在引用計數變爲0時,會調用自己的dealloc方法
C、在dealloc方法裏,應該在[super dealloc]後釋放本類所擁有的對象
D、開啓ARC後,可以重載dealloc,必須在dealloc裏寫 [super dealloc]方法
57、下列代碼:
@property(nonatomic,assign)idmyObject;
答案:(C)
A、是說myObject是Painting分類的一部分
B、是說myObject遵從於Painting分類
C、是說myObject遵從於Painting協議
D、不是合法的Objective-C語法格式
58、關於類目、延展的描述錯誤的是:
答案:(B)
A、延展主要爲類提供“私有”方法
B、類目、延展不但能爲類添加方法,而且都可以添加新的實例變量
C、無論能否拿到類的源碼,類目都可以對其擴展
D、類目和延展聲明語法不同
59、NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
[formatter setAMSymbol:@”AM”];
[formatter setPMSymbol:@”PM”];
[formatter setDateFormat:@”YY-MM-dd hh:mm:ss aaa”];
NSString * currentDate = [formatter stringFromDate:[NSDate date]];
NSLog(@”%@”,currentDate);
打印結果是:
答案:(D)
A、2012-05-31 17:45:04 PM
B、12-05-31 17:45:04
C、2012-05-31 17:45:04
D、12-05-31 05:45:04 PM
60、下面哪個選項對集合的描述是正確的:
答案:(D)
A、集合內不能存不同類型的對象
B、集合內可以存整型的數
C、字典內鍵值可以相同,但是每個鍵值對應的對象必須不同
D、集合內只能存對象
61、自定義一個Person類,下面哪個選項是規範的便利構造器聲明方式:
答案:(D)
A、-(id)personWithName:(NSString *)theName;
B、-(id)personwithName:(NSString *)theName;
C、+(id)personwithName:(NSString *)theName;
D、+(id)personWithName:(NSString *)theName;
62、下列哪個選項不能作爲property的可選屬性:
答案:(A)
A、alloc
B、retain
C、atomic
D、strong
63、下列有效的鍵路徑是:
答案:(B)
A、[foo valueForKeyPath:@”1SomeMember”]
B、[foo valueForKeyPath:@”someMember.someAttribute”]
C、[foo valueForKeyPath:@”SOMEMEMBER@someAttibute”]
D、[foo valueForKeyPath:@”some Member”]
64、下面程序段的輸出結果是什麼:
NSMutableArray * arr1 = [[NSMutableArray alloc] initWithObjects:@”1”,@”2”,@”3”, nil];
[arr1 addObject:@”0”];
[arr1 replaceObjectAtIndex:2 withObject:@”3”];
NSLog(@”%@”,arr1);
答案:(B)
A、0,1,2,3
B、1,2,3,0
C、1,3,3,0
D、0,3,2,3
65、讀代碼:
NSString *str=@”hello”;
NSMutableSet *mt=[NSMutableSet setWithObjects:str, nil];
[mt addObject:str];
NSLog(@”%lu”,mt.count);
結果是:
答案:(A)
A、1
B、2
C、3
D、4
66、查看下列代碼,能正確輸出number的選項是:
@interface MyClass : NSObject
{
int number;
}
+(void) printNumber;
@end
@implementation MyClass
+(void) printNumber
{
number =10;
NSLog(@”“%d”“,number);
}
@end
答案:(D)
A、[MyClass printNumber];
B、MyClass * obj = [[MyClass alloc] init]; [obj printNumber];
C、printNumber();
D、編譯錯誤,無法執行。
67、下面程序段的輸出結果是什麼:
NSMutableDictionary * dic = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@”1”,@”2”,@”2”,@”3”,@”3”,@”4”, nil];
NSString *str = @”3”;
int a = 3;
[dic setObject:a forKey:str];
NSLog(@”%@”,dic);
答案:(D)
A、2=1 3=3 4=3
B、1=2 3=3 3=4
C、1=2 3=3 3=3
D、程序崩潰
68、寫出下面程序段的輸出結果:
NSString * aString = [[NSString alloc] initWithString:@”123”];
[aString autorelease];
NSMutableArray * arr = [NSMutableArray array];
[arr addObject:aString];
NSLog(@”string = %lu”,[aString retainCount]);
答案:(C)
A、1
B、0
C、整型最大值
D、2
69、讀代碼
NSString * str =[[NSString alloc]initWithFormat:@”%@”,@”iLanou123ios”];
NSString * str1=[str substringToIndex:3];
NSString * str2=[str substringWithRange:NSMakeRange(6, 3)];
NSString * newStr=[str1 stringByAppendingString:str2];
NSLog(@”newStr=%@”,newStr);
則newStr的值爲:
答案:(D)
A、iLanou
B、iL123
C、iLaios
D、iLa123
70、下面程序段的輸出結果是什麼:
NSString * aString = [[NSString alloc] initWithFormat:@”123”];
NSLog(@”%d”,aString.retainCount);
aString = @”456”;
NSLog(@”%d”,aString.retainCount);
[aString release];
aString = @”789”;
NSLog(@”%d”,aString.retainCount);
答案:(D)
A、1,2,1
B、1,1,0
C、1,-1,0
D、1,-1,-1
71、下面程序段的輸出結果是什麼:
NSString * aString = [[NSString alloc] initWithString:@”hehe”];
[aString autorelease];
NSMutableArray *arr = [NSMutableArray array];
[arr addObject:aString];
NSLog(@”string = %d”,[aString retainCount]);
答案:(A)
A、string = -1
B、string = 0
C、string = 1
D、string = 2
72、NSMutableDictionary字典中刪除對象可以使用下面那個方法:
答案:(D)
A、filteredArrayUsingPredicate:
B、arrayByAddingObject:
C、initWithCapacity:
D、setValue:forKey:
73、下面程序段的輸出結果是什麼:
int a = 10;
NSNumber *b = [[NSNumber alloc] initWithInt:a];
NSLog(@”%d”, a+++b);
答案:(D)
A、21
B、20
C、30
D、編譯錯誤
74、下列哪個操作不會引起引用計數(retaincount)的變化是:
答案:(B)
A、NSString *str1 = [[NSString stringWithFormat:@”hehe”];
B、int a=1;
C、NSMutableData *data1 = [NSMutableData allocWithZone:data2];
D、NSArray *arr1 = [[NSArray alloc]initWithArray:arr2];
75、對於下面代碼說法正確的是:
@property (copy,nonatomic,readonly)NSString * calValue;
答案:(D)
A、沒有getter方法,當對calvalue賦值時,將產生一個NSString副本。
B、此屬性可保證多線程安全。
C、此屬性在合成時可以生成設置器方法。
D、此屬性只能讀取,不能賦值。
76、NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSString *str = [NSString stringWithFormat:@”abc”];
NSString *str2 = [str retain];
[pool release];
NSLog(@”str retainCount = %d,str2 retainCount = %d”,[str retainCount],[str2 retainCount]);
上述代碼打印結果正確的是:
答案:(C)
A、str retainCount = 2,str2 retainCount = 2
B、str retainCount = 0,str2 retainCount = 1
C、str retainCount = 1,str2 retainCount = 1
D、str retainCount = 2,str2 retainCount = 0
77、下面程序段的輸出結果是什麼:
NSMutableDictionary * dic = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@”1”,@”2”,@”1”,@”3”,@”1”,@”4”, nil];
NSArray *arr1 = [[NSArray alloc] initWithArray:[dic allKeys]];
NSArray *arr2 = [[NSArray alloc] initWithArray:[dic allValues]];
NSMutableDictionary *dic2 = [[NSMutableDictionary alloc] initWithObjects:arr1 forKeys:arr2];
NSLog(@”%@”,dic2);
答案:(C)
A、1=2 1=3 1=4
B、2=1 3=1 4=1
C、1=4
D、4=1
78、關於內存管理的描述錯誤的是:
答案:(D)
A、alloc與dealloc是對應的,前者分配內存,後者回收內存
B、retain與release是對應的,前者retainCount加1,後者retainCount減1
C、當對象的retainCount爲0時,dealloc會被系統調用
D、iOS5之後的ARC指的是系統垃圾回收
79、下面程序段的輸出結果是什麼:
NSMutableDictionary * dic = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@”1”,@”2”,@”2”,@”3”,@”3”,@”4”, nil];
[dic setObject:@”1” forKey:@”3”];
[dic removeObjectForKey:@”1”];
NSLog(@”%@”,dic);
答案:(C)
A、1=3 2=3 3=4
B、1=2 1=3 3=4
C、2=1 3=1 4=3
D、3=1 3=2 4=3
80、下列選項中不能正常爲emp的name屬性賦值的代碼有:
答案:(B)
A、emp.name=@”李嘉誠”;
B、emp->name=@”李開復”;
C、[emp setValue:@”柳傳志” forKey:@”name”];
D、[emp setName:@”黃光裕”];
※ 判斷題(共10題,每題2分)
1、爲了保證程序不產生額外的內存開銷,當對象不再被需要以後,應當被立即銷燬。
答案:(T)
2、OC中如果向空指針nil發送消息,程序會崩潰的。
答案:(F)
3、方法需要傳遞多個參數時,參數以逗號分隔。
答案:(F)
4、在類方法中可以使用實例變量。
答案:(F)
5、協議中定義的方法默認是必須實現的。
答案:(T)
6、實例對象都是通過調用類方法生成的。
答案:(T)
7、在OC中,數組保存的只能是對象。
答案:(T)
8、在dealloc方法中對變量的釋放順序與初始化的順序相同。
答案:(F)
9、當類別中的方法與原始類方法名稱衝突時,類別具有更高的優先級。
答案:(T)
10、Objective-C 可以多重繼承。
答案:(F)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章