iOS面試題-每日十道-第十一天

有誤的地方 歡迎高手能給指出

一. 什么是動(dòng)態(tài)綁定

動(dòng)態(tài)綁定是指在執(zhí)行期間(非編譯期)判斷所引用對(duì)象的實(shí)際類型,根據(jù)其實(shí)際的類型調(diào)用其相應(yīng)的方法.程序運(yùn)行的過程中,把函數(shù)調(diào)用與響應(yīng)調(diào)用所需要的代碼想結(jié)合的過程為動(dòng)態(tài)綁定

二. 什么是協(xié)議?分幾層?

通訊協(xié)議采用了4層的層級(jí)結(jié)構(gòu),每一層都呼叫一下層所提供的網(wǎng)絡(luò)來完成自己的需求.這4層分別為:

  • 應(yīng)用層:應(yīng)用程序間溝通的層,如簡(jiǎn)單電子郵件傳輸(SMTP).文件傳輸協(xié)議(FTP).網(wǎng)絡(luò)遠(yuǎn)程訪問協(xié)議(Telnet)等.
  • 傳輸層:在此層中,它提供了節(jié)點(diǎn)間的數(shù)據(jù)傳送服務(wù),如傳輸控制協(xié)議(TCP).用戶數(shù)據(jù)協(xié)議(UDP)等.TCP和UDP給數(shù)據(jù)包加入傳輸數(shù)據(jù)并把它傳輸?shù)较乱粚又?這一層負(fù)責(zé)傳送數(shù)據(jù),并且確定數(shù)據(jù)已被傳送
  • 互聯(lián)網(wǎng)絡(luò)層: 負(fù)責(zé)提供基本的數(shù)據(jù)封包傳送功能,讓每一塊數(shù)據(jù)包都能夠達(dá)到目的主機(jī)(但不檢查是否被正確傳送),如網(wǎng)絡(luò)協(xié)議(IP).
  • 網(wǎng)絡(luò)接口層:對(duì)實(shí)際的網(wǎng)絡(luò)媒體管理.定義如何使用實(shí)際網(wǎng)絡(luò)(如Ethernet Serial Line等)來傳送數(shù)據(jù)

三. TCP和UDP的區(qū)別?這兩包的字節(jié)內(nèi)容有啥不同?

TCP(Transmission Control Protocol沙廉,傳輸控制協(xié)議)

TCP是基于鏈接的協(xié)議,也就是說,在正是收發(fā)數(shù)據(jù)前,必須和對(duì)方建立可靠的鏈接.一個(gè)TCP鏈接必須要經(jīng)過三次"對(duì)話"才能建立起來,其中的過程非常復(fù)雜,簡(jiǎn)單介紹:主機(jī)A向主機(jī)B發(fā)出鏈接請(qǐng)求數(shù)據(jù)包"我給你發(fā)數(shù)據(jù),可以嗎?"這是第一次對(duì)話;主機(jī)B??主機(jī)A發(fā)送同意鏈接和要求同步(同步就是兩臺(tái)主機(jī)一個(gè)在發(fā)送,一個(gè)在介紹,協(xié)調(diào)工作)的數(shù)據(jù)包:"可以",這是第二次對(duì)話;主機(jī)A再發(fā)出一個(gè)數(shù)據(jù)包確認(rèn)主機(jī)B的要求同步;"我發(fā)的 你接著",這是第三次對(duì)話. 三次對(duì)話的目的是使數(shù)據(jù)包發(fā)送和接受同步,經(jīng)過三次對(duì)話后,主機(jī)才向主機(jī)B正是發(fā)送數(shù)據(jù).

UDP(User Data Protocol母怜,用戶數(shù)據(jù)報(bào)協(xié)議)

