前几天的考试题,让你们也尝下酸爽的感觉。
1、不会立刻使引用计数器改变的是:
A、release
B、alloc
C、autorelease
D、retain
2、在OC中,类中成员变量的可见度(访问权限)不包括:
A、@public
B、@protected
C、@private
D、@optional
3、使用 Objective-C语言输出“This is a Objective-C program.”正确的是:
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.");
4、下列说法中错误的是:
A、Objective-C不用"函数调用",而用互相传递讯息.
B、Objective-C一个完整的类分为interface和implementation两块
C、Objective-C对象使用new分配内存,用delete释放
D、Objective-C协议分为非正式协议和正式协议
5、声明一个方法:提供Student对象数组按照学号升序排列的判断条件:
A、-(NSComparisonResult)compareWithNumberForAscendSort:(Student*)otherStudent
B、-(NSInteger)compareWithNumberForAscendSort:(Student*)otherStudent
C、- (BOOL)compareWithNumberForAscendSort:(Student*)otherStudent
D、+(int)compareWithNumberForAscendSort:(Student
6、下面哪些选项是类:
A、导演
B、张艺谋
C、擎天柱
D、辉哥的雪铁龙
7、经过下列哪种操作后需要使用release方法。
A、delegate
B、assign
C、retain
D、dealloc
8、在OC中,类的定义包括两部分(声明与实现),其中实现部分是:
A、@import
B、@interface
C、@implementation
D、@protocol
9、以下说法不正确的是:
A、nonatomic:提供多线程保护,提高性能,在没有使用多线程的编程中可以选择使用。
B、assign:属性默认值。说明设置器直接进行赋值,针对基础数据类型(NSInteger,CGFloat)和C数据类型(int,float,double,char)等等。
C、retain:此属性只用于obj-c的对象类型,对参数进行release旧值,再retain新值。
D、copy:此属性只对实现NSCopying协议的对象有效(NSString)。拷贝工作由copy方法执行。
10、-(id)setName:(NSString *)name :(NSString *)sex age:(int)age的方法名是:
A、-(id)setName:(NSString *)name :(NSString *)sex age:(int)age
B、-setName:name :sex age:age
C、setName: : age:
D、setName:name:age:
11、NSDictionary *dict = [NSDictionary dictionaryWithObject:@"a value" forKey:@"aKey"];
NSLog(@"%@",[dict objectForKey:@"aKey"]);
[dict release];
控制台中打印的最后一条信息会是:
A、a value
B、aKey : a value
C、崩溃信息
D、a value : aKey
12、下列哪个选项不需要release方法:
A、[[NSString alloc]init];
B、[[NSString alloc] initWithString:@”hehe”];
C、[[NSArray arrayWithArray: arr1];
D、[[NSMutableDictionary alloc] init];
13、关于类和对象的概念,下列属于对象的是:
A、奥迪A6
B、保龄球
C、世界冠军刘翔
D、西红柿
14、下列哪个选项与@synthesize配合使用:
A、@end
B、@interface
C、@implementation
D、@property
15、在OC中类的接口声明关键字为:
A、@import
B、@interface
C、@implemention
D、@protocol
16、名为print::的方法有几个传入参数:
A、0
B、1
C、2
D、3
17、OC中布尔(BOOL)类型的变量的值只有:
A、1/0
B、YES/NO
C、true/false
D、1/-1
18、下面关于类概念的描述中,错误的是:
A、类是抽象数据类型的实现
B、类是具有共同行为的若干对象的统一描述体
C、类是创建对象的模板
D、类就是C语言中的结构体类型
19、NSString *name = [[NSString alloc]initWithString:@"张三"];
NSLog(@"%d",[name retainCount]);
上述代码打印结果是:
A、-1
B、0
C、1
D、2
20、以下代码执行后,person对象的retain count是多少:
Person * person = [[Person alloc] init];
[person retain]; [person release];
A、0
B、1
C、2
D、3
21、Objective-C中包含一个自定义的头文件应该使用:
A、#include""
B、#include<>
C、#import""
D、#import<>
22、面向对象的特性不包括:
A、封装
B、继承
C、多态
D、构造
23、关于集合描述不正确的是:
A、所有的集合都可以添加元素。
B、集合分为可变集合、不可变集合。
C、数组、字典、NSSet这三种集合存储数据的方式不同。
D、所有集合都能保存id类型数据。
24、现有如下集合,能准确删除“张三”的代码是:
NSMutableDictionary * peoples=[NSMutableDictionary dictionaryWithObjectsAndKeys:@"张三",@"左护法",@"李四",@"右使",@"唐sir",@"老大哥",nil];
A、[peoples removeObjectForKey:@"左护法"];
B、[peoples removeObject:@"张三"];
C、[peoples removeObjectAtIndex:0];
D、[peoples removeAllObjects];
25、下面哪些选项是属性的正确声明方式:
A、@property(nonatomic,retain)NSString myString;
B、@property(nonatomic,assign)NSString * myString;
C、@property(nonatomic,assign)int mynumber;
D、@property(nonatomic,retain)int mynumber;
26、NSMutableString * str = [[NSMutableString alloc] initWithFormat:@"123"];
NSLog(@"str = %p",str);
[str appendFormat:@"456"];
NSLog(@"str = %p",str);
上面代码对字符串str进行拼接后,2次打印的地址是否相同:
A、相同
B、不同
C、随机打印
D、有时相同,有时不同
27、用哪个关键字定义协议中必须实现的方法:
A、@optional
B、@protected
C、@private
D、不用写关键字
28、NSArray *array = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"2",nil];
NSMutableSet *set = [[NSMutableSet alloc]init];
for(NSString *strin array)
{
[set addObject:str];
}
NSLog(@"%lu",[set count]);
[set release];
控制台打印的结果是:
A、4
B、5
C、6
D、7
29、向Xcode控制台输出一个字符串应该用:
A、NSLog()
B、Printf()
C、NSPrintf()
D、scanf()
30、对于Objective-C中的方括号“[]”的作用,下列说法错误的是:
A、用于通知某个对象该做什么
B、方括号内第一项是对象,其余部分是你需要对象执行的操作
C、在Objective-C中通知对象执行某种操作,称为发送消息.(也叫调用方法)
D、方括号中可以为空
31、对于语句NSString* testObject = [[NSData alloc] init];关于testObject是什么类型对象,以下说法正确的是:
A、编译时,NSString类型,运行时,NSData类型
B、编译与运行时,都是NSData类型
C、编译与运行时,都是NSString类型
D、运行时,NSString类型,编译时,NSData类型
32、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);
打印结果是:
A、2012-05-3117:45:04 PM
B、12-05-3117:45:04
C、2012-05-3117:45:04
D、12-05-3105:45:04 PM
33、下列代码:
@property(nonatomic,assign)id<Painting>myObject;
A、是说myObject是Painting分类的一部分
B、是说myObject遵从于Painting分类
C、是说myObject遵从于Painting协议
D、不是合法的Objective-C语法格式
34、以下说法正确的是:
A、求数组的内容的个数用length方法
B、字典是根据其位置来索引数据的
C、协议中定义的方法默认是必须实现的
D、定义类目必须要拿到自己类的源代码
35、创建对象时,对象的内存和指向对象的指针分别分配在哪里:
A、堆区,栈区
B、常量区,堆区
C、全局区,栈区
D、栈区,堆区
36、简单类型的成员比如:int类型成员在使用@property()时,括号中应使用:
A、assign
B、copy
C、retain
D、auto
37、下列有效的键路径是:
A、[foo valueForKeyPath:@”1SomeMember”]
B、[foo valueForKeyPath:@”someMember.someAttribute”]
C、[foo valueForKeyPath:@”SOMEMEMBER@someAttibute”]
D、[foo valueForKeyPath:@”some Member”]
38、协议与委托的描述不正确的是:
A、委托是iOS的一种设计模式
B、协议里的方法默认是必须实现的
C、类接受了多个协议,这些协议写在父类后面的<>内,多个协议之间用“、”隔开
D、定义协议使用@protocol关键字
39、下面哪个选项无内存问题的:
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];
}
40、关于类目的说法正确的有:
A、类目可以为所有的类添加新方法。
B、类目中添加的方法比原类中定义的方法级别要低。
C、定义类目需要使用关键字category。
D、类目可以随意使用。
41、@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]);
A、per.name = -1;
B、per.name =0;
C、per.name =1;
D、per.name =2;
42、自定义一个Person类,下面哪个选项是规范的便利构造器声明方式:
A、-(id)personWithName:(NSString *)theName;
B、-(id)personwithName:(NSString *)theName;
C、+(id)personwithName:(NSString *)theName;
D、+(id)personWithName:(NSString *)theName;
43、关于KVC的描述正确的是:
A、KVC是指“键-值-编码”。
B、是一种直接访问对象的属性的机制。
C、只能访问对象的属性。
D、当对象的属性值改变时,我们能收到一个通知。
44、类何时调用dealloc方法:
A、[property release]后
B、[instance release]后
C、[super dealloc]时
D、当引用计数为0时.
45、NSString和 NSMutableString的关系和区别描述不正确的是:
A、NSString是不可变字符串,即本身内容不能被改变。
B、NSMutableString是可变字符串,即本身内容可修改。
C、NSMutableString是NSString的子类。
D、NSString和NSMutableString没有任何关系。
46、现有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…”:
A、walk();
B、super.walk;
C、[self walk];
D、self.walk();
47、关于协议描述不正确的是:
A、协议分正式和非正式协议。
B、在要求确认协议的类必须实现协议中的方法时,可以使用@required。
C、一个协议可以被多个类确认。
D、协议中声明的方法,默认是@optional的。
48、关于NSSet描述正确的有:
A、NSSet可以存放任何数据类型的数据。
B、NSSet存放数据是无序的。
C、NSSet可以通过下标获取数据。
D、NSSet存放的数据是有序的。
49、以下对类的描述不正确的是:
A、类的接口部分可以包含实例变量、属性和方法
B、可以把声明和实现都放到.h文件中
C、一对文件(Person.h Person.m)只能定义一个类
D、类比较抽象,对象比较具体
50、Objective-C语言中类的实例变量如果只可以被本类和其子类访问,需要下列哪个修饰符:
A、@public
B、@private
C、@protected
D、@friendly
51、现有自定义类Student,下列选项中Student类的便利构造器编写正确的是:
A、
-(id) initWithName:(NSString *) newName{
Student * stu = [[Student alloc] init];
stu.Name = newName;
return stu;
}
B、
+(id) studentWithName:(NSString *) newName{
Student * stu = [[Student alloc] init];
stu.Name = newName;
return stu;
}
C、
+(id) studentWithName:(NSString *) newName{
Student * stu = [[Student alloc] init];
stu.Name = newName;
[stu release];
return stu;
}
D、
+(id) studentWithName:(NSString *) newName{
Student * stu = [[Student alloc] init];
stu.Name = newName;
[stu autorelease];
return stu;
}
52、下面程序段的输出结果是什么:
NSMutableArray * arr1 = [[NSMutableArray alloc] initWithObjects:@"1",@"2",@"3",nil];
[arr1 addObject:@"0"];
[arr1 replaceObjectAtIndex:2 withObject:@"3"];
NSLog(@"%@",arr1);
A、0,1,2,3
B、1,2,3,0
C、1,3,3,0
D、0,3,2,3
53、NSRange的成员变量有:
A、location,length
B、width,height
C、location,height
D、length,width
54、下列代码正确的输出结果是:
NSString * urlStr =@"www.lanou3g.com";
NSRange range = NSMakeRange(4,7);
NSString *prefix = [urlStr substringWithRange:range];
NSLog(@"%@",prefix);
A、lan
B、lanou3g
C、www.lan
D、ou3g
55、下面哪个选项对集合的描述是正确的:
A、集合内不能存不同类型的对象
B、集合内可以存整型的数
C、字典内键值可以相同,但是每个键值对应的对象必须不同
D、集合内只能存对象
56、关于KVC的描述正确的是:
A、KVC是指"Key-Value Observing"
B、是一种间接访问对象的属性的机制。
C、只能访问对象的属性。
D、当对象的属性值改变时,我们能收到一个通知。
57、在OC中扩展类的方法的形式不包括:
A、继承
B、多态
C、类目
D、延展
58、关于类目、延展的描述错误的是:
A、延展主要为类提供“私有”方法
B、类目、延展不但能为类添加方法,而且都可以添加新的实例变量
C、无论能否拿到类的源码,类目都可以对其扩展
D、类目和延展声明语法不同
59、现要求声明一个集合,并将字符串添加到集合中,编写了如下代码,其中错误的是第几行:
NSString * aString = [[NSString alloc] initWithString:@"iLanou"];(1)
[aString autorelease];(2)
NSArray * arr = [NSArray array];(3)
[arr addObject:aString];(4)
NSLog(@"string = %lu",[aString retainCount]);
A、(1)
B、(2)
C、(3)
D、(4)
60、有一个类Student,要求实现:定义一个实例初始化方法,初始化方法需要传入名字和性别:
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;
}
}
61、内存管理的关键字描述错误的是:
A、retaincount是指对象的引用计数。
B、retain关键字可以增大对象的引用计数。
C、release可以减小对象的引用计数,但autorelease不可以
D、dealloc方法不能直接调用
62、读代码:
NSString *str=@"hello";
NSMutableSet *mt=[NSMutableSet setWithObjects:str,nil];
[mt addObject:str];
NSLog(@"%lu",mt.count);
结果是:
A、1
B、2
C、3
D、4
63、实例变量默认的访问修饰符是:
A、@public
B、@private
C、@protected
D、@package
64、下面程序段的输出结果是什么:
NSMutableDictionary * dic = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"1",@"2",@"2",@"3",@"3",@"4",nil];
[dic removeObjectForKey:@"3"];
NSLog(@"%@",dic);
A、1=23=4
B、1=22=3
C、2=14=3
D、2=13=2
65、NSRange是什么数据类型:
A、数组
B、字典
C、结构体
D、指针
66、下面程序段的输出结果是什么:
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);
A、2=13=34=3
B、1=23=33=4
C、1=23=33=3
D、程序崩溃
67、下面程序段的输出结果是什么:
NSString * aString = [[NSString alloc] initWithFormat:@"123"];
NSLog(@"%d",aString.retainCount);
aString =@"456";
NSLog(@"%d",aString.retainCount);
[aString release];
aString =@"789";
NSLog(@"%d",aString.retainCount);
A、1,2,1
B、1,1,0
C、1,-1,0
D、1,-1,-1
68、读代码
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的值为:
A、iLanou
B、iL123
C、iLaios
D、iLa123
69、关于内存管理的描述错误的是:
A、alloc与dealloc是对应的,前者分配内存,后者回收内存
B、retain与release是对应的,前者retainCount加1,后者retainCount减1
C、当对象的retainCount为0时,dealloc会被系统调用
D、iOS5之后的ARC指的是系统垃圾回收
70、下面程序段的输出结果是什么:
int a =10;
NSNumber *b = [[NSNumber alloc] initWithInt:a];
NSLog(@"%d", a+++b);
A、21
B、20
C、30
D、编译错误
71、对于下面代码说法正确的是:
@property (copy,nonatomic,readonly)NSString * calValue;
A、没有getter方法,当对calvalue赋值时,将产生一个NSString副本。
B、此属性可保证多线程安全。
C、此属性在合成时可以生成设置器方法。
D、此属性只能读取,不能赋值。
72、NSMutableDictionary字典中删除对象可以使用下面那个方法:
A、filteredArrayUsingPredicate:
B、arrayByAddingObject:
C、initWithCapacity:
D、setValue:forKey:
73、将@”2B青年”替换成@”文艺青年”的代码是:
A、[@”2B青年” stringByAppendingOfString:@”2B” withString:@”文艺”];
B、NSRange range = {0,2}; [@”2B青年” stringByReplacingCharactersInRange:range withString:@”文艺”];
C、NSRange range = {1,2};[@”2B青年” stringByReplacingCharactersInRange:range withString:@”文艺”];
D、[@”2B青年” stringByReplacingOccurrencesOfString:@”文艺” withString:@”2B”];
74、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]);
上述代码打印结果正确的是:
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
75、下面程序段的输出结果是什么:
NSString * aString = [[NSString alloc] initWithString:@"hehe"];
[aString autorelease];
NSMutableArray *arr = [NSMutableArray array];
[arr addObject:aString];
NSLog(@"string = %d",[aString retainCount]);
A、string = -1
B、string =0
C、string =1
D、string =2
76、查看下列代码,能正确输出number的选项是:
@interface MyClass : NSObject
{
int number;
}
+(void) printNumber;
@end
@implementation MyClass
+(void) printNumber
{
number =10;
NSLog(@""%d"",number);
}
@end
A、[MyClass printNumber];
B、MyClass * obj = [[MyClass alloc] init]; [obj printNumber];
C、printNumber();
D、编译错误,无法执行。
77、下列哪个操作不会引起引用计数(retaincount)的变化是:
A、NSString *str1 = [[NSString stringWithFormat:@"hehe"];
B、int a=1;
C、NSMutableData *data1 = [NSMutableData allocWithZone:data2];
D、NSArray *arr1 = [[NSArray alloc]initWithArray:arr2];
78、下列选项中不能正常为emp的name属性赋值的代码有:
A、emp.name=@"李嘉诚";
B、emp->name=@"李开复";
C、[emp setValue:@"柳传志" forKey:@"name"];
D、[emp setName:@"黄光裕"];
79、下面程序段的输出结果是什么:
NSMutableDictionary * dic = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"1",@"2",@"2",@"3",@"3",@"4",nil];
[dic setObject:@"1" forKey:@"3"];
[dic removeObjectForKey:@"1"];
NSLog(@"%@",dic);
A、1=32=33=4
B、1=21=33=4
C、2=13=14=3
D、3=13=24=3
80、NSMutableDictionary * dic = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"1",@"2",@"2",@"3",@"3",@"4",nil];
NSArray *arr = [[NSArray alloc] initWithArray:[dic allKeys]];
NSString *str = [[NSString alloc] initWithFormat:[arr objectAtIndex:0],[arr objectAtIndex:1],[arr objectAtIndex:2]];
NSLog(@"%@",str);
结果是:
A、123
B、234
C、2
D、3
答案过几天发。