记一次iOS笔试题

2019-07-12  本文已影响0人  biubiu15

2019-07-12 某行的一次笔试题

一 选择题 多选
  1. 在 Objective-C 中, 类的成员变量默认被申明为:
    A.@private
    B.@protected
    C.@public
    D.package

  2. 下面使用到了单例 (singleton) 模式的是:
    A.NSFileManager
    B.NSNotificationCenter
    C.UIApplication
    D.UIDevice

  3. 下面关于方法: [[[obj method1] method2] method3: [obj method4]] 中的 method 的调用顺序:
    A.1234
    B.1243
    C.4123
    D.4321

  4. 在对象的 dealloc 方法中, 关于 [super dealloc] 语句说法正确的是:
    A. [super dealloc] 有没有都无所谓
    B. [super dealloc] 应该放在 dealloc 方法内容第一行
    C. [super dealloc] 应该放在 dealloc 方法内容最后一行
    D. [super dealloc] 位置无所谓, 只要在 dealloc 方法里有就行

  5. Objective-C 的快速枚举对比循环访问的有点, 以下说法正确的是:
    A.使用快速枚举效率更高
    B.语法更简洁
    C.使用更安全
    D.支持更多的数据类型

  6. 关于 iOS 程序后台运行, 正确说法是:
    A.可以后台播放音乐
    B.可以后台定位
    C.可以后台运行VOIP服务
    D.可以在后台发送HTTP请求

  7. ARC 模式下, 下面哪个方法是未被禁用的
    A. retain
    B. copy
    C. release
    D. autorelease

  8. 关于 UIControl 和 UIView 之间的关系, 下面的说法正确的是
    A. UIControl 继承于 UIView
    B. UIView 继承于 UIControl
    C. UIControl 与 UIView 之间没有继承关系
    D. UIControl 和 UIView 都直接继承于 UIResponder

  9. 在给 UIButton 设置图片时, 为了让图片适应按钮的大小, 需要将按钮的 contentMode 设置为
    A.UIViewContentModeScaleToFill
    B.UIViewContentModeScaleAspectFit
    C.UIViewContentModeScaleAspectFill
    D..UIViewContentModeCenter

  10. 下面各数据类型中, 能够直接放进 NSArray 的有
    A. BOOL
    B. NSInteger
    C.NSString
    D. NSArray

  11. 关于 XML 和 JSON , 下列说法正确的有
    A. XML 是一种类似 HTML 的语言, JSON 是一种轻量级的数据交换格式.
    B. XML 是基于键值对的结构
    C. JSON 有 DOM 和 SAX 两种解析方式
    D. JSON 和 XML 之间可以相互转换

二 填空
  1. @property 的作用是__________, @synthesizer 的作用是________
  2. 分类 (category) 能够向一个已有的类中添加__________
    扩展 (extension) 能够向已有的的类中添加_________
  3. #import 和 #include 的区别是________
  4. 以下函数代码:
- (void)setName:(NSString *)newName {
    self.name = newName;
}

被调用执行会导致的结果是________

  1. 协议 (protocol) 可以分为两种, 其中以关键字_________申明的协议可以不被实现.
三 简答题
  1. 属性 readwrite readonly assign retain copy nonatomic 各是什么作用, 在哪种情况下使用?
  2. 写一个 setter 方法用于完成 @property (nonatomic, retain) NSString *name;
    写一个 setter 方法用于完成 @property (nonatomic, copy) NSString *name;

3.类别的作用?继承和类别在实现中有何区别?
4.什么时候用delegate? 什么时候用 Notification?
5.什么是 KVC 和 KVO?

四 程序题
  1. 写一个委托的 interface
  2. 请实现一个 NSString 的方法
- (id)initWithCString:(const char *)nullTerminatedCString encoding:(NSStringEncoding)encoding;



简单解答

写一个 setter 方法用于完成 @property (nonatomic, retain) NSString *name;
- (void)setName:(NSString *)name {
    if (_name != name) {
        [_name release];
        _name = [name retain];
    }
}
写一个 setter 方法用于完成 @property (nonatomic, copy) NSString *name;
- (void)setName:(NSString *)name {
    if (_name != name) {
        [_name release];
        _name = [name copy];
    }
}
请实现一个 NSString 的方法:
+ (id)initWithCString:(const char *)nullTerminatedCString encoding:(NSStringEncoding)encoding;

+ (id) stringWithCString: (const char*)nullTerminatedCString
                encoding: (NSStringEncoding)encoding
{
    NSString  *obj;
    
    obj = [self allocWithZone: NSDefaultMallocZone()];
    obj = [obj initWithCString: nullTerminatedCString encoding: encoding];
    return AUTORELEASE(obj);
}
上一篇 下一篇

猜你喜欢

热点阅读