牛客网 iOS 题 21-41

作者: iOS佥 | 来源:发表于2018-05-12 11:02 被阅读8次

    牛客网 iOS 题 21-41

    21.Objective-C 有私有方法吗?有私有变量吗?

    答案:<font color=“LightYellow”>没有私有方法,有私有变量</font>

    在 interface 里定义变量默认是保护的,在 plementation 里定义变量默认是私有的
    Objective-C 类里面方法只有两种:静态方法和实例方法,且支持动态解析,没有绝对的私有方法

    22.category 相关

    1. category 可以添加新的方法;
    2. category 不能删除修改之前的方法;
    3. 可将类的实现分散到多个不同文件或多个不同框架中;
    4. 可创建对私有方法的前向引用。

    23.Objective—C 内存管理

    1. 当使用 ARC 管理内存时,代码中出现 autorelease 会导致编译错误,因为 ARC 会自动插入retain, release, autorelease, dealloc 等关键字;
    2. autoreleasepool 在 drain 的时候会释放在其中分配的对象;
    3. 当使用ARC来管理内存时,在线程中大量分配对象而不用autoreleasepool则可能会造成内存泄露;
    4. 在使用ARC的项目中不能使用NSZone。

    24.Block 作为属性在 ARC 下应该使用的语义设置为?

    1. retain;
    2. weak;
    3. strong;
    4. copy;

    答案:<font color=“LightYellow”>4</font>

    Block属性的声明,首先需要用copy修饰符,因为只有copy后的Block才会在堆中,栈中的Block的生命周期是和栈绑定的

    25.#import 和 #include 的区别 与 和 @class 的区别:

    1. import 不会导致重负导入;

    2. @class 一般用于声明某个字符串作为类名使用,并没有导入 .h 文件中的内容,不会引起交叉编译的问题。

    26.Objective-C 的类可以多重继承吗?可以实现多接口吗?Category 是什么?重写一个类的方式用继承好还是分类好?为什么?

    1. Objective-C 的类不可以多重继承,OC 的类只能继承自一个类;
    2. (因该是协议 protocol )可以遵守多个协议然后分别实现多个协议的方法;
    3. Category 是分类,可以为已存在的类添加方法,把不同的类方法分配到不同的分类文件中;
    4. 用继承重写一个类比较好。

    使用分类为原有的类添加方法的时候一般会给方法名添加前缀,如果不添加前缀的话会可能重名而覆盖原有方法,这种情况下出错的话使用这个类的地方都会出现问题。使用继承的话,则只是使用这个子类的地方有问题。

    27.NSNotification 和 KVO 的区别和用法是什么?实现上有什么区别?如果用 protocol 和 delegate 来实现类似的功能可能吗?会存在什么潜在问题?

    1. NSNotification 和 KVO 都是观察者模式的具体实现。最特别的区别在于:

      1. NSNotification 拥有一个消息中心,一个全局对象,注册方法灵活,观察者只要向消息中心注册, 即可接受其他对象发送来的消息,消息发送者和消息接受者两者可以互相一无所知,完全解耦。NSNotification可以应用于任意时间和任何对象,观察者可以有多个,
      2. Key-Value Observing,是Foundation框架提供的一种机制,使用KVO,可以方便地对指定对象的某个属性进行观察,当属性发生变化时,进行通知.
    2. 使用 protocol 和 delegate 实现:
      A 对象作为被观察者,B 对象作为观察者,C 作为通知中心。C 对象需要 B 作为 delegate, 当 A 对象发生变化时,给 C 发送消息,C 筛选找到特定的 delegate 对象,尝试调用 B 注册的方法。

      问题:管理复杂,灵活性低。

    28.设计一个自定义的 popup view,来替代系统的 alertView

    参考MMPopupView

    29.下列正则表达式不能匹配“www.innotechx.com”的是:

    1. ^w+.w+.w+$
    2. [w]{0,3}.[a-z]*.[a-z]+
    3. ^w.*com$
    4. [w]{3}.[a-z]{11}.[a-z]

    答案:<font color=“LightYellow”>1,4</font>
    [图片上传失败...(image-842f83-1526094160744)]

    30.以下代码的输出为:

        NSString *str = [[NSString alloc]initWithFormat:@"%@", @"iLanou123ios"];
        NSString *str1 = [str substringToIndex:3];
        NSString *str2 = [str substringWithRange:NSMakeRange(6, 3)];
        NSString newStr = [str1 stringAppendingString:str2];
        NSLog(@"%@", newStr);
    
    1. iLanou;
    2. iL123;
    3. iLa123;
    4. iLaios;

    答案:<font color=“LightYellow”>3</font>

    str2 初始化为 str 的第6个字符开始截取3个字符的字符串

    31.以下适合在客户端做数据持久化存储的数据的有

    1. redis;
    2. localStorage;
    3. sessionStorage;
    4. userData;

    答案:<font color=“LightYellow”>2,4</font>

    1. redis 是一个开源的使用 ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、key-value 数据库;
    2. localStorage:没有时间限制的数据存储;
    3. sessionStorage:针对一个 Session 的数据存储,生命周期为当前窗口或标签页;
    4. userData 常用做持久化存储,例如实现免登陆功能就是获取之前存储的用户数据实现的。

    32.Objective-C 声明一个类所要用到的编译指令是

    1. @implementation SomeClass
    2. @autorelease SomeClass
    3. @protocol SomeClass
    4. @interface SomeClass

    答案:<font color=“LightYellow”>3</font>

    1:声明一个类的实现部分;
    2:声明自动释放池;
    3:声明协议;

    33.同23

    34.使用 Xcode 创建工程的同时支持创建版本管理库的是 Git

    35.NSObject 的内省方法:

    1. isMemberOfClass 揭示对象的继承关系;
    2. isKindOfClass 揭示对象的继承关系;
    3. confirmsToProtocol 是否遵守某个协议;
    4. responseToSelector 是否实现某个方法。

    36.应用 UI 卡顿的常见原因:

    1. 人为在 UI 线程职工做轻微耗时操作,导致 UI 线程卡顿;
    2. 布局 layout 过于复杂,无法在 16ms 内完成渲染;
    3. 同一时间动画执行的次数过多,导致 CPU 或 GPU 负载过重;
    4. 内存频繁触发 GC 过多(同一帧中重复创建内存),导致暂时阻塞渲染操作。

    37.以下专门实现音频的方式:

    1. Audio Queue Services 音频队列服务
    2. OpenGL 跨平台的开源音频处理接口
    3. System Sound Service 系统声音服务
    4. AVAudioPlayer 高级音频播放器

    38.实现自定义对象的归档必须实现的协议是NSCoding协议

    NSCoding协议有两个方法:

    1. encodeWithCoder方法对对象的属性数据做编码处理;
    2. initWithCoder解码归档数据来初始化对象。

    39.地图的使用中,以下哪个类或方法不是用于定位的

    1. CLLocationAccuracy
    2. locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArry *)locations
    3. CLLocationManager *locationManager=[[CLLocationManager alloc]int];
    4. CLLocationDistance

    题目设置比较模糊,暂无答案

    40.设计一台能制作各种口味咖啡的自动售卖机的 App 应用,可以在附近点单,然后以 App 为凭证取走咖啡。分析目标用户的常见使用场景,总结方案设计要点。

    网易交互设计题

    41.同40

    相关文章

      网友评论

        本文标题:牛客网 iOS 题 21-41

        本文链接:https://www.haomeiwen.com/subject/htvcdftx.html