UDP是與TCP相對(duì)應(yīng)的協(xié)議.它是面向非連接的協(xié)議,它不與對(duì)方建立連接,而是直接就把數(shù)據(jù)包發(fā)送過去!
UDP適合用于一次只傳送少量的數(shù)據(jù),對(duì)可靠性要求不高的應(yīng)用環(huán)境,比如,我們經(jīng)常使用"ping"命令來測(cè)試兩臺(tái)主機(jī)之間TCP/IP通信是否正常.其實(shí)"ping"命令的原理就想對(duì)方主機(jī)發(fā)送UDP數(shù)據(jù)包脱篙,然后對(duì)方主機(jī)確認(rèn)收到數(shù)據(jù)包馏艾,如果數(shù)據(jù)包是否到達(dá)的消息及時(shí)反饋回來,那么網(wǎng)絡(luò)就是通的做入。正因?yàn)閁DP協(xié)議沒有連接的過程喂很,所以它的通信效果高;但也正因?yàn)槿绱颂疲目煽啃圆蝗鏣CP協(xié)議高械巡。QQ就使用UDP發(fā)消息,因此有時(shí)會(huì)出現(xiàn)收不到消息的情況饶氏。

四. 你是否接觸過OC中的反射機(jī)制?

NSObject常用的方法:
判斷一個(gè)類是否屬于某個(gè)類或者是它的子類
- (BOOL)isKindOfClass:(Class)aClass;
判斷一個(gè)類對(duì)象是否為一個(gè)類的實(shí)例(不包括子類)
- (BOOL)isMemberOfClass:(Class)aClass
Class的反射

  • 根據(jù)字符串創(chuàng)建一個(gè)類
    Class class = NSClassFromString(@“Student”)
    Student *st= [class alloc]init]
  • 將類名改為字符串
    Class class = [Student class];
    NSString *str = NSStringFromClass(class);

SEL的反射
通過方法的字符串形式實(shí)例化方法

 SEL sel = NSSelectorFromString(@“setName:”);
      [st performSelector:sel withObject:@“Mike”];

將方法變成字符串

    NSStringFromSelector(@selector(setName:));

五.C和Obj-c如何混用

  • obj-c的編譯器處理后綴為m的文件時(shí)讥耗,可以識(shí)別obj-c和c的代碼, 處理mm文件可以識(shí)別obj-c,c,c++代碼疹启,但cpp文件必須只能用c/c++代碼古程,而且cpp文件include的頭文件中,也不能出現(xiàn)obj- c的代碼喊崖,因?yàn)閏pp只是cpp
  • 在mm文件中混用cpp直接使用即可挣磨,所以obj-c混cpp不是問題
  • 在cpp中混用obj- c其實(shí)就是使用obj-c編寫的模塊是我們想要的。
    如果模塊以類實(shí)現(xiàn)荤懂,那么要按照cpp class的標(biāo)準(zhǔn)寫類的定義茁裙,頭文件中不能出現(xiàn)obj-c的東西,包括#import cocoa的节仿。實(shí)現(xiàn)文件中晤锥,即類的實(shí)現(xiàn)代碼中可以使用obj-c的東西,可以import,只是后綴是mm。
    如果模塊以函數(shù)實(shí)現(xiàn)矾瘾,那么頭文件要按 c的格式聲明函數(shù)女轿,實(shí)現(xiàn)文件中,c++函數(shù)內(nèi)部可以用obj-c壕翩,但后綴還是mm或m蛉迹。

總結(jié):只要cpp文件和cpp include的文件中不包含obj-c的東西就可以用了,cpp混用obj-c的關(guān)鍵是使用接口放妈,而不能直接使用實(shí)現(xiàn)代碼北救,實(shí)際上cpp混用的是 obj-c編譯后的o文件,這個(gè)東西其實(shí)是無差別的芜抒,所以可以用珍策。obj-c的編譯器支持cpp.

