iOS面试题-第七页

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面试题-第七页)