您的位置:首页 > 其它

巨坑OC笔试题!!!

2015-10-08 11:35 253 查看
※ 选择题(共80题,每题1分)

1、
以下代码执行后,person对象的retain count是多少:

Person * person = [[Person alloc] init];

[person retain]; [person release];
答案:(B)
A、0
B、1
C、2
D、3

2、
OC中布尔(BOOL)类型的变量的值只有:
答案:(B)
A、1/0
B、YES/NO
C、true/false
D、1/-1

3、
用哪个关键字定义协议中必须实现的方法:
答案:(D)
A、@optional
B、@protected
C、@private
D、不用写关键字

4、
现有如下集合,能准确删除“张三”的代码是:

NSMutableDictionary * peoples=[NSMutableDictionary dictionaryWithObjectsAndKeys:@"张三",@"左护法",@"李四",@"右使",@"唐sir",@"老大哥", nil];
答案:(A)
A、[peoples
removeObjectForKey:@"左护法"];
B、[peoples removeObject:@"张三"];
C、[peoples removeObjectAtIndex:0];
D、[peoples removeAllObjects];

5、
NSArray *array = [NSArray arrayWithObjects:@"one", @"two", @"three",nil];

NSLog(@"%@",[array objectAtIndex:1]);

NSLog(@"%@",[array objectAtIndex:3]);

控制台中打印的最后一条信息会是:
答案:(D)
A、one
B、two
C、three
D、崩溃信息

6、
向Xcode控制台输出一个字符串应该用:
答案:(A)
A、NSLog()
B、Printf()
C、NSPrintf()
D、scanf()

7、
NSMutableString * str = [[NSMutableString alloc] initWithFormat:@"123"];

NSLog(@"str = %p",str);

[str appendFormat:@"456"];

NSLog(@"str = %p",str);

上面代码对字符串str进行拼接后,2次打印的地址是否相同:
答案:(A)
A、相同
B、不同
C、随机打印
D、有时相同,有时不同

8、
下列选项中全部属于对象的是:
答案:(C)
A、我的白色iPhone4s;Mac Mini
B、狗;老虎
C、邻居家的猫咪“贝贝”;我的弟弟“张三”
D、保时捷;犀利哥

9、
使用 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.");

10、
在OC中,类中成员变量的可见度(访问权限)不包括:
答案:(D)
A、@public
B、@protected
C、@private
D、@optional

11、
关于类和对象的概念,下列属于对象的是:
答案:(C)
A、奥迪A6
B、保龄球
C、世界冠军刘翔
D、西红柿

