ObjectiveC面试题_第1页
ObjectiveC面试题_第2页
ObjectiveC面试题_第3页
ObjectiveC面试题_第4页
ObjectiveC面试题_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Objective-C面试题 选择题(共80题,每题1分。)1、OC中与alloc相反的方法是:答案:(C)· A、release· B、retain· C、dealloc· D、free2、必须实现的协议方法使用:关键字声明.答案:(C)· A、property· B、interface· C、required· D、protocol3、NSArray *array = NSArray arrayWithObjects:"1","2","3","

2、;4","2", nil;NSMutableSet *set = NSMutableSet allocinit;for(NSString *str in array)  set addObject:str;NSLog("%lu",set count);set release;控制台打印的结果是:答案:(A)· A、4· B、5· C、6· D、74、声明一个方法:提供Student对象数组按照学号升序排列的判断条件:答案:(A)· A、-(NSComparisonResult

3、)compareWithNumberForAscendSort:(Student*)otherStudent· B、-(NSInteger)compareWithNumberForAscendSort:(Student*)otherStudent· C、- (BOOL)compareWithNumberForAscendSort:(Student*)otherStudent· D、+(int)compareWithNumberForAscendSort:(Student5、下列选项中全部属于对象的是:答案:(C)· A、我的白色iPhone4s;Mac

4、Mini· B、狗;老虎· C、邻居家的猫咪“贝贝”;我的弟弟“张三”· D、保时捷;犀利哥6、关于集合描述不正确的是:答案:(A)· A、所有的集合都可以添加元素。· B、集合分为可变集合、不可变集合。· C、数组、字典、NSSet这三种集合存储数据的方式不同。· D、所有集合都能保存id类型数据。7、NSDictionary *dict = NSDictionary dictionaryWithObject:"a value" forKey:"aKey"NSLog("%&

5、quot;,dict objectForKey:"aKey");dict release;控制台中打印的最后一条信息会是:答案:(C)· A、a value· B、aKey : a value· C、崩溃信息· D、a value : aKey8、向Xcode控制台输出一个字符串应该用:答案:(A)· A、NSLog()· B、Printf()· C、NSPrintf()· D、scanf()9、名为print:的方法有几个传入参数:答案:(C)· A、0· B、1·

6、; C、2· D、310、下列哪个选项与synthesize配合使用:答案:(D)· A、end· B、interface· C、implementation· D、property11、面向对象的特性不包括:答案:(D)· A、封装 · B、继承· C、多态· D、构造12、OC中,所有类的根类是:答案:(A)· A、NSObject· B、NSDate· C、NSCoding· D、UIView13、现有如下集合,能准确删除“张三”的代码是:NSMutableD

7、ictionary * peoples=NSMutableDictionary dictionaryWithObjectsAndKeys:"张三","左护法","李四","右使","唐sir","老大哥", nil;答案:(A)· A、peoples removeObjectForKey:"左护法"· B、peoples removeObject:"张三"· C、peoples removeObjectAt

8、Index:0;· D、peoples removeAllObjects;14、使用 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、

9、NSLog("This is a Objective-C program.");15、下列说法中错误的是:答案:(C)· A、Objective-C不用"函数调用",而用互相传递讯息.· B、Objective-C一个完整的类分为interface和implementation两块· C、Objective-C对象使用new分配内存,用delete释放· D、Objective-C协议分为非正式协议和正式协议16、用哪个关键字定义协议中必须实现的方法:答案:(D)· A、optional· B、

10、protected· C、private· D、不用写关键字17、下面关于类概念的描述中,错误的是:答案:(D)· A、类是抽象数据类型的实现· B、类是具有共同行为的若干对象的统一描述体· C、类是创建对象的模板· D、类就是C语言中的结构体类型18、下面哪些选项是属性的正确声明方式:答案:(C)· A、property(nonatomic,retain)NSString myString;· B、property(nonatomic,assign)NSString * myString;· C、pro

11、perty(nonatomic,assign)int mynumber;· D、property(nonatomic,retain)int mynumber;19、NSString *name = NSString allocinitWithString:"张三"NSLog("%d",name retainCount);上述代码打印结果是:答案:(A)· A、-1· B、0· C、1· D、220、不会立刻使引用计数器改变的是:答案:(C)· A、release· B、alloc

12、83; C、autorelease· D、retain21、OC中的委托最好声明成:答案:(B)· A、retain· B、assign· C、copy· D、readonly22、经过下列哪种操作后需要使用release方法。答案:(C)· A、delegate· B、assign· C、retain· D、dealloc23、在OC中类的接口声明关键字为:答案:(B)· A、import· B、interface· C、implemention· D、proto

13、col24、-(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:25、以下说法不正确的是:答案:(A)· A、nonatomic:提供多线程保护,提高性能,在没有使用多线程的编程中可以选择使用。

14、· B、assign:属性默认值。说明设置器直接进行赋值,针对基础数据类型 (NSInteger,CGFloat)和C数据类型(int, float, double, char)等等。· C、retain:此属性只用于obj-c的对象类型,对参数进行release旧值,再retain新值。· D、copy:此属性只对实现NSCopying协议的对象有效(NSString)。拷贝工作由copy方法执行。26、关于类和对象的概念,下列属于对象的是:答案:(C)· A、奥迪A6· B、保龄球· C、世界冠军刘翔· D、西红柿27、

15、Objective-C的代码文件的后缀为:答案:(B)· A、.cpp· B、.m· C、.pl· D、.c28、Objective-C中包含一个自定义的头文件应该使用:答案:(C)· A、#include ""· B、#include<>· C、#import ""· D、#import<>29、下列哪个选项不需要release方法:答案:(C)· A、NSString allocinit;· B、NSString alloc i

16、nitWithString:”hehe”;· C、NSArray arrayWithArray: arr1;· D、NSMutableDictionary alloc init;30、NSMutableString * str = NSMutableString alloc initWithFormat:"123"NSLog("str = %p",str);str appendFormat:"456"NSLog("str = %p",str);上面代码对字符串str进行拼接后,2次打印的地址是否

17、相同:答案:(A)· A、相同· B、不同· C、随机打印· D、有时相同,有时不同31、下面哪个选项对集合的描述是正确的:答案:(D)· A、集合内不能存不同类型的对象· B、集合内可以存整型的数· C、字典内键值可以相同,但是每个键值对应的对象必须不同· D、集合内只能存对象32、下面哪个选项无内存问题的:答案:(C)· A、-(NSString *)description  NSString * str = NSString alloc initWithFormat:"

18、description"  return str;· B、-(NSString *)description  NSString * str = NSString alloc initWithFormat:"description"  str release;  return str;· C、-(NSString *)description  NSString * str = NSString alloc initWithFormat:"

19、description"  str autorelease;  return str;· D、-(NSString *)description  NSString * str = NSString stringWithFormat:"description"  return str autorelease;33、关于KVC的描述正确的是:答案:(B)· A、KVC是指"Key-Value Observing"· B、是一种间接访问对象的

20、属性的机制。· C、只能访问对象的属性。· D、当对象的属性值改变时,我们能收到一个通知。34、关于协议描述不正确的是:答案:(D)· A、协议分正式和非正式协议。· B、在要求确认协议的类必须实现协议中的方法时,可以使用required。· C、一个协议可以被多个类确认。· D、协议中声明的方法,默认是optional的。35、关于类目的说法正确的有:答案:(A)· A、类目可以为所有的类添加新方法。· B、类目中添加的方法比原类中定义的方法级别要低。· C、定义类目需要使用关键字category。&#

21、183; D、类目可以随意使用。36、下面描述正确的选项是:答案:(B)· A、当计数器为1时,dealloc方法由系统自动调用· B、一个对象在引用计数变为0时,会调用自己的dealloc方法· C、在dealloc方法里,应该在super dealloc后释放本类所拥有的对象· D、开启ARC后,可以重载dealloc,必须在dealloc里写 super dealloc方法37、下面程序段的输出结果是什么:NSArray * arr1 = NSArray alloc initWithObjects:"1","2&quo

22、t;,"3", nil;NSString *str;str = arr1 objectAtIndex:2;NSLog("%",str);答案:(C)· A、1· B、2· C、3· D、程序崩溃38、interface Person : NSObjectproperty(nonatomic,retain)NSString * name;end上面声明一个Person类Person * per = Person alloc init; = NSString alloc initWithFormat:&

23、quot;张三"NSLog(" = %d", retainCount);答案:(D)· A、 = -1;· B、 = 0;· C、 = 1;· D、 = 2;39、以下说法正确的是:答案:(C)· A、求数组的内容的个数用length方法· B、字典是根据其位置来索引数据的· C、协议中定义的方法默认是必须实现的· D、定义类目必须要拿到自己类的源代码40、关于类目、延展的描述错误的是:答案

24、:(B)· A、延展主要为类提供“私有”方法· B、类目、延展不但能为类添加方法,而且都可以添加新的实例变量· C、无论能否拿到类的源码,类目都可以对其扩展· D、类目和延展声明语法不同41、Objective-C 语言中类的实例变量如果只可以被本类和其子类访问,需要下列哪个修饰符:答案:(C)· A、public· B、private· C、protected· D、friendly42、下列代码:property(nonatomic,assign)id<Painting>myObject;答案:(C

25、)· A、是说myObject是Painting分类的一部分· B、是说myObject遵从于Painting分类· C、是说myObject遵从于Painting协议· D、不是合法的Objective-C语法格式43、在OC中扩展类的方法的形式不包括:答案:(B)· A、继承· B、多态· C、类目· D、延展44、下列代码正确的输出结果是:NSString * urlStr = ""NSRange range = NSMakeRange(4,7);NSString *prefix = ur

26、lStr substringWithRange:range;NSLog("%",prefix);答案:(B)· A、lan· B、lanou3g· C、www.lan· D、ou3g45、自定义一个Person类,下面哪个选项是规范的便利构造器声明方式:答案:(D)· A、-(id)personWithName:(NSString *)theName;· B、-(id)personwithName:(NSString *)theName;· C、+(id)personwithName:(NSString

27、*)theName;· D、+(id)personWithName:(NSString *)theName;46、下面哪个选项是正确的:答案:(B)· A、用继承可以扩展一个类,要调用扩展的方法,既可以用父类,也可以用子类· B、用类目可以扩展一个类,可以直接用该类或该类的实例对象,去调用该类目扩展的方法· C、延展就是类目· D、可以在一个类的外部,调用这个类延展的方法47、现要求声明一个集合,并将字符串添加到集合中,编写了如下代码,其中错误的是第几行:NSString * aString = NSString alloc initWithS

28、tring:"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)48、关于KVC的描述正确的是:答案:(A)· A、KVC是指“键-值-编码”。· B、是一种直接访问对象的属性的机制。· C、只能访

29、问对象的属性。· D、当对象的属性值改变时,我们能收到一个通知。49、下面程序段的输出结果是什么: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

30、,2,3,0· C、1,3,3,0· D、0,3,2,350、协议与委托的描述不正确的是:答案:(C)· A、委托是iOS的一种设计模式· B、协议里的方法默认是必须实现的· C、类接受了多个协议,这些协议写在父类后面的<>内,多个协议之间用“、”隔开· D、定义协议使用protocol关键字51、下面程序段的输出结果是什么:NSMutableDictionary * dic = NSMutableDictionary alloc initWithObjectsAndKeys:"1","2&q

31、uot;,"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 52、NSRange的成员变量有:答案:(A)· A、location,length· B、width,height· C、location,height· D、l

32、ength,width53、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);打印

33、结果是:答案:(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 PM54、内存管理的关键字描述错误的是:答案:(C)· A、retaincount是指对象的引用计数。· B、retain关键字可以增大对象的引用计数。· C、release可以减小对象的引用计数,但autorelease不可以· D、dealloc方法不能直接调用55、以下对类的描述不正确的是:答案:(C)&#

34、183; A、类的接口部分可以包含实例变量、属性和方法· B、可以把声明和实现都放到.h文件中· C、一对文件(Person.h Person.m)只能定义一个类· D、类比较抽象,对象比较具体56、关于NSSet描述正确的有:答案:(B)· A、NSSet可以存放任何数据类型的数据。· B、NSSet存放数据是无序的。· C、NSSet可以通过下标获取数据。· D、NSSet存放的数据是有序的。57、简单类型的成员比如:int类型成员在使用property()时,括号中应使用:答案:(A)· A、assign&#

35、183; B、copy· C、retain· D、auto58、有一个类Student,要求实现:定义一个实例初始化方法,初始化方法需要传入名字和性别:答案:(B)· A、-(id)initWithName:(NSString *)name sex:(NSString *)sex  if (self)     = name;    self.sex = sex;    return self;· B

36、、-(id)initWithName:(NSString *)name sex:(NSString *)sex  if (self = super init)      = name;    self.sex = sex;    return self;· C、-(id)initWithName:(NSString *)name sex:(NSString *)sex  if (!self)  &#

37、160;   = name;    self.sex = sex;    return self;· D、-(id)initWithName:(NSString *)name sex:(NSString *)sex  if (self = super init)      = name;    self.sex = sex;  59

38、、声明一个返回值为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)60、实例变量默认的访问修饰符是:答案:(C)·

39、 A、public· B、private· C、protected· D、package61、创建对象时,对象的内存和指向对象的指针分别分配在哪里:答案:(A)· A、堆区,栈区· B、常量区,堆区· C、全局区,栈区· D、栈区,堆区62、下列哪个选项不能作为property的可选属性:答案:(A)· A、alloc· B、retain· C、atomic· D、strong63、对于语句NSString* testObject = NSData alloc init;关于testO

40、bject是什么类型对象,以下说法正确的是:答案:(A)· A、编译时,NSString类型,运行时,NSData类型· B、编译与运行时,都是NSData类型· C、编译与运行时,都是NSString类型· D、运行时,NSString类型,编译时,NSData类型64、现有自定义类Student,下列选项中Student类的便利构造器编写正确的是:答案:(D)· A、-(id) initWithName:(NSString *) newName  Student * stu = Student alloc init;&#

41、160; 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 ini

42、t;  stu.Name = newName;  stu release;  return stu;· D、+(id) studentWithName:(NSString *) newName  Student * stu = Student alloc init;  stu.Name = newName;  stu autorelease;  return stu;65、读代码:NSString *str="hello"NS

43、MutableSet *mt=NSMutableSet setWithObjects:str, nil;mt addObject:str;NSLog("%lu",mt.count);结果是:答案:(A)· A、1 · B、2· C、3· D、466、下面程序段的输出结果是什么:NSString * aString = NSString alloc initWithFormat:"123" NSLog("%d",aString.retainCount);aString = "456&qu

44、ot;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,-167、NSAutoreleasePool *pool = NSAutoreleasePool alloc init;NSString *str = NSString stringWithFormat:”abc”;N

45、SString *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、

46、str retainCount = 2,str2 retainCount = 068、查看下列代码,能正确输出number的选项是:  interface MyClass : NSObject  int number;+(void) printNumber;endimplementation MyClass+(void) printNumber  number =10;  NSLog(""%d"",number);end答案:(D)· A、MyClass print

47、Number;· B、MyClass * obj = MyClass alloc init; obj printNumber;· C、printNumber();· D、编译错误,无法执行。69、下面程序段的输出结果是什么:NSMutableDictionary * dic = NSMutableDictionary alloc initWithObjectsAndKeys:"1","2","2","3","3","4", nil;dic set

48、Object:"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=370、下面程序段的输出结果是什么:NSMutableDictionary * dic = NSMutableDictionary alloc initWithObjectsAndKeys:"1",&quo

49、t;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);答

