Objective-C考试-OC考试题-选择题-判断题
Objective-C考试- 蓝鸥3G-OC考试题
※ 选择题(共40题,每题2分)
1、NSString *str = @“lanou”;
[str retain];
[str autorelease];
此时str的引用计数是________。 答案:(D)
A、0
B、1
C、2
D、以上都不是
2、@public修饰过的实例变量,怎样使用?答案:(A)
A、通过指向操作符访问
B、通过点访问
C、通过setter、getter方法访问
D、以上都不对
3、下列哪个不是面向对象的编程语言。答案:(C)
A、C++
B、JAVA
C、C语言
D、OC
4、以下说法不正确的是答案:(A)
A、nonatomic:提供多线程保护,提高性能,在没有使用多线程的编程中可以选择使用
B、assign:属性默认值。说明设置器直接进行赋值,针对基础数据类型 (NSInteger,CGFloat)和C数据类型(int, float, double, char)等等
C、retain:此属性只用于对象类型,将成员对象先进行release,然后将参数retain后赋值给成员对象
D、copy:此属性只对实现NSCopying协议的对象有效(NSString)。拷贝工作由copy方法执行
5、@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
6、对[[NSDictionary alloc] initWithObjectsAndKeys:@"a",@"1",@"b",@"2",@"c",@"3", nil]描述正确的是答案:(B)
A、该字典有6个元素
B、该字典有3个元素
C、value值为@"1" @"2" @"3"
D、创建不可变字典
7、下列方法中,可以把字符串的首字母转换成为大写的是: 答案:(A)
A、- (NSString *)capitalizedString
B、- (id)objectAtIndex:(NSUInteger)index
C、- (NSString*)lowercaseString
D、[foo valueForKeyPath:@”some Member”]
8、NSDictionary * dic1 = [[NSDictionary alloc] initWithObjectsAndKeys:@"张三",@"name",@"女",@"sex", nil];
NSLog(@"name : %@",[dic1 objectForKey:@“name"]);
打印正确的是:答案:(A)
A、name : 张三
B、sex :女
C、张三:name
D、女:sex
9、下列方法中是比较两个字符串内容的方法是:答案:(A)
A、- (BOOL)isEqualToString:(NSString *)aString;
B、- (NSString *)capitalizedString
C、+ (instancetype)arrayWithArray:(NSArray *)array
D、- (NSString *)uppercaseString
10、NSMutableArray *array = [NSMutableArray array];
Person *p5 = [[Person alloc] init];
NSLog(@"%ld",[p5 retainCount]);
[array addObject:p5];
NSLog(@"%ld",[p5 retainCount]);
NSLog(@“%ld”,[array retainCount]);
打印结果是_________。答案:(B)
A、1,1,1
B、1,2,1
C、1,2,0
D、1,0,0
11、@interface Student:NSObject{
NSString * _name;
NSString * _sex;
NSInteger _age;
}
@end
#import “Student.h”
@@interface CollegeStudent:Student{
NSString * _major;
}
@end
关于以上关系,叙述错误的是答案:(C)
A、学生类继承根类NSObject,大学生类继承学生类
B、大学生类除了自己的特征和行为,还继承了学生类的特征和行为
C、继承无传递性
D、子类可重写父类方法
12、NSDictionary * dic1 = [[NSDictionary alloc] initWithObjectsAndKeys:@"张三",@"name",@"女",@"sex", nil];
NSLog(@“%@“,dic1);
控制台打印的是:答案:(C)
A、张三 = name, 女 = sex
B、name= 张三; sex = 女
C、name = "U5f20U4e09";sex = "U5973";name = "U5f20U4e09"; sex = 女
D、
13、关于- (NSComparisonResult)compare:(NSString *)string 说法正确的是: 答案:(C)
A、比较的是两个字符串的大小
B、比较的是两个字符串是否相等
C、这个方法可以用来比较两个字符串内容的大小比较方法: 逐个字符地进行比较ASCII值,返回NSComparisonResult作为比较结果
D、这是字符串拼接的方法
14、Objective-C 语言中类的实例变量如果只可以被本类和其子类访问,需要下列哪个修饰符?答案:(C)
A、@public
B、@private
C、@protected
D、@friendly
15、有如下一个类定义 @interface MyClass:NSObject
@property(nonatomic,retain)NSString *str;
@end
@implementation MyClass
@synthesize str = str;
@end
下面setter方法书写正确的是()答案:(C)
A、-(void)setStr:(NSString *)newStr
{
str = newStr;
}
B、-(void)setStr:(NSString *)newStr
{
[str release];
str = [newStr retain];
}
C、-(void)setStr:(NSString *)newStr
{
if(str != newStr)
{
[str release];
str = [newStr retain];
}
}
D、-(void)setStr:(NSString *)newStr
{
[newStr retain]
[str release] = newStr;
}
16、OC中,()为没有源代码的类添加新方法答案:(B)
A、继承
B、类别
C、复用
D、重载
17、-(void)setName:(NSString *)name
{
if (_name!=name) { //第一行
[_name release];
_name = [name retain];
}
}
name的setter方法写法第几行有问题_______。答案:(D)
A、1
B、2
C、3
D、没有错误
18、下面程序段的输出结果是什么: NSArray * arr1 = [[NSArray alloc] initWithObjects:@"1",@"2",@"3", nil]; NSString *str; str = [arr1 objectAtIndex:2]; NSLog(@“%@",str);
答案:(C)
A、1
B、2
C、3
D、程序崩溃
19、下列哪个不是OC语言的特点。答案:(B)
A、允许在OC中使用C语言源代码,编译器兼容C语言程序
B、是一种面向过程的编程语言
C、包含一个运行时系统
D、类库丰富
20、NSString *str = @“lanou”;
[str retain];
NSLog(@“%lu”,str.retainCount);
此处打印出来的值是多少答案:(A)
A、ULONG_MAX
B、1
C、2
D、-1
21、以下说法错误的是_________。答案:(D)
A、[NSDate date]能得到北京时间
B、开启ARC后,可以重载dealloc,必须在dealloc里写 [super dealloc]方法
C、内存管理的管理范围:所有数据类型
D、以上都不对
22、下列说法正确的是:答案:(C)
A、求数组的内容个数用length方法
B、字典是根据其位置来索引数据的
C、协议中定义的方法默认是必须实现的
D、字符串只有NSString不可变字符串这一种
23、对于语句NSString* testObject = [[NSData alloc] init];关于testObject是什么类型对象,以下说法正确的是: 答案:(A)
A、编译时,NSString类型,运行时,NSData类型
B、编译与运行时,都是NSData类型
C、编译与运行时,都是NSString类型
D、运行时,NSString类型,编译时,NSData类型
24、以下说法错误的是_________。答案:(D)
A、copy标记后,开辟另一块空间,并把原来空间的东西拷贝到新的空间,原来的引用计数不变,新开辟的空间引用计数为1
B、copy分为浅拷贝和深拷贝
C、浅拷贝:又叫拷贝指针。就是把自己的地址再赋给自己。并让引用计数+1
D、深拷贝就是具体的实现copyWithZone:方法时,在里边创建对象,开辟空间,并把指针拷贝到新空间
25、关于堆区和栈区说法错误的是_________。答案:(C)
A、对于堆来讲,频繁的开辟和释放势必会造成内存空间的不连续,从而造成大量的碎片,使程序效率降低
B、对于栈来讲,则不会存在这个问题,因为栈是先进后出的队列,他们是如此的一一对应,以至于永远都不可能有一个内存块 从栈中间弹出
C、堆不需要我们进行开辟和释放
D、栈有2种分配方式:静态分配和动态分配
26、@implementation Person - (void)setAge:(int)newAge {
self.age = newAge;
}
@end
针对这段代码说法正确的是_______。 答案:(A)
A、会死循环
B、书写并不规范
C、是getter方法
D、以上都对
27、关于可见度,叙述错误的是答案:(D)
A、OC的实例变量可见度有:@public , @protected, @private
B、@public在类内和类外都可以直接使用,并且可以被继承
C、@protected,在类外不能使用,在类内可以使用,可以被继承(这是与private的区别)
D、@private私有可见度,描述的实例变量,在类内不可以使用,但在类外能使用,而不能被继承
28、以下哪些对象不需要我们释放_________。答案:(D)
A、数组中的对象
B、便利构造器创建的对象
C、字典中的对象
D、以上都是
29、声明一个方法:提供Student对象数组按照学号升序排列的判断条件:答案:(A)
A、- (NSComparisonResult)compareWithNumberForAscendSort:(Student*)otherStudent
B、- (NSComparison)compareWithNumberForAscendSort:(Student*)otherStudent
C、- (BOOL))compareWithNumberForAscendSort:(Student*)otherStudent
D、+ (int)compareWithNumberForAscendSort:(Student*)otherStudent
30、下面程序段的输出结果是什么: NSMutableDictionary * dic = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"1",@"2",@"2",@"3",@"3",@"4", nil]; [dic setObject:@"1" forKey:@"3"]; [dic removeObjectForKey:@"1"]; NSLog(@“%@",dic);
答案:(B)
A、1=3 2=3 3=4
B、2=1, 3=1, 4=1
C、1=4 1=3 3=2
D、3=1 3=2 4=3
31、写出下面程序段的输出结果: 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
32、@interface Person : NSObject
{
NSString * name;
}
@end
创建一个Person类,如何从类的外部访问实例变量name( )。答案:(A)
A、为成员变量name添加属性访问
B、为实例变量name添加关键字@private
C、为实例变量name添加getter方法
D、无法访问
33、NSMutableArray *array = @[@"bob", @"steve", @"john"];
[array addObject:@“Peter"];
NSLog(@“%@”,array);
运行结果是:答案:(B)
A、bob,steve,john
B、程序崩溃
C、bob,steve,john,Peter
D、steve,john
34、 下面代码 @implementation Person
@synthesize age;
-(void)setAge:(int)newAge
{
self.age = newAge;
}
@end
为Person实例的name属性赋值时,程序的运行结果是:( )。答案:(C)
A、正常运行
B、立即崩溃
C、陷入死循环
D、不确定
35、NSValue *value = [NSValue valueWithRange:NSMakeRange(10, 20)];
NSRange ra = [value rangeValue];
NSLog(@"ra = %lu”,ra.location);
控制台会打印出:答案:(D)
A、20,20
B、20,10
C、20
D、10
36、copy下的属性的内部实现_______。 答案:(B)
A、- (void)setName:(NSString *)name{
if(_name != name){
[_name release];
_name = [[name copy] autorelease];
}
}
B、- (void)setName:(NSString *)name{
if(_name != name){
[_name release];
_name = [name copy];
}
}
C、- (NSString *)name{
return [[_name copy]autorelease];
}
D、- (NSString *)name{
return [_name copy];
}
37、-[Person sayHi]: unrecognized selector sent to instance 0x100114d70 上面崩溃信息可以看出崩溃原因是上面_________。答案:(C)
A、内存泄露
B、过度释放
C、方法没实现
D、都不是
38、retain下的属性的内部实现_______。 答案:(A)
A、- (void)setName:(NSString *)name{ if(_name != name){
[_name release];
_name = [name retain]; }
}
B、- (void)setName:(NSString *)name{
if(_name != name){
[_name release];
_name = [[name retain] autorelease];
}
}
C、- (NSString *)name{ return [_name retain]; }
D、- (NSString *)name{
return [_name autorlease];
}
39、NSMutableString *mutableStr = [NSMutableString stringWithString:@"12345"];
[mutableStr appendString:@"67890"]; [mutableStr insertString:@"abc" atIndex:5];
NSRange delRange = NSMakeRange(2, 4);
id v = [mutableStr deleteCharactersInRange:delRange];
NSLog(@"%@",v);
控制台会打印:答案:(A)
A、12bc67890
B、1bc678
C、bc6789
D、2bc678
40、读下列程序: int (^intStr) (NSString *) = ^int(NSString *s){
return [s intValue];
};
int strInt = intStr(@"12我3");
NSLog(@"strInt = %d", strInt);
控制台会打印:答案:(A)
A、12
B、12我
C、12我3
D、3
※ 判断题(共10题,每题2分)
1、NSSet存放的数据是无序的答案:(T)
正确
错误
2、继承是单项的,不能相互继承答案:(T)
正确
错误
3、协议中@optional 修饰的方法是可选的,可实现也可不实现答案:(T)
正确
错误
4、NSArray和NSDictionary都是有序的.答案:(F)
正确
错误
5、Extension只是管理类的“私有”方法答案:(F)
正确
错误
6、继承具有传递性:A继承于B,B继承于C,A只具有B特征和行为答案:(F)
正确
错误
7、给super发消息,可以执行父类中实现的方法答案:(T)
正确
错误
8、数组是靠index来索引元素,index从0开始答案:(T)
正确
错误
9、使用类方法也要构建一个实例对象出来答案:(F)
正确
错误
10、类是创建对象的样板答案:(T)
正确
错误