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语句比选择流程控制语句效率更高