iOS笔试题

2016-10-09  本文已影响152人  townfish

HS电子2101笔试题

、关于OC语言的基本特点,下列说法正确的有(   )

A.OC语言是C语言的一个超集,只是在C的基础之上加上了面向对象(oop)的特性。

B.OC与Java语言相同都是单继承,这一点与C++语言不同(多重继承)。

C.OC不支持命名空间机制,取而代之的是在类名之前添加前缀,以此来区分。

、关于OC的内存管理,下列说法正确的有(   )

A.iOS内存管理的方式有手动管理(MRC)和自动内存管理(ARC)。

B.谁申请,谁释放。

C.不用遵循Cocoa Touch的使用原则。

D.内存管理主要要避免"过早释放"和"内存泄漏"。

E.关键字 alloc 或 new 生成的对象需要手动释放。

F.设置正确的property属性,对于retain需要在合适的地方释放。

G.ARC 模式中,强引用的持有对象,弱引用的也持有对象。

三、关于属性assign、retain、strong、weak、copy、nonatomic、readwrite、readonly的作用,下面说法正确的是(   )

A. assign是赋值特性, setter 方法将传入参数赋值给实例变量;仅设置变量时。

B. retain 表示持有特性, setter 方法将传入参数先保留,再赋值,传入参数的 retaincount 会 +1。

C. nonatomic 非原子操作,决定编译器生成的 setter 、getter 是否是原子操作, atomic表示多线程安全,一般使用nonatomic。

D.copy表示赋值特性, setter 方法将传入对象复制一份,用在多个对象共享一个变量的时候。

E.在ARC编译的开发中,当一个对象不再有strong类型的指针指向它的时候,它会被释放,即使还有weak型指针指向它

F. readwrite 是可读可写特性,需要生成 getter 方法和 setter 方法时; readonly 是只读特性,只会生成 getter 方法,不会生成 setter 方法,不希望属性在类外改变。

四、使用block和使用delegate的优点,delegate和notification的区别,下列说法正确的有(   )

A.OC中使用 delegate 类型(id)完成委托模式可以指向一切对象,使委托模式更为简洁,耦合度低。

B.使用block实现委托模式,其优点是回调的block代码块定义在 委托对象函数内部,使代码更为紧凑;适配对象不再需要实现某个 protocol ,代码更为简洁。

C.传递消息的时候, delegate 是一对一的, notification 是一对多的。

D.delegate 需要两者之间必须建立联系,不然没法调用代理的方法,notification 不需要两者之间有联系。

五、下面函数的实现是否正确(   )

@implementation Person

-(void)setAge:(int)newAge {

  self.age = newAge;

}

@end

A.对

B.错

六、对于有一个NSObject的形式参数,无返回值的block,下面声明语句中正确的是(   )

A.typedef void(didFinishBlock)(NSObject *obj);

B.typedef void(^didFinishBlock)(NSObject *obj1,NSObject *obj2);

C.typedef void(^didFinishBlock)(NSObject *obj);

D.typedef void(^didFinishBlock)(NSObject obj);

七、对于语句NSString *obj = [NSData alloc] init]; obj在编译时和运行时分别是什么类型的对象?(   )

A.NSString、未知

B.NSData、NSData

C.NSString、NSString

D.NSString、NSData

八、关于NSMutableArray和NSArray的使用,下面说法正确的有(   )

A. NSArray 的元素是有序的; NSMutableArray 的元素是无序的。

B.尽量使用 NSMutableArray ,而不是使用 NSArray 。

C. NSArray 的第一个数据的下标为0;而 NSMutableArray 的第一个数据的下标为1;

D.使用过程中不需要对其中元素增删换的数组是 NSArray ;使用过程中要对其袁术增删换的可变数组是 NSMutableArray 。

九、关于开发编码及命名规范,下面说法正确的有(   )

A.制订开发规范的目的:为了团队各个成员之间代码的互通、可读、易维护性。故此,请摒弃你之前独特、个性的编码风格,以保证团队每个成员都容易阅读维护你的代码,因此请认真、仔细地阅读此规范。

B.既清晰又简洁的命名最好,但以清晰为主,不要用单词简写(非常常用和特殊情况除外),尽量使用全称。你的命名应该符合OC标准,让人一看就知道是什么意思,不要让人有疑问,尽量使用英文而不是拼音。

C.规范的方法名,使用大驼峰法,应该看起来像一个完整的句子,读过便知函数作用。(备注:大驼峰(UserNameLabel):每个单词首字母大写:小驼峰(userNameLabel):除第一个单词外,其它单词首字母大写。)

D.删除多余的空行。具体操作中,所有方法与方法之间建议空1行,所有代码块之间建议空1-2行。

十、下面语句中,死循环的有(   )

A.while( 1 ) { }

B.for(  ; ;) { }

C.int i = 0; while ( i>0 ) {i ++;}

D.for ( int i = 0; i<3; i+1 ) { }

十一、关于switch语句和if语句的区别与联系,下面说法正确的有(   )

A.均表示条件的判断

B.switch语句表达式只能处理是整型、字符型和枚举类型,而选择流程语句则没有这样的限制。

C.switch语句比选择流程控制语句效率更高

上一篇下一篇

猜你喜欢

热点阅读