12、
下面哪些选项是属性的正确声明方式:
答案:(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;

13、
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

14、
OC中,所有类的根类是:
答案:(A)
A、NSObject
B、NSDate
C、NSCoding
D、UIView

15、
OC中的委托最好声明成:
答案:(B)
A、retain
B、assign
C、copy
D、readonly

16、
下列说法中错误的是:
答案:(C)
A、Objective-C不用"函数调用",而用互相传递讯息.
B、Objective-C一个完整的类分为interface和implementation两块
C、Objective-C对象使用new分配内存,用delete释放
D、Objective-C协议分为非正式协议和正式协议

17、
下面关于类概念的描述中,错误的是:
答案:(D)
A、类是抽象数据类型的实现
B、类是具有共同行为的若干对象的统一描述体
C、类是创建对象的模板
D、类就是C语言中的结构体类型

18、
Objective-C中包含一个自定义的头文件应该使用:
答案:(C)
A、#include ""
B、#include<>
C、#import
""
D、#import<>

19、
关于集合描述不正确的是:
答案:(A)
A、所有的集合都可以添加元素。
B、集合分为可变集合、不可变集合。
C、数组、字典、NSSet这三种集合存储数据的方式不同。
D、所有集合都能保存id类型数据。

20、
在OC中,类的定义包括两部分(声明与实现),其中实现部分是:
答案:(C)
A、@import
B、@interface
C、@implementation
D、@protocol

21、
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

22、
面向对象的特性不包括:
答案:(D)
A、封装
B、继承
C、多态
D、构造

23、
必须实现的协议方法使用:关键字声明.
答案:(C)
A、@property
B、@interface
C、@required
D、@protocol

24、
在OC中类的接口声明关键字为:
答案:(B)
A、@import
B、@interface
C、@implemention
D、@protocol

25、
NSString *name = [[NSString alloc]initWithString:@"张三"];

NSLog(@"%d",[name retainCount]);

上述代码打印结果是:
答案:(A)
A、-1
B、0
C、1
D、2

26、
-(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:

27、
名为print::的方法有几个传入参数:
答案:(C)
A、0
B、1
C、2
D、3

28、
Objective-C的代码文件的后缀为:
答案:(B)
A、.cpp
B、.m
C、.pl
D、.c

29、
经过下列哪种操作后需要使用release方法。
答案:(C)
A、delegate
B、assign
C、retain
D、dealloc

30、
不会立刻使引用计数器改变的是:
答案:(C)
A、release
B、alloc
C、autorelease
D、retain

31、
类何时调用dealloc方法:
答案:(D)
A、[property release]后
B、[instance release]后
C、[super
dealloc]时
D、当引用计数为0时.

32、
协议与委托的描述不正确的是:
答案:(C)
A、委托是iOS的一种设计模式
B、协议里的方法默认是必须实现的
C、类接受了多个协议,这些协议写在父类后面的<>内,多个协议之间用“、”隔开
D、定义协议使用@protocol关键字

33、
关于协议描述不正确的是:
答案:(D)
A、协议分正式和非正式协议。
B、在要求确认协议的类必须实现协议中的方法时,可以使用@required。
C、一个协议可以被多个类确认。
D、协议中声明的方法,默认是@optional的。

34、
创建对象时,对象的内存和指向对象的指针分别分配在哪里:
答案:(A)
A、堆区,栈区
B、常量区,堆区
C、全局区,栈区
D、栈区,堆区

35、
关于KVC的描述正确的是:
答案:(B)
A、KVC是指"Key-Value Observing"
B、是一种间接访问对象的属性的机制。
C、只能访问对象的属性。
D、当对象的属性值改变时,我们能收到一个通知。

36、
下面哪个选项对集合的描述是正确的:
答案:(D)
A、集合内不能存不同类型的对象
B、集合内可以存整型的数
C、字典内键值可以相同,但是每个键值对应的对象必须不同
D、集合内只能存对象

37、
实例变量默认的访问修饰符是:
答案:(C)
A、@public
B、@private
C、@protected
D、@package

38、
对于语句NSString* testObject = [[NSData alloc] init];关于testObject是什么类型对象,以下说法正确的是:
答案:(A)
A、编译时,NSString类型,运行时,NSData类型
B、编译与运行时,都是NSData类型
C、编译与运行时,都是NSString类型
D、运行时,NSString类型,编译时,NSData类型

39、
简单类型的成员比如:int类型成员在使用@property()时,括号中应使用:
答案:(A)
A、assign
B、copy
C、retain
D、auto

40、
在OC中扩展类的方法的形式不包括:
答案:(B)
A、继承
B、多态
C、类目
D、延展

41、
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

42、
以下说法正确的是:
答案:(C)
A、求数组的内容的个数用length方法
B、字典是根据其位置来索引数据的
C、协议中定义的方法默认是必须实现的
D、定义类目必须要拿到自己类的源代码

43、
现要求声明一个集合,并将字符串添加到集合中,编写了如下代码,其中错误的是第几行:

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)

44、
自定义一个Person类,下面哪个选项是规范的便利构造器声明方式:
答案:(D)
A、-(id)personWithName:(NSString *)theName;
B、-(id)personwithName:(NSString *)theName;
C、+(id)personwithName:(NSString *)theName;
D、+(id)personWithName:(NSString
*)theName;

45、
下面程序段的输出结果是什么:

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、程序崩溃

46、
关于KVC的描述正确的是:
答案:(A)
A、KVC是指“键-值-编码”。
B、是一种直接访问对象的属性的机制。
C、只能访问对象的属性。
D、当对象的属性值改变时,我们能收到一个通知。

47、
现有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();

48、
下面描述正确的选项是:
答案:(B)
A、当计数器为1时,dealloc方法由系统自动调用
B、一个对象在引用计数变为0时,会调用自己的dealloc方法
C、在dealloc方法里,应该在[super dealloc]后释放本类所拥有的对象
D、开启ARC后,可以重载dealloc,必须在dealloc里写 [super dealloc]方法

49、
声明一个返回值为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)

50、
现有自定义类Student,下列选项中Student类的便利构造器编写正确的是:
答案:(D)
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;

}

51、
以下对类的描述不正确的是:
答案:(C)
A、类的接口部分可以包含实例变量、属性和方法
B、可以把声明和实现都放到.h文件中
C、一对文件(Person.h
Person.m)只能定义一个类
D、类比较抽象,对象比较具体

52、
关于类目、延展的描述错误的是:
答案:(B)
A、延展主要为类提供“私有”方法
B、类目、延展不但能为类添加方法,而且都可以添加新的实例变量
C、无论能否拿到类的源码,类目都可以对其扩展
D、类目和延展声明语法不同

53、
下面程序段的输出结果是什么:

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

54、
Objective-C 语言中类的实例变量如果只可以被本类和其子类访问,需要下列哪个修饰符:
答案:(C)
A、@public
B、@private
C、@protected
D、@friendly