六. 談?wù)剅untime機(jī)制

  • runtime,運(yùn)行時(shí)機(jī)制,它是一套C語言庫
  • 實(shí)際上我們編寫的所有OC代碼挽绩,最終都是轉(zhuǎn)成了runtime庫的東西,比如類轉(zhuǎn)成了runtime庫里面的結(jié)構(gòu)體等數(shù)據(jù)類型驾中,方法轉(zhuǎn)成了runtime庫里面的C語言函數(shù)唉堪,平時(shí)調(diào)方法都是轉(zhuǎn)成了objc_msgSend函數(shù)(所以說OC有個(gè)消息發(fā)送機(jī)制)
  • 因此,可以說runtime是OC的底層實(shí)現(xiàn)肩民,是OC的幕后執(zhí)行者
  • 有了runtime庫唠亚,能做什么事情呢?runtime庫里面包含了跟類持痰、成員變量灶搜、方法相關(guān)的API,比如獲取類里面的所有成員變量工窍,為類動(dòng)態(tài)添加成員變量割卖,動(dòng)態(tài)改變類的方法實(shí)現(xiàn),為類動(dòng)態(tài)添加新的方法等
  • KVO是runtime的一個(gè)典型應(yīng)用

七. AFN 與 ASI 有什么區(qū)別

  • AFN基于NSURL患雏,ASI基于底層的CFNetwork框架鹏溯,因此ASI的性能優(yōu)于AFN
  • AFN采取block的方式處理請(qǐng)求,ASI最初采取delegate的方式處理請(qǐng)求淹仑,后面也增加了block的方式
  • AFN只封裝了一些常用功能丙挽,滿足基本需求,直接忽略了很多擴(kuò)展功能匀借,比如沒有封裝同步請(qǐng)求颜阐;ASI提供的功能較多,預(yù)留了各種接口和工具供開發(fā)者自行擴(kuò)展
  • AFN直接解析服務(wù)器返回的JSON吓肋、XML等數(shù)據(jù)凳怨,而ASI比較原始,返回的是NSData二進(jìn)制數(shù)據(jù)

八. 如果后期需要增加數(shù)據(jù)庫中的字段怎么實(shí)現(xiàn)是鬼,如果不使用CoreData呢猿棉?

編寫SQL語句來操作原來表中的字段

  • 增加表字段
    ALTER TABLE 表名 ADD COLUMN 字段名 字段類型;
  • 刪除表字段
    ALTER TABLE 表名 DROP COLUMN 字段名;
  • 修改表字段
    ALTER TABLE 表名 RENAME COLUMN 舊字段名 TO 新字段名;

九. 簡(jiǎn)單描述下客戶端的緩存機(jī)制

  • 緩存可以分為:內(nèi)存數(shù)據(jù)緩存磅叛、數(shù)據(jù)庫緩存、文件緩存
  • 每次想獲取數(shù)據(jù)的時(shí)候
  • 先檢測(cè)內(nèi)存中有無緩存
  • 再檢測(cè)本地有無緩存(數(shù)據(jù)庫\文件)
  • 最終發(fā)送網(wǎng)絡(luò)請(qǐng)求
  • 將服務(wù)器返回的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行緩存(內(nèi)存萨赁、數(shù)據(jù)庫弊琴、文件), 以便下次讀取

十. 利用Socket建立網(wǎng)絡(luò)連接的步驟

