ObjectiveC面试题.docx
《ObjectiveC面试题.docx》由会员分享,可在线阅读,更多相关《ObjectiveC面试题.docx(38页珍藏版)》请在冰点文库上搜索。
![ObjectiveC面试题.docx](https://file1.bingdoc.com/fileroot1/2023-6/30/15b5e273-993a-43c0-afea-09aad0f4933a/15b5e273-993a-43c0-afea-09aad0f4933a1.gif)
ObjectiveC面试题
Objective-C面试题
※选择题(共80题,每题1分。
)
1、
OC中与alloc相反的方法是:
答案:
(C)
A、release
B、retain
C、dealloc
D、free
2、
必须实现的协议方法使用:
关键字声明.
答案:
(C)
A、@property
B、@interface
C、@required
D、@protocol
3、
NSArray*array=[NSArrayarrayWithObjects:
@"1",@"2",@"3",@"4",@"2",nil];
NSMutableSet*set=[[NSMutableSetalloc]init];
for(NSString*strinarray)
{
[setaddObject:
str];
}
NSLog(@"%lu",[setcount]);
[setrelease];
控制台打印的结果是:
答案:
(A)
A、4
B、5
C、6
D、7
4、
声明一个方法:
提供Student对象数组按照学号升序排列的判断条件:
答案:
(A)
A、-(NSComparisonResult)compareWithNumberForAscendSort:
(Student*)otherStudent
B、-(NSInteger)compareWithNumberForAscendSort:
(Student*)otherStudent
C、-(BOOL))compareWithNumberForAscendSort:
(Student*)otherStudent
D、+(int)compareWithNumberForAscendSort:
(Student
5、
下列选项中全部属于对象的是:
答案:
(C)
A、我的白色iPhone4s;MacMini
B、狗;老虎
C、邻居家的猫咪“贝贝”;我的弟弟“张三”
D、保时捷;犀利哥
6、
关于集合描述不正确的是:
答案:
(A)
A、所有的集合都可以添加元素。
B、集合分为可变集合、不可变集合。
C、数组、字典、NSSet这三种集合存储数据的方式不同。
D、所有集合都能保存id类型数据。
7、
NSDictionary*dict=[NSDictionarydictionaryWithObject:
@"avalue"forKey:
@"aKey"];
NSLog(@"%@",[dictobjectForKey:
@"aKey"]);
[dictrelease];
控制台中打印的最后一条信息会是:
答案:
(C)
A、avalue
B、aKey:
avalue
C、崩溃信息
D、avalue:
aKey
8、
向Xcode控制台输出一个字符串应该用:
答案:
(A)
A、NSLog()
B、Printf()
C、NSPrintf()
D、scanf()
9、
名为print:
:
的方法有几个传入参数:
答案:
(C)
A、0
B、1
C、2
D、3
10、
下列哪个选项与@synthesize配合使用:
答案:
(D)
A、@end
B、@interface
C、@implementation
D、@property
11、
面向对象的特性不包括:
答案:
(D)
A、封装
B、继承
C、多态
D、构造
12、
OC中,所有类的根类是:
答案:
(A)
A、NSObject
B、NSDate
C、NSCoding
D、UIView
13、
现有如下集合,能准确删除“张三”的代码是:
NSMutableDictionary*peoples=[NSMutableDictionarydictionaryWithObjectsAndKeys:
@"张三",@"左护法",@"李四",@"右使",@"唐sir",@"老大哥",nil];
答案:
(A)
A、[peoplesremoveObjectForKey:
@"左护法"];
B、[peoplesremoveObject:
@"张三"];
C、[peoplesremoveObjectAtIndex:
0];
D、[peoplesremoveAllObjects];
14、
使用Objective-C语言输出“ThisisaObjective-Cprogram.”正确的是:
答案:
(D)
A、NSLog(@"%s",ThisisaObjective-Cprogram.);
B、NSLog(@"%@",ThisisaObjective-Cprogram.);
C、NSLog(@"ThisisaObjective-Cprogram.",%@);
D、NSLog(@"ThisisaObjective-Cprogram.");
15、
下列说法中错误的是:
答案:
(C)
A、Objective-C不用"函数调用",而用互相传递讯息.
B、Objective-C一个完整的类分为interface和implementation两块
C、Objective-C对象使用new分配内存,用delete释放
D、Objective-C协议分为非正式协议和正式协议
16、
用哪个关键字定义协议中必须实现的方法:
答案:
(D)
A、@optional
B、@protected
C、@private
D、不用写关键字
17、
下面关于类概念的描述中,错误的是:
答案:
(D)
A、类是抽象数据类型的实现
B、类是具有共同行为的若干对象的统一描述体
C、类是创建对象的模板
D、类就是C语言中的结构体类型
18、
下面哪些选项是属性的正确声明方式:
答案:
(C)
A、@property(nonatomic,retain)NSStringmyString;
B、@property(nonatomic,assign)NSString*myString;
C、@property(nonatomic,assign)intmynumber;
D、@property(nonatomic,retain)intmynumber;
19、
NSString*name=[[NSStringalloc]initWithString:
@"张三"];
NSLog(@"%d",[nameretainCount]);
上述代码打印结果是:
答案:
(A)
A、-1
B、0
C、1
D、2
20、
不会立刻使引用计数器改变的是:
答案:
(C)
A、release
B、alloc
C、autorelease
D、retain
21、
OC中的委托最好声明成:
答案:
(B)
A、retain
B、assign
C、copy
D、readonly
22、
经过下列哪种操作后需要使用release方法。
答案:
(C)
A、delegate
B、assign
C、retain
D、dealloc
23、
在OC中类的接口声明关键字为:
答案:
(B)
A、@import
B、@interface
C、@implemention
D、@protocol
24、
-(id)setName:
(NSString*)name:
(NSString*)sexage:
(int)age的方法名是:
答案:
(C)
A、-(id)setName:
(NSString*)name:
(NSString*)sexage:
(int)age
B、-setName:
name:
sexage:
age
C、setName:
:
age:
D、setName:
name:
age:
25、
以下说法不正确的是:
答案:
(A)
A、nonatomic:
提供多线程保护,提高性能,在没有使用多线程的编程中可以选择使用。
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、
Objective-C的代码文件的后缀为:
答案:
(B)
A、.cpp
B、.m
C、.pl
D、.c
28、
Objective-C中包含一个自定义的头文件应该使用:
答案:
(C)
A、#include""
B、#include<>
C、#import""
D、#import<>
29、
下列哪个选项不需要release方法:
答案:
(C)
A、[[NSStringalloc]init];
B、[[NSStringalloc]initWithString:
@”hehe”];
C、[[NSArrayarrayWithArray:
arr1];
D、[[NSMutableDictionaryalloc]init];
30、
NSMutableString*str=[[NSMutableStringalloc]initWithFormat:
@"123"];
NSLog(@"str=%p",str);
[strappendFormat:
@"456"];
NSLog(@"str=%p",str);
上面代码对字符串str进行拼接后,2次打印的地址是否相同:
答案:
(A)
A、相同
B、不同
C、随机打印
D、有时相同,有时不同
31、
下面哪个选项对集合的描述是正确的:
答案:
(D)
A、集合内不能存不同类型的对象
B、集合内可以存整型的数
C、字典内键值可以相同,但是每个键值对应的对象必须不同
D、集合内只能存对象
32、
下面哪个选项无内存问题的:
答案:
(C)
A、
-(NSString*)description{
NSString*str=[[NSStringalloc]initWithFormat:
@"description"];
returnstr;
}
B、
-(NSString*)description{
NSString*str=[[NSStringalloc]initWithFormat:
@"description"];
[strrelease];
returnstr;
}
C、
-(NSString*)description{
NSString*str=[[NSStringalloc]initWithFormat:
@"description"];
[strautorelease];
returnstr;
}
D、
-(NSString*)description{
NSString*str=[NSStringstringWithFormat:
@"description"];
return[strautorelease];
}
33、
关于KVC的描述正确的是:
答案:
(B)
A、KVC是指"Key-ValueObserving"
B、是一种间接访问对象的属性的机制。
C、只能访问对象的属性。
D、当对象的属性值改变时,我们能收到一个通知。
34、
关于协议描述不正确的是:
答案:
(D)
A、协议分正式和非正式协议。
B、在要求确认协议的类必须实现协议中的方法时,可以使用@required。
C、一个协议可以被多个类确认。
D、协议中声明的方法,默认是@optional的。
35、
关于类目的说法正确的有:
答案:
(A)
A、类目可以为所有的类添加新方法。
B、类目中添加的方法比原类中定义的方法级别要低。
C、定义类目需要使用关键字category。
D、类目可以随意使用。
36、
下面描述正确的选项是:
答案:
(B)
A、当计数器为1时,dealloc方法由系统自动调用
B、一个对象在引用计数变为0时,会调用自己的dealloc方法
C、在dealloc方法里,应该在[superdealloc]后释放本类所拥有的对象
D、开启ARC后,可以重载dealloc,必须在dealloc里写[superdealloc]方法
37、
下面程序段的输出结果是什么:
NSArray*arr1=[[NSArrayalloc]initWithObjects:
@"1",@"2",@"3",nil];
NSString*str;
str=[arr1objectAtIndex:
2];
NSLog(@"%@",str);
答案:
(C)
A、1
B、2
C、3
D、程序崩溃
38、
@interfacePerson:
NSObject
@property(nonatomic,retain)NSString*name;
@end
上面声明一个Person类
Person*per=[[Personalloc]init];
=[[NSStringalloc]initWithFormat:
@"张三"];
NSLog(@"=%d",[retainCount]);
答案:
(D)
A、=-1;
B、=0;
C、=1;
D、=2;
39、
以下说法正确的是:
答案:
(C)
A、求数组的内容的个数用length方法
B、字典是根据其位置来索引数据的
C、协议中定义的方法默认是必须实现的
D、定义类目必须要拿到自己类的源代码
40、
关于类目、延展的描述错误的是:
答案:
(B)
A、延展主要为类提供“私有”方法
B、类目、延展不但能为类添加方法,而且都可以添加新的实例变量
C、无论能否拿到类的源码,类目都可以对其扩展
D、类目和延展声明语法不同
41、
Objective-C语言中类的实例变量如果只可以被本类和其子类访问,需要下列哪个修饰符:
答案:
(C)
A、@public
B、@private
C、@protected
D、@friendly
42、
下列代码:
@property(nonatomic,assign)idmyObject;
答案:
(C)
A、是说myObject是Painting分类的一部分
B、是说myObject遵从于Painting分类
C、是说myObject遵从于Painting协议
D、不是合法的Objective-C语法格式
43、
在OC中扩展类的方法的形式不包括:
答案:
(B)
A、继承
B、多态
C、类目
D、延展
44、
下列代码正确的输出结果是:
NSString*urlStr=@"";
NSRangerange=NSMakeRange(4,7);
NSString*prefix=[urlStrsubstringWithRange:
range];
NSLog(@"%@",prefix);
答案:
(B)
A、lan
B、lanou3g
C、
D、ou3g
45、
自定义一个Person类,下面哪个选项是规范的便利构造器声明方式:
答案:
(D)
A、-(id)personWithName:
(NSString*)theName;
B、-(id)personwithName:
(NSString*)theName;
C、+(id)personwithName:
(NSString*)theName;
D、+(id)personWithName:
(NSString*)theName;
46、
下面哪个选项是正确的:
答案:
(B)
A、用继承可以扩展一个类,要调用扩展的方法,既可以用父类,也可以用子类
B、用类目可以扩展一个类,可以直接用该类或该类的实例对象,去调用该类目扩展的方法
C、延展就是类目
D、可以在一个类的外部,调用这个类延展的方法
47、
现要求声明一个集合,并将字符串添加到集合中,编写了如下代码,其中错误的是第几行:
NSString*aString=[[NSStringalloc]initWithString:
@"iLanou"];
(1)
[aStringautorelease];
(2)
NSArray*arr=[NSArrayarray];(3)
[arraddObject:
aString];(4)
NSLog(@"string=%lu",[aStringretainCount]);
答案:
(C)
A、
(1)
B、
(2)
C、(3)
D、(4)
48、
关于KVC的描述正确的是:
答案:
(A)
A、KVC是指“键-值-编码”。
B、是一种直接访问对象的属性的机制。
C、只能访问对象的属性。
D、当对象的属性值改变时,我们能收到一个通知。
49、
下面程序段的输出结果是什么:
NSMutableArray*arr1=[[NSMutableArrayalloc]initWithObjects:
@"1",@"2",@"3",nil];
[arr1addObject:
@"0"];
[arr1replaceObjectAtIndex:
2withObject:
@"3"];
NSLog(@"%@",arr1);
答案:
(B)
A、0,1,2,3
B、1,2,3,0
C、1,3,3,0
D、0,3,2,3
50、
协议与委托的描述不正确的是:
答案:
(C)
A、委托是iOS的一种设计模式
B、协议里的方法默认是必须实现的
C、类接受了多个协议,这些协议写在父类后面的<>内,多个协议之间用“、”隔开
D、定义协议使用@protocol关键字
51、
下面程序段的输出结果是什么:
NSMutableDictionary*dic=[[NSMutableDictionaryalloc]initWithObjectsAndKeys:
@"1",@"2",@"2",@"3",@"3",@"4",nil];
[dicremoveObjectForKey:
@"3"];
NSLog(@"%@",dic);
答案:
(C)
A、1=23=4
B、1=22=3
C、2=14=3
D、2=13=2
52、
NSRange的成员变量有:
答案:
(A)
A、location,length
B、width,height
C、location,height
D、length,width
53、
NSDateFormatter*formatter=[[NSDateFormatteralloc]init];
[formattersetAMSymbol:
@"AM"];
[formattersetPMSymbol:
@"PM"];
[formattersetDateFormat:
@"YY-MM-ddhh:
mm:
ssaaa"];
NSString*currentDate=[formatterstringFromDate:
[NSDatedate]];
NSLog(@"%@",currentDate);
打印结果是:
答案:
(D)
A、2012-05-3117:
45:
04PM
B、12-05-3117:
45:
04
C、2012-05-3117:
45:
04
D、12-05-3105:
45:
04PM
54、
内存管理的关键字描述错误的是:
答案:
(C)
A、retaincount是指对象的引用计数。
B、retain关键字可以增大对象的引用计数。
C、release可以减小对象的引用计数,但autorelease不可以
D、dealloc方法不能直接调用
55、
以下对类的描述不正确的是:
答案:
(C)
A、类的接口部分可以包含实例变量、属性和方法
B、可以把声明和实现都放到.h文件中
C、一对文件()只能定义一个类
D、类比较抽象,对象比较具体
56、
关于NSSet描述正确的有:
答案:
(B)
A、NSSet可以存放任何数据类型的数据。
B、NSSet存放数据是无序的。
C、NSSet可以通过下标获取数据。
D、NSSet存放的数据是有序的。
57、
简单类型的成员比如:
int类型成员在使用@property()时,括号中应使用:
答案:
(A)
A、assign
B、copy
C、retain
D、auto
58、
有一个类Student,要求实现:
定义一个实例初始化方法,初始化方法需要传入名字和性别:
答案:
(B)
A、
-(id)initWithName:
(NSString*)namesex:
(NSString*)sex{
if(self){
=name;
=sex;
}
returnself;
}
B、
-(id)initWithName:
(NSString*)namesex:
(NSString*)sex{
if(self=[superinit]){
=name;
=sex;
}
returnself;
}
C、
-(id)initWithName:
(NSString*)namesex:
(NSString*)sex{
if(!
self){
=name;
=sex;