61.寫一個(gè)函數(shù)實(shí)現(xiàn)strlen的功能?
int sl(const char *s)
{
int length = 0;
while (*s!='') {
s++;
length++;
}
return length;
}
62.寫一個(gè)代碼片實(shí)現(xiàn)輸入一個(gè)字符串"20130322152830",輸出一個(gè)NSDate類型的對象,打印該對象輸出2013-03-11 15:28:32
NSString * str = @"20130322152832";
NSDateFormatter * format = [[NSDateFormatter alloc]init];
format.dateFormat = @"yyyyMMddHHmmss";//設(shè)置格式
NSLog(@"%@",[[format dateFromString:str] dateByAddingTimeInterval:8*60*60]);
63.用變量a寫出以下定義
a翼闽、一個(gè)整型數(shù)int a = 10
b、一個(gè)指向整型數(shù)的指針int *p = 10
c、一個(gè)指向指針的指針,它指向的指針是指向一個(gè)整型數(shù)int **p =10
d、一個(gè)有10個(gè)整型數(shù)的數(shù)組 int a[10]
e煞檩、一個(gè)有10個(gè)指針的數(shù)組焰手,該指針是指向一個(gè)整型數(shù)的int *a[10]
f孽拷、一個(gè)指向有10個(gè)整型數(shù)數(shù)組的指針int *a = {1,2,3,4,5,6,7,8,9,10};
g雌续、一個(gè)指向函數(shù)的指針斩个,該函數(shù)有一個(gè)整型參數(shù),并返回一個(gè)整型數(shù)
int *a(int? b){
return b;
}
64.cocoa和 cocoa touch?
cocoa包含F(xiàn)oundation和AppKit框架驯杜,可用于開發(fā)Mac OS X系統(tǒng)的應(yīng)用程序
cocoa touch包含F(xiàn)oundation和UIKit框架受啥,可用于開發(fā)iPhone OS 系統(tǒng)的應(yīng)用程序
Cocoa時(shí)Mac OS X的開發(fā)環(huán)境,cocoa Touch是 Iphone OS的開發(fā)環(huán)境
65.網(wǎng)絡(luò)從下往上分為幾層鸽心?
從下往上:物理層滚局、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層顽频、傳輸層藤肢、會話層、表示層糯景、應(yīng)用層嘁圈。
IP 協(xié)議對應(yīng)網(wǎng)絡(luò)層,TCP 協(xié)議對應(yīng)傳輸層蟀淮,HTTP 協(xié)議對應(yīng)于應(yīng)用層最住。
socket 則是對 TCP/IP協(xié)議的封裝和應(yīng)用。也可以說灭贷,TCP/IP協(xié)議是傳輸層協(xié)議温学,主要解決數(shù)據(jù)如何在網(wǎng)絡(luò)中傳輸,而 HTTTP 是應(yīng)用層協(xié)議甚疟,主要解決
如何包裝數(shù)據(jù)仗岖。
66.
67.多線程的底層實(shí)現(xiàn)?
線程:進(jìn)程中一個(gè)特立獨(dú)行的控制單元(路徑)览妖。多線程:一個(gè)進(jìn)程至少有一個(gè)線程轧拄,即主線程。
①讽膏、Mach 是第一個(gè)以多線程方式處理任務(wù)的系統(tǒng)檩电,因此多線程的底層實(shí)現(xiàn)機(jī)制就是基于 Mach 的線程。
②府树、開發(fā)中很少用到 Mach 級的線程俐末,因?yàn)?Mach級的線程沒有提供多線程的基本特征,線程之間是獨(dú)立的奄侠。
④卓箫、開發(fā)中實(shí)現(xiàn)多線程的方案:
NSThread、GCD垄潮、NSOperationQueue.NSOperation
68.線程之間怎么通信?
①.performSelect:onThread:withObject:waitUntilDone:
②.NSMachPort
69.網(wǎng)絡(luò)圖片問題中怎么解決一個(gè)相同的網(wǎng)絡(luò)地址重復(fù)請求的問題.
利用字典:圖片地址為 key, 下載操作為 value.value
70.用 NSOperation和 NSOperationQueue處理 A.B.C三個(gè)線程,要求執(zhí)行完 A.B 后才能執(zhí)行?
//創(chuàng)建隊(duì)列
NSOperationQueue * queue = [[NSOperationQueue alloc]init];
//創(chuàng)建三個(gè)操作
NSOperation * A = [NSBlockOperation blockOperationWithBlock:^{
NSLog{@"A"};
}];
NSOperation * B = [NSBlockOperation blockOperationWithBlock:^{
NSLog{@"B"};
}];
NSOperation * C = [NSBlockOperation blockOperationWithBlock:^{
NSLog{@"C"};
}];
// 添加依賴
[C addDependency:a];
[C addDependency:b];
//執(zhí)行操作
[queue addOperation:a];
[queue addOperation:b];
[queue addOperation:c];