建立Socket連接至少需要一對(duì)套接字杖爽,其中一個(gè)運(yùn)行于客戶端敲董,稱為ClientSocket ,另一個(gè)運(yùn)行于服務(wù)器端慰安,稱為ServerSocket.
套接字之間的連接過程分為三個(gè)步驟:服務(wù)器監(jiān)聽腋寨,客戶端請(qǐng)求,連接確認(rèn).

  • 服務(wù)器監(jiān)聽:服務(wù)器端套接字并不定位具體的客戶端套接字化焕,而是處于等待連接的狀態(tài)萄窜,實(shí)時(shí)監(jiān)控網(wǎng)絡(luò)狀態(tài),等待客戶端的連接請(qǐng)求撒桨。
  • 客戶端請(qǐng)求:指客戶端的套接字提出連接請(qǐng)求查刻,要連接的目標(biāo)是服務(wù)器端的套接字。為此凤类,客戶端的套接字必須首先描述它要連接的服務(wù)器的套接字穗泵,指出服務(wù)器端套接字的地址和端口號(hào),然后就向服務(wù)器端套接字提出連接請(qǐng)求谜疤。
  • 連接確認(rèn):當(dāng)服務(wù)器端套接字監(jiān)聽到或者說接收到客戶端套接字的連接請(qǐng)求時(shí)佃延,就響應(yīng)客戶端套接字的請(qǐng)求,建立一個(gè)新的線程夷磕,把服務(wù)器端套接字的描述發(fā)給客戶端履肃,一旦客戶端確認(rèn)了此描述,雙方就正式建立連接坐桩。而服務(wù)器端套接字繼續(xù)處于監(jiān)聽狀態(tài)榆浓,繼續(xù)接收其他客戶端套接字的連接請(qǐng)求

純手動(dòng) 有地方是個(gè)人理解 有誤的地方希望大家能給指出 謝謝
大家面試中遇到的問題 也可以留言分享
如果您喜歡 或者 對(duì)您有點(diǎn)幫助 希望點(diǎn)一下喜歡 謝謝了~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市撕攒,隨后出現(xiàn)的幾起案子陡鹃,更是在濱河造成了極大的恐慌,老刑警劉巖抖坪,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件萍鲸,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡擦俐,警方通過查閱死者的電腦和手機(jī)脊阴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人嘿期,你說我怎么就攤上這事品擎。” “怎么了备徐?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵萄传,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我蜜猾,道長(zhǎng)秀菱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任蹭睡,我火速辦了婚禮衍菱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘肩豁。我一直安慰自己脊串,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布清钥。 她就那樣靜靜地躺著琼锋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪循捺。 梳的紋絲不亂的頭發(fā)上斩例,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天雄人,我揣著相機(jī)與錄音从橘,去河邊找鬼。 笑死础钠,一個(gè)胖子當(dāng)著我的面吹牛恰力,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播旗吁,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼踩萎,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了很钓?” 一聲冷哼從身側(cè)響起香府,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎码倦,沒想到半個(gè)月后企孩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡袁稽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年勿璃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡补疑,死狀恐怖歧沪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情莲组,我是刑警寧澤诊胞,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站胁编,受9級(jí)特大地震影響厢钧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜嬉橙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一早直、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧市框,春花似錦霞扬、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至粪滤,卻和暖如春斧拍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背杖小。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工肆汹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人予权。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓昂勉,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親扫腺。 傳聞我的和親對(duì)象是個(gè)殘疾皇子岗照,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • iOS面試小貼士 ———————————————回答好下面的足夠了------------------------...
    不言不愛閱讀 1,966評(píng)論 0 7
  • 多線程、特別是NSOperation 和 GCD 的內(nèi)部原理笆环。運(yùn)行時(shí)機(jī)制的原理和運(yùn)用場(chǎng)景攒至。SDWebImage的原...
    LZM輪回閱讀 2,004評(píng)論 0 12
  • 史上最全的iOS面試題及答案 iOS面試小貼士———————————————回答好下面的足夠了----------...
    Style_偉閱讀 2,346評(píng)論 0 35
  • 1.寫一個(gè)NSString類的實(shí)現(xiàn) +(id)initWithCString:(c*****t char *)nu...
    韓七夏閱讀 3,752評(píng)論 2 37
  • 史上最全的iOS面試題及答案 迷途的羔羊--專為路癡量身打造的品牌。史上最精準(zhǔn)的定位躁劣。想迷路都難迫吐!閃電更新中......
    南虞閱讀 1,500評(píng)論 0 8