55、
NSString 和 NSMutableString的关系和区别描述不正确的是:
答案:(D)
A、NSString是不可变字符串,即本身内容不能被改变。
B、NSMutableString是可变字符串,即本身内容可修改。
C、NSMutableString是NSString的子类。
D、NSString和NSMutableString没有任何关系。

56、
读代码:

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

57、
NSRange是什么数据类型:
答案:(C)
A、数组
B、字典
C、结构体
D、指针

58、
有一个类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;

}

}

59、
内存管理的关键字描述错误的是:
答案:(C)
A、retaincount是指对象的引用计数。
B、retain关键字可以增大对象的引用计数。
C、release可以减小对象的引用计数,但autorelease不可以
D、dealloc方法不能直接调用

60、
NSRange的成员变量有:
答案:(A)
A、location,length
B、width,height
C、location,height
D、length,width

61、
下面哪个选项是正确的:
答案:(B)
A、用继承可以扩展一个类,要调用扩展的方法,既可以用父类,也可以用子类
B、用类目可以扩展一个类,可以直接用该类或该类的实例对象,去调用该类目扩展的方法
C、延展就是类目
D、可以在一个类的外部,调用这个类延展的方法

62、
关于NSSet描述正确的有:
答案:(B)
A、NSSet可以存放任何数据类型的数据。
B、NSSet存放数据是无序的。
C、NSSet可以通过下标获取数据。
D、NSSet存放的数据是有序的。

63、
下面哪个选项无内存问题的:
答案:(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];

}

64、
下面程序段的输出结果是什么:

NSMutableDictionary * dic = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"1",@"2",@"2",@"3",@"3",@"4", nil];

[dic removeObjectForKey:@"3"];

NSLog(@"%@",dic);
答案:(C)
A、1=2 3=4
B、1=2 2=3
C、2=1
4=3
D、2=1 3=2

65、
下列代码:

@property(nonatomic,assign)id<Painting>myObject;
答案:(C)
A、是说myObject是Painting分类的一部分
B、是说myObject遵从于Painting分类
C、是说myObject遵从于Painting协议
D、不是合法的Objective-C语法格式

66、
下列选项中不能正常为emp的name属性赋值的代码有:
答案:(B)
A、emp.name=@"李嘉诚";
B、emp->name=@"李开复";
C、[emp setValue:@"柳传志" forKey:@"name"];
D、[emp setName:@"黄光裕"];

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、
将@”2B青年”替换成@”文艺青年”的代码是:
答案:(B)
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”];

69、
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

70、
下面程序段的输出结果是什么:

int a = 10;

NSNumber *b = [[NSNumber alloc] initWithInt:a];

NSLog(@"%d", a+++b);
答案:(D)
A、21
B、20
C、30
D、编译错误

71、
写出下面程序段的输出结果:

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

72、
下列哪个操作不会引起引用计数(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];

73、
下面程序段的输出结果是什么:

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

74、
有如下一个类定义

@interface MyClass:NSObject

@property(nonatomic,retain)NSString *str;

@end

@implementation MyClass

(1)

-(NSString *)str

{

return str;

}

-(void)dealloc

{

self.str = nil;

[super dealloc];

}

@end
答案:(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;

}

75、
对于下面代码说法正确的是:

@property (copy,nonatomic,readonly)NSString * calValue;
答案:(D)
A、没有getter方法,当对calvalue赋值时,将产生一个NSString副本。
B、此属性可保证多线程安全。
C、此属性在合成时可以生成设置器方法。
D、此属性只能读取,不能赋值。

76、
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);

结果是:
答案:(C)
A、123
B、234
C、2
D、3

77、
下面程序段的输出结果是什么:

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

78、
查看下列代码,能正确输出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、编译错误,无法执行。

79、
下面程序段的输出结果是什么:

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

80、
NSMutableDictionary字典中删除对象可以使用下面那个方法:
答案:(D)
A、filteredArrayUsingPredicate:
B、arrayByAddingObject:
C、initWithCapacity:
D、setValue:forKey:

※ 判断题(共10题,每题2分)

1、
OC中如果向空指针nil发送消息,程序会崩溃的。
答案:(F)
正确
错误

2、
在类方法中可以使用实例变量。
答案:(F)
正确
错误

3、
retain的作用是引用计数减一。
答案:(F)
正确
错误

4、
不是每个对象都有引用计数。
答案:(F)
正确
错误

5、
声明了@property指令,就不能再用setter,getter 方法了。
答案:(F)
正确
错误

6、
当类别中的方法与原始类方法名称冲突时,类别具有更高的优先级。
答案:(T)
正确
错误

7、
在dealloc方法中对变量的释放顺序与初始化的顺序相同。
答案:(F)
正确
错误

8、
协议中定义的方法默认是必须实现的。
答案:(T)
正确
错误

9、
注释可以出现在程序的任何位置。
答案:(T)
正确
错误

10、
实例对象都是通过调用类方法生成的。
答案:(T)
正确
错误
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: