iOS面试题-第七页

作者: 像羽毛那样轻 | 来源:发表于2016-03-30 10:31 被阅读27次

    61.写一个函数实现strlen的功能?

    int sl(const char *s)

    {

    int length = 0;

    while (*s!='') {

    s++;

    length++;

    }

    return length;

    }

    62.写一个代码片实现输入一个字符串"20130322152830",输出一个NSDate类型的对象,打印该对象输出2013-03-11 15:28:32

    NSString * str = @"20130322152832";

    NSDateFormatter * format = [[NSDateFormatter alloc]init];

    format.dateFormat = @"yyyyMMddHHmmss";//设置格式

    NSLog(@"%@",[[format dateFromString:str] dateByAddingTimeInterval:8*60*60]);

    63.用变量a写出以下定义

    a、一个整型数int a = 10

    b、一个指向整型数的指针int *p = 10

    c、一个指向指针的指针,它指向的指针是指向一个整型数int **p =10

    d、一个有10个整型数的数组 int a[10]

    e、一个有10个指针的数组,该指针是指向一个整型数的int *a[10]

    f、一个指向有10个整型数数组的指针int *a = {1,2,3,4,5,6,7,8,9,10};

    g、一个指向函数的指针,该函数有一个整型参数,并返回一个整型数

    int *a(int  b){

    return b;

    }

    64.cocoa和 cocoa touch?

    cocoa包含Foundation和AppKit框架,可用于开发Mac OS X系统的应用程序

    cocoa touch包含Foundation和UIKit框架,可用于开发iPhone OS 系统的应用程序

    Cocoa时Mac OS X的开发环境,cocoa Touch是 Iphone OS的开发环境

    65.网络从下往上分为几层?

    从下往上:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

    IP 协议对应网络层,TCP 协议对应传输层,HTTP 协议对应于应用层。

    socket 则是对 TCP/IP协议的封装和应用。也可以说,TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,而 HTTTP 是应用层协议,主要解决

    如何包装数据。

    66.

    67.多线程的底层实现?

    线程:进程中一个特立独行的控制单元(路径)。多线程:一个进程至少有一个线程,即主线程。

    ①、Mach 是第一个以多线程方式处理任务的系统,因此多线程的底层实现机制就是基于 Mach 的线程。

    ②、开发中很少用到 Mach 级的线程,因为 Mach级的线程没有提供多线程的基本特征,线程之间是独立的。

    ④、开发中实现多线程的方案:

    NSThread、GCD、NSOperationQueue.NSOperation

    68.线程之间怎么通信?

    ①.performSelect:onThread:withObject:waitUntilDone:

    ②.NSMachPort

    69.网络图片问题中怎么解决一个相同的网络地址重复请求的问题.

    利用字典:图片地址为 key, 下载操作为 value.value

    70.用 NSOperation和 NSOperationQueue处理 A.B.C三个线程,要求执行完 A.B 后才能执行?

    //创建队列

    NSOperationQueue * queue = [[NSOperationQueue alloc]init];

    //创建三个操作

    NSOperation * A = [NSBlockOperation blockOperationWithBlock:^{

    NSLog{@"A"};

    }];

    NSOperation * B = [NSBlockOperation blockOperationWithBlock:^{

    NSLog{@"B"};

    }];

    NSOperation * C = [NSBlockOperation blockOperationWithBlock:^{

    NSLog{@"C"};

    }];

    // 添加依赖

    [C addDependency:a];

    [C addDependency:b];

    //执行操作

    [queue addOperation:a];

    [queue addOperation:b];

    [queue addOperation:c];

    相关文章

      网友评论

        本文标题:iOS面试题-第七页

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