Objective-C 考题

来源:互联网 发布:网络部署方案 编辑:程序博客网 时间:2024/05/18 13:29

前几天的考试题,让你们也尝下酸爽的感觉。

1、不会立刻使引用计数器改变的是:

Arelease

Balloc

Cautorelease

Dretain

2、在OC中,类中成员变量的可见度(访问权限)不包括:

A@public

B@protected

C@private

D@optional

3、使用 Objective-C语言输出“This is a Objective-C program.”正确的是:

ANSLog(@"%s",This is a Objective-C program.);

BNSLog(@"%@",This is a Objective-C program.);

CNSLog(@"This is a Objective-C program.",%@);

DNSLog(@"This is a Objective-C program.");

4、下列说法中错误的是:

AObjective-C不用"函数调用",而用互相传递讯息.

BObjective-C一个完整的类分为interfaceimplementation两块

CObjective-C对象使用new分配内存,delete释放

DObjective-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方法。

Adelegate

Bassign

Cretain

Ddealloc

8、在OC中,类的定义包括两部分(声明与实现),其中实现部分是:

A@import

B@interface

C@implementation

D@protocol

9、以下说法不正确的是:

Anonatomic:提供多线程保护,提高性能,在没有使用多线程的编程中可以选择使用。

Bassign:属性默认值。说明设置器直接进行赋值,针对基础数据类型NSIntegerCGFloat)和C数据类型(int,float,double,char)等等。

Cretain:此属性只用于obj-c的对象类型,对参数进行release旧值,再retain新值。

Dcopy:此属性只对实现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

CsetName: : age:

DsetName:name:age:

11NSDictionary *dict = [NSDictionary dictionaryWithObject:@"a value" forKey:@"aKey"];

NSLog(@"%@",[dict objectForKey:@"aKey"]);

[dict release];

控制台中打印的最后一条信息会是:

Aa value

BaKey : a value

C、崩溃信息

Da 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::的方法有几个传入参数:                                               

A0

B1

C2

D3

17OC中布尔(BOOL)类型的变量的值只有:

A1/0

BYES/NO

Ctrue/false

D1/-1

18、下面关于类概念的描述中,错误的是:

A、类是抽象数据类型的实现

B、类是具有共同行为的若干对象的统一描述体

C、类是创建对象的模板

D、类就是C语言中的结构体类型

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

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

上述代码打印结果是:

A-1

B0

C1

D2

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

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

[person retain]; [person release];

A0

B1

C2

D3

21Objective-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;

26NSMutableString * 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、不用写关键字

28NSArray *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];

控制台打印的结果是:

A4

B5

C6

D7

29、向Xcode控制台输出一个字符串应该用:

ANSLog()

BPrintf()

CNSPrintf()

Dscanf()

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类型

32NSDateFormatter * 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);

打印结果是:

A2012-05-3117:45:04 PM

B12-05-3117:45:04

C2012-05-3117:45:04

D12-05-3105:45:04 PM

33、下列代码:

@property(nonatomic,assign)id<Painting>myObject;

A、是说myObjectPainting分类的一部分

B、是说myObject遵从于Painting分类

C、是说myObject遵从于Painting协议

D、不是合法的Objective-C语法格式

34、以下说法正确的是:

A、求数组的内容的个数用length方法

B、字典是根据其位置来索引数据的

C、协议中定义的方法默认是必须实现的

D、定义类目必须要拿到自己类的源代码

35、创建对象时,对象的内存和指向对象的指针分别分配在哪里:

A、堆区,栈区

B、常量区,堆区

C、全局区,栈区

D、栈区,堆区

36、简单类型的成员比如:int类型成员在使用@property(),括号中应使用:

Aassign

Bcopy

Cretain

Dauto

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]);

Aper.name = -1;

Bper.name =0;

Cper.name =1;

Dper.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的描述正确的是:

AKVC是指--编码

B、是一种直接访问对象的属性的机制。

C、只能访问对象的属性。

D、当对象的属性值改变时,我们能收到一个通知。

44、类何时调用dealloc方法:

A[property release]

B[instance release]

C[super dealloc]

D、当引用计数为0.

45NSString NSMutableString的关系和区别描述不正确的是:

ANSString是不可变字符串,即本身内容不能被改变。                                             

 BNSMutableString是可变字符串,即本身内容可修改。

CNSMutableStringNSString的子类。

DNSStringNSMutableString没有任何关系。

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…”

Awalk();

Bsuper.walk;

C[self walk];

Dself.walk();

47、关于协议描述不正确的是:

A、协议分正式和非正式协议。

B、在要求确认协议的类必须实现协议中的方法时,可以使用@required

C、一个协议可以被多个类确认。

D、协议中声明的方法,默认是@optional的。

48、关于NSSet描述正确的有:

ANSSet可以存放任何数据类型的数据。

BNSSet存放数据是无序的。

CNSSet可以通过下标获取数据。

DNSSet存放的数据是有序的。

49、以下对类的描述不正确的是:

A、类的接口部分可以包含实例变量、属性和方法

B、可以把声明和实现都放到.h文件中

C、一对文件(Person.h Person.m)只能定义一个类

D、类比较抽象,对象比较具体

50Objective-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);

A0,1,2,3

B1,2,3,0

C1,3,3,0

D0,3,2,3

53NSRange的成员变量有:

Alocation,length

Bwidth,height

Clocation,height

Dlength,width

54、下列代码正确的输出结果是:

NSString * urlStr =@"www.lanou3g.com";

NSRange range = NSMakeRange(4,7);

NSString *prefix = [urlStr substringWithRange:range];

NSLog(@"%@",prefix);

Alan

Blanou3g

Cwww.lan

Dou3g

55、下面哪个选项对集合的描述是正确的:

A、集合内不能存不同类型的对象

B、集合内可以存整型的数

C、字典内键值可以相同,但是每个键值对应的对象必须不同

D、集合内只能存对象

56、关于KVC的描述正确的是:

AKVC是指"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、内存管理的关键字描述错误的是:

Aretaincount是指对象的引用计数。

Bretain关键字可以增大对象的引用计数。

Crelease可以减小对象的引用计数,但autorelease不可以

Ddealloc方法不能直接调用

62、读代码:

NSString *str=@"hello";

NSMutableSet *mt=[NSMutableSet setWithObjects:str,nil];

[mt addObject:str];

NSLog(@"%lu",mt.count);

结果是:

A1

B2

C3

D4

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

A1=23=4

B1=22=3

C2=14=3

D2=13=2

65NSRange是什么数据类型:

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

A2=13=34=3

B1=23=33=4

C1=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);

A1,2,1

B1,1,0

C1,-1,0

D1,-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的值为:

AiLanou

BiL123

CiLaios

DiLa123

69、关于内存管理的描述错误的是:

Aallocdealloc是对应的,前者分配内存,后者回收内存

Bretainrelease是对应的,前者retainCount1,后者retainCount1

C、当对象的retainCount0时,dealloc会被系统调用

DiOS5之后的ARC指的是系统垃圾回收

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

int a =10;

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

NSLog(@"%d", a+++b);

A21

B20

C30

D、编译错误

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

@property (copy,nonatomic,readonly)NSString * calValue

A、没有getter方法,当对calvalue赋值时,将产生一个NSString副本。

B、此属性可保证多线程安全。

C、此属性在合成时可以生成设置器方法。

D、此属性只能读取,不能赋值。

72NSMutableDictionary字典中删除对象可以使用下面那个方法:

AfilteredArrayUsingPredicate:

BarrayByAddingObject:

CinitWithCapacity:

DsetValue:forKey:

73、将@”2B青年替换成@”文艺青年的代码是:

A[@”2B青年” stringByAppendingOfString:@”2B” withString:@”文艺”];

BNSRange range = {0,2}; [@”2B青年” stringByReplacingCharactersInRange:range withString:@”文艺”];

CNSRange range = {1,2};[@”2B青年” stringByReplacingCharactersInRange:range withString:@”文艺”];

D[@”2B青年” stringByReplacingOccurrencesOfString:@”文艺” withString:@”2B”];

74NSAutoreleasePool *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]);

上述代码打印结果正确的是:

Astr retainCount =2,str2 retainCount =2

Bstr retainCount =0,str2 retainCount =1

Cstr retainCount =1,str2 retainCount =1

Dstr 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]);

Astring = -1

Bstring =0

Cstring =1

Dstring =2

76、查看下列代码,能正确输出number的选项是:

@interface MyClass : NSObject

    {

       int number;

    }

   +(void) printNumber;

@end

@implementation MyClass

         +(void) printNumber

    {

        number =10;

        NSLog(@""%d"",number);

    }

@end

A[MyClass printNumber];

BMyClass * obj = [[MyClass alloc] init]; [obj printNumber];

CprintNumber();

D、编译错误,无法执行。

77、下列哪个操作不会引起引用计数(retaincount)的变化是:

ANSString *str1 = [[NSString stringWithFormat:@"hehe"];

Bint a=1;

CNSMutableData *data1 = [NSMutableData allocWithZone:data2];

DNSArray *arr1 = [[NSArray alloc]initWithArray:arr2];

78、下列选项中不能正常为empname属性赋值的代码有:

Aemp.name=@"李嘉诚";

Bemp->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);

A1=32=33=4

B1=21=33=4

C2=13=14=3

D3=13=24=3

80NSMutableDictionary * 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);

结果是:

A123

B234

C2

D3

答案过几天发。                                                

0 0
原创粉丝点击