50、案:(C)· A、1=2 1=3 1=4· B、2=1 3=1 4=1· C、1=4· D、4=171、下面程序段的输出结果是什么:NSString * aString = NSString alloc initWithString:"hehe" aString autorelease;NSMutableArray *arr = NSMutableArray array;arr addObject:aString;NSLog("string = %d",aString retainCount);答案:(A)

51、3; A、string = -1· B、string = 0· C、string = 1· D、string = 272、将”2B青年”替换成”文艺青年”的代码是:答案:(B)· A、”2B青年” stringByAppendingOfString:”2B” withString:”文艺”;· B、NSRange range = 0,2; ”2B青年” stringByReplacingCharactersInRange:range withString:”文艺”;· C、NSRange range = 1,2;”2B青年” stri

52、ngByReplacingCharactersInRange:range withString:”文艺”;· D、”2B青年” stringByReplacingOccurrencesOfString:”文艺” withString:”2B”;73、下面程序段的输出结果是什么:int a = 10;NSNumber *b = NSNumber alloc initWithInt:a;NSLog("%d", a+b);答案:(D)· A、21· B、20· C、30· D、编译错误74、下列选项中不能正常为emp的name属性

53、赋值的代码有:答案:(B)· A、="李嘉诚"· B、emp->name="李开复"· C、emp setValue:"柳传志" forKey:"name"· D、emp setName:"黄光裕"75、下面程序段的输出结果是什么:NSMutableDictionary * dic = NSMutableDictionary alloc initWithObjectsAndKeys:"1","2"

54、;,"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、程序崩溃76、读代码NSString * str =NSString allocinitWithFormat:"%","iLanou123ios&q

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论