我的筆試題

1稽犁、OC語言的基本特點(diǎn) 優(yōu)缺點(diǎn)

objc優(yōu)點(diǎn):

1) Cateogies

2) Posing

3) 動(dòng)態(tài)識別(多態(tài)用到才去識別)

4) 指標(biāo)計(jì)算

5)彈性訊息傳遞

6) 不是一個(gè)過度復(fù)雜的 C 衍生語言

7) Objective-C 與 C++ 可混合編程

缺點(diǎn):

1) 不支援命名空間

2) 不支持運(yùn)算符重載

3)不支持多重繼承

4)使用動(dòng)態(tài)運(yùn)行時(shí)類型渣叛,所有的方法都是函數(shù)調(diào)用,所以很多編譯時(shí)優(yōu)化方法都用不到房揭。(如內(nèi)聯(lián)函數(shù)等),性能低。

2拦焚、#import與@class的區(qū)別

import會包含這個(gè)類的所有信息怜奖,包括實(shí)體變量和方法浑测,而@class只是告訴編譯器。其后面聲明的名稱是類的名稱歪玲,至于這些類是如何定義的迁央,暫時(shí)不用考慮,后面會再告訴你滥崩。

3岖圈、簡述類目優(yōu)點(diǎn)和缺點(diǎn),如果覆蓋本類或者父類的方法钙皮,會出現(xiàn)什么問題

優(yōu)點(diǎn):不需要通過增加子類而增加現(xiàn)有類的方法蜂科,且類目中的方法與原始類方法基本沒有區(qū)別

缺點(diǎn):無法向類目中添加實(shí)例變量

出現(xiàn)的問題:覆蓋后原始類的方法沒辦法調(diào)用 注意這里不是方法重寫

4、簡述內(nèi)存管理的基本原則

MRC黃金法則:當(dāng)你使用alloc短条、copy(mutableCopy)或者retain一個(gè)對象時(shí)导匣。你必須使用相應(yīng)的release或者autorelease將其釋放

ARC自動(dòng)管理:自動(dòng)引用計(jì)數(shù)

5、什么是ARC技術(shù)?什么是GC茸时?他們有什么區(qū)別

ARC我們稱之為自動(dòng)引用計(jì)數(shù)贡定,本質(zhì)還是MRC只是在我們編寫代碼的時(shí)候不需要去手動(dòng)釋放內(nèi)存編譯器會自動(dòng)管理內(nèi)存

GC既內(nèi)存垃圾回收機(jī)制 Mac10.8之后不再支持GC(移動(dòng)端不存在GC)

從iOS和Android的內(nèi)存使用情況來看ARC明顯好于GC

6、深屹蚊,淺復(fù)制的基本概念以及他們的區(qū)別

淺復(fù)制:只復(fù)制對象本身(指針地址)厕氨,不對里面的屬性復(fù)制

深復(fù)制:不僅復(fù)制對象本身进每,(指針指向的地址),對象持有的屬性對象也做復(fù)制命斧;

7田晚、內(nèi)存中的堆取和棧區(qū)的差別

棧區(qū)(stack)由編譯器自動(dòng)分配釋放,存放方法(函數(shù))的參數(shù)值国葬,局部變量的值等

堆认屯健(heap)一般由程序員分配與釋放,如程序員不釋放汇四,則內(nèi)存溢出

靜態(tài)存儲區(qū):內(nèi)存在程序編譯的時(shí)候就已經(jīng)分配好接奈,這塊內(nèi)存在程序的整個(gè)運(yùn)行期間都存在。它主要存放靜態(tài)數(shù)據(jù)通孽、全局?jǐn)?shù)據(jù)和常量序宦。

棧區(qū):在執(zhí)行函數(shù)時(shí),函數(shù)內(nèi)局部變量的存儲單元都可以在棧上創(chuàng)建背苦,函數(shù)執(zhí)行結(jié)束時(shí)這些存儲單元自動(dòng)被釋放互捌。棧內(nèi)存分配運(yùn)算內(nèi)置于處理器的指令集中,效率很高行剂,但是分配的內(nèi)存容量有限秕噪。

堆區(qū):亦稱動(dòng)態(tài)內(nèi)存分配。程序在運(yùn)行的時(shí)候用malloc或new申請任意大小的內(nèi)存厚宰,程序員自己負(fù)責(zé)在適當(dāng)?shù)臅r(shí)候用free或delete釋放內(nèi)存腌巾。動(dòng)態(tài)內(nèi)存的生存期可以由我們決定,如果我們不釋放內(nèi)存铲觉,程序?qū)⒃谧詈蟛裴尫诺魟?dòng)態(tài)內(nèi)存澈蝙。 但是,良好的編程習(xí)慣是:如果某動(dòng)態(tài)內(nèi)存不再使用备燃,需要將其釋放掉碉克,否則,我們認(rèn)為發(fā)生了內(nèi)存泄漏現(xiàn)象并齐。

8漏麦、用戶自定義了一個(gè)對象,如何實(shí)現(xiàn)拷貝(可變和不可變拷貝)

必須實(shí)現(xiàn)copying和mtableCopying協(xié)議况褪,表示返回一個(gè)不可變和可變的對象撕贞。否則,程序會出現(xiàn)異常

- (id)copyWithZone:(NSZone *)zone{? ? Person *person=[[selfClass] allocWithZone:zone];? ? person->age=self.age;? ? person->name=self.name;returnperson;}- (id)mutableCopyWithZone:(NSZone *)zone{? ? Person *person=[[selfClass] allocWithZone:zone];? ? person->age=self.age;? ? person->name=self.name;returnperson;}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

9测垛、strong與weak _unsafe_unretained與weak的區(qū)別

strong與weak:strong強(qiáng)引用捏膨,weak弱引用,在ARC中,使用strong告訴編譯器幫助我們自動(dòng)插入reatin号涯,weak是普通賦值相當(dāng)于手動(dòng)管理內(nèi)存中的assign

_unsafe_unretained與weak:他們的功能一致目胡,區(qū)別在于當(dāng)指向?qū)ο箐N毀后,weak會將變量直為nil链快,防止調(diào)用野指針

10誉己、ARC中存在內(nèi)存泄漏嗎?舉個(gè)例子

存在 當(dāng)兩個(gè)強(qiáng)引用(strong)同時(shí)指向一塊內(nèi)存的時(shí)候?qū)⑨尫挪坏?/p>

Person * p = [[Person alloc] init];NSMutableArray* arr = [[NSMutableArrayalloc] init];[arr addObject:p];

1

2

3

把對象從集合中移除的時(shí)候,也會釋放掉這個(gè)對象的強(qiáng)指針

[arr removeObject:p];

或者[arr removeAllObjects];

而接下來才是重點(diǎn)不進(jìn)行下面的兩步p內(nèi)存將不會被釋放

arr = nil;//如果不進(jìn)行賦值為nil的操作,一樣存在內(nèi)存溢出的現(xiàn)象,賦值為nil系統(tǒng)會對其進(jìn)行清空所有強(qiáng)指針的操作.

p = nil;

11域蜗、自動(dòng)釋放池是什么巨双,如何工作

自動(dòng)釋放池是NSAutorelease類的一個(gè)實(shí)例,當(dāng)向一個(gè)對象發(fā)送autorelease消息時(shí)霉祸,該對象會自動(dòng)會自動(dòng)入池筑累,待銷毀時(shí),將會向池中所有對象發(fā)送一條release消息丝蹭,釋放對象

12慢宗、為什么delegate屬性都是assign而不是strong的?

防止循環(huán)引用奔穿,當(dāng)簽署代理的時(shí)候如果使用strong就會造成相互持有婆廊,以至于對象無法釋放

13、iOS開發(fā)中數(shù)據(jù)持久化有幾種巫橄?

plist文件、對象歸檔茵典、sqlite3數(shù)據(jù)庫湘换、coredata、NSUserDefault

14统阿、什么是KVC和KVO彩倚?他們之間的關(guān)系是什么?

KVC:鍵值編碼是一種間接訪問對象實(shí)例變量的機(jī)制扶平,該機(jī)制不通過存取方法就可以訪問對象的實(shí)例變量

KVO:鍵值觀察是一種能使得對象獲取到其他對象屬性變化的通知機(jī)制帆离。

關(guān)系:實(shí)現(xiàn)KVO模式被觀察的獨(dú)享必須使用KVC簡直編碼來修改它的實(shí)例變量,這樣才能被觀察者觀察到结澄。因此KVC是KVO的基礎(chǔ)或者說KVO的實(shí)現(xiàn)是建立在KVC的基礎(chǔ)之上的哥谷。

15、簡述常見的設(shè)計(jì)模式

單例麻献、代理们妥、通知、工廠勉吻、策略

16监婶、內(nèi)存管理在dealloc方法中,用release方法好還是用=nil好?

使用=nil方法更好惑惶,因?yàn)橄日{(diào)用了release方法煮盼,而且將變量置為nil,這樣就更安全的釋放對象带污,防止野指針調(diào)用

17僵控、線程與進(jìn)程的區(qū)別和聯(lián)系

一般應(yīng)用程序是單個(gè)進(jìn)程,多個(gè)進(jìn)程需要多個(gè)CPU刮刑,進(jìn)程是靜態(tài)的容器喉祭,里面容納多個(gè)線程,線程是一些列方法的現(xiàn)行執(zhí)行路徑雷绢。

18泛烙、delegate、Notification翘紊、block的使用區(qū)別

delegate與block一般用于兩個(gè)對象一對一之間的通信交互蔽氨,delegate需要定義協(xié)議方法,代理對象實(shí)現(xiàn)協(xié)議方法帆疟,并且需要建立代理關(guān)系才可以實(shí)現(xiàn)通信鹉究,代理的好處是代碼的可讀性比較高,如果通信事件比較多的話踪宠,建議使用delegate自赔。

block更加簡潔,不需要定義繁瑣的協(xié)議方法柳琢,而且由于block的機(jī)制我們可以直接使用局部變量

Notification主要用于一對多情況下通信绍妨,而且通信對象之間不需要建立關(guān)系。但是使用通知的代碼可讀性較差柬脸。

19他去、事件響應(yīng)者鏈的概念

響應(yīng)者鏈表示一個(gè)系列的響應(yīng)者對象。事件被交由第一響應(yīng)者對象處理倒堕,如果第一響應(yīng)者不處理灾测,事件被沿著響應(yīng)者鏈向上傳遞,交給下一個(gè)響應(yīng)者垦巴。一般來說媳搪,第一響應(yīng)者是視圖對象或者子類對象,當(dāng)其被觸摸后事件被交由它處理魂那,如果它不處理蛾号,事件就會被傳遞給它的父視圖對象(如果存在),然后是它的視圖控制器(如果存在)涯雅,以此類推鲜结,直到頂層視圖。接下來會沿著頂層視圖到窗口。再到程序精刷。如果整個(gè)過程都沒有響應(yīng)這個(gè)事件拗胜,該事件就會被丟棄。一般情況下在響應(yīng)者鏈中只要由對象處理事件怒允,事件就停止傳遞埂软。但我們可以控制是否繼續(xù)傳遞。

20纫事、C語言中static變量和static函數(shù)有什么作用

static變量:表示變量是靜態(tài)存儲變量勘畔,表示變量存放在靜態(tài)存儲區(qū)

static函數(shù):表示只在本文件中有效,別的文件中不能應(yīng)用該函數(shù)

21丽惶、指針

inta;//一個(gè)數(shù)值int*a;//一個(gè)指向數(shù)值的指針int**a;//一個(gè)指向指針的指針inta[10];//一個(gè)有10個(gè)指針的數(shù)組炫七,該指針指向一個(gè)整型數(shù)組int*a[10];//一個(gè)有10個(gè)指針的數(shù)組,該指針指向一個(gè)整型數(shù)組int(*a)[10];//一個(gè)指向有10整型數(shù)的數(shù)組的指針int(*a)(int);//一個(gè)指向函數(shù)的指針钾唬,該函數(shù)有一個(gè)整型參數(shù)并返回一個(gè)整形數(shù)int(*a[10])(int);//一個(gè)有10個(gè)指針的數(shù)組万哪,該指針指向一個(gè)函數(shù),該函數(shù)有一個(gè)整型參數(shù)并返回一個(gè)整型值

1

2

3

4

5

6

7

8

9

22抡秆、c和objc以及c++和objc如何混用奕巍,

實(shí)現(xiàn)文件的擴(kuò)展名.m改成.mm即可。但cpp文件只能用c/c++代碼儒士,而且cpp文件include的頭文件中的止,也不能出現(xiàn)oc的代碼,因?yàn)閏pp只能寫c++的代碼

23着撩、OC中有私有方法冲杀,私有變量嗎?

使用private修飾的全局變量是私有的變量

OC在語法上沒有私有方法睹酌,不過可以通過延展在實(shí)現(xiàn)文件里定義方法作為私有方法,但是 不是真正意義上的私有方法剩檀,也是可以調(diào)用的憋沿,只是外部不可見

24、const的使用

const int a; a是一個(gè)常整型數(shù)

const int *a;a是一個(gè)指向常整型數(shù)的指針(也就是沪猴,整型數(shù)是不可修改的辐啄,但指針可以)

int *const a;a是一個(gè)指向整型數(shù)的常指針(也就是說,指針指向的整型數(shù)是可以修改的运嗜,但是指針是不可修改的)

25壶辜、C語言中extern的作用,extern c的作用

extern可以置于變量或者函數(shù)前担租,以表示變量或者函數(shù)定義在別的文件中砸民,提示編譯器遇到此變量和函數(shù)時(shí)在其他模塊中尋找其定義

C++語言在編譯的時(shí)候?yàn)榱私鉀Q函數(shù)的多態(tài)問題,會將函數(shù)名和參數(shù)聯(lián)合起來生成一個(gè)中間的函數(shù)名稱,而C語言不會岭参,這告訴編譯器反惕,請保持我的名稱,不要給我生成用于連接的中間函數(shù)名

26演侯、什么是多態(tài)

不同對象以自己的方式響應(yīng)相同的消息的能力叫做多態(tài)

聲明的一個(gè)變量姿染,在運(yùn)行的時(shí)候綁定不同的對象,比如在方法的參數(shù)中聲明一個(gè)變量UIView *view秒际,運(yùn)行的時(shí)候我們可以根據(jù)不同的應(yīng)用場景給view變量傳入不同的對象悬赏,可以傳一個(gè)UIButton,也可以傳入U(xiǎn)IImageView對象娄徊。

27闽颇、cocoa touch框架

UIKit、Foundation嵌莉、CoreGraphic进萄、CoreAnimation

音頻和視頻:Core Audio、OpenAL锐峭、Media Library中鼠、AV Foundation

數(shù)據(jù)管理:Core Data钻蔑、SQLite

圖形和動(dòng)畫:Core Animation OpenGL ES枉长、Quartz 2D玖媚、Core Graphic

用戶應(yīng)用:Address Book严望、Core Location柳畔、Map Kit轮听、Store Kit

28剥哑、棧結(jié)構(gòu)與隊(duì)列的區(qū)別

棧(Stack):是限定只能在表的一段進(jìn)行插入和刪除操作的線性表掠拳。

隊(duì)列(Queue):是限定只能在表的一端進(jìn)行插入和在另一端進(jìn)行刪除操作的線性表蚕涤。

隊(duì)列先進(jìn)先出筐赔、棧先進(jìn)后出;

遍歷速度不同揖铜。隊(duì)列遍歷數(shù)據(jù)快茴丰;

29、單例 為什么使用單例

+(SingleCase *)sharedManager{staticSingleCase *ManagerInstance=nil;staticdispatch_once_tpredicate;dispatch_once(&predicate, ^{? ? ? ? ? ? ? ? ? ManagerInstance = [[selfalloc] init];? ? ? ? ? });returnManagerInstance;? }

單例設(shè)計(jì)是用來限制一個(gè)類只能創(chuàng)建一個(gè)對象天吓,那么此對象中的屬性可以存儲全局的共享的數(shù)據(jù)贿肩,所有的類都可以訪問、設(shè)置此單例對象中的屬性數(shù)據(jù)

如果一個(gè)類創(chuàng)建的時(shí)候非常耗費(fèi)性能龄寞,那么此類可以設(shè)置為單例節(jié)約性能

30汰规、你對id的理解

id可以理解為指向?qū)ο蟮闹羔槨K衞c的對象 id都可以指向物邑,編譯器不會做類型檢查溜哮,id調(diào)用任何存在的方法都不會在編譯階段報(bào)錯(cuò)滔金,當(dāng)然如果這個(gè)id指向的對象沒有這個(gè)方法,該崩潰還是會崩潰的茬射。

31鹦蠕、UIButton的父類是誰?UIView呢在抛?

UIButton的父類是UIControl钟病,UIControl的父類是UIView,UIView的父類是UIResponder刚梭,UIResponder的父類是NSObject

32肠阱、http狀態(tài)碼

http狀態(tài)嗎 :302 是請求重定向。500以上是服務(wù)器錯(cuò)誤朴读。400以上是請求鏈接錯(cuò)誤或者找不到服務(wù)器屹徘。200以上是正確。100以上是請求接受成功衅金。

33噪伊、dispatch_group_async、dispatch_barrier_async氮唯、dispatch_apply分別是什么鉴吹?

dispatch_group_async 可以實(shí)現(xiàn)監(jiān)聽一組任務(wù)是否完成,完成后得到通知執(zhí)行其他的操作惩琉。這個(gè)方法很有用豆励,比如你執(zhí)行三個(gè)下載任務(wù),當(dāng)三個(gè)任務(wù)都下載完成后你才通知界面說完成的了

dispatch_barrier_async 是在前面的任務(wù)執(zhí)行結(jié)束后它才執(zhí)行瞒渠,而且它后面的任務(wù)等它執(zhí)行完成之后才會執(zhí)行

dispatch_apply 執(zhí)行某個(gè)代碼片段N次良蒸。

34、區(qū)分nil伍玖、Nil嫩痰、NULL

nil和C語言的NULL相同,在objc/objc.h中定義窍箍。nil表示一個(gè)Objctive-C對象始赎,這個(gè)對象的指針指向空(沒有東西就是空)。

首字母大寫的Nil和nil有一點(diǎn)不一樣仔燕,Nil定義一個(gè)指向空的類(是Class,而不是對象)魔招。

35晰搀、AppDelegate扮演著什么樣的角色

AppDelegate作為UIApplication的委托,一般我們可以通過類方法[UIApplication shareApplication]來獲取對UIApplication办斑,在UIApplication接收到系統(tǒng)事件和生命周期事件時(shí)外恕,會把相應(yīng)的事件傳遞給UIApplicationDelegate進(jìn)行處理

36杆逗、什么是cocoa/cocoa touch

cocoa是os開發(fā)環(huán)境 cocoa touch是iPhone開發(fā)環(huán)境

37、iBeacons是什么鳞疲?

iBeacons是蘋果在2013年WWDC上推出一項(xiàng)基于藍(lán)牙4.0(Bluetooth LE | BLE | Bluetooth Smart)的精準(zhǔn)微定位技術(shù)罪郊,當(dāng)你的手持設(shè)備靠近一個(gè)Beacon基站時(shí),設(shè)備就能夠感應(yīng)到Beacon信號尚洽,范圍可以從幾毫米到50米悔橄。功耗相當(dāng)小

38、iOS應(yīng)用是如何實(shí)現(xiàn)后臺多任務(wù)處理(Multitasking)的腺毫?

ios7之后(一個(gè)app可以混合調(diào)用多種模式):Background Audio癣疟、VoIP、Location Services潮酒、Newsstand睛挚、Background Task Completion、Background Fetch 急黎、Remote Notification扎狱、Background Transfer Service

39、Cocoa Touch包含什么勃教?

除 UIKit 之外淤击,Cocoa Touch 包含創(chuàng)建世界一流 iOS 應(yīng)用程序所需的所有框架,從 3D 圖形荣回、專業(yè)音頻到網(wǎng)絡(luò)遭贸,甚至提供特殊設(shè)備訪問 API 以控制攝像機(jī)或從 GPS 硬件獲取位置。Cocoa Touch 既包含只需要幾行代碼就可以完成全部任務(wù)的強(qiáng)大的 Objective-C 框架心软,也在需要時(shí)提供基礎(chǔ)的 C 語言 API 來直接訪問系統(tǒng)壕吹。這些框架示例包括:

Core Animation

通過 Core Animation,您就可以通過基于組合獨(dú)立圖層的簡單編程模型來創(chuàng)建豐富的用戶體驗(yàn)删铃。

Core Audio

Core Audio 是播放耳贬、處理和錄制音頻的專業(yè)級技術(shù),能夠輕松為您的應(yīng)用程序添加強(qiáng)大的音頻功能猎唁。

Core Data

Core Data 提供面向?qū)ο蟮臄?shù)據(jù)管理解決方案咒劲,該方案易于使用和理解,甚至可處理任何應(yīng)用或大或小的數(shù)據(jù)模型诫隅。

筆試

1腐魂、CALaye和UIView的區(qū)別是什么?

最大的區(qū)別是:UIview可以響應(yīng)點(diǎn)擊事件CALayer不可以

圖層不會直接渲染到屏幕上逐纬,UIView是iOS系統(tǒng)中界面元素的基礎(chǔ)蛔屹,所有的界面元素都是繼承自它。它本身完全由CoreAnimation來實(shí)現(xiàn)豁生。他真正的繪圖部分兔毒,是由一個(gè)CALayer來管理漫贞。UIView本身更像一個(gè)CALayer的管理器。一個(gè)UIView可以有n個(gè)CALayer育叁,每個(gè)layer顯示一種東西迅脐,增強(qiáng)UIView的展現(xiàn)能力

2、什么是GCD

GCD是Apple開發(fā)的一個(gè)多核編程的較新的解決方法豪嗽。在Mac OS X10.6中首次推出谴蔑。GCD是一個(gè)替代諸如NSThread等技術(shù)很高效和強(qiáng)大的技術(shù)。GCD完全可以處理諸如數(shù)據(jù)鎖定和資源泄漏等復(fù)雜的異步編程問題昵骤。

3树碱、TCP/UDP區(qū)別聯(lián)系

TCP:傳輸控制協(xié)議,提供的是面向連接、可靠的字節(jié)流服務(wù)变秦。當(dāng)客戶和服務(wù)器彼此交換數(shù)據(jù)前成榜,必須先在雙方之間建立一個(gè)TCP連接,之后才能傳輸數(shù)據(jù)蹦玫。TCP提供超時(shí)重發(fā)赎婚,丟棄重復(fù)數(shù)據(jù),檢驗(yàn)數(shù)據(jù)樱溉,流量控制等功能挣输,保證數(shù)據(jù)能從一端傳到另一端。 (MSN)

UDP:用戶數(shù)據(jù)報(bào)協(xié)議福贞,是一個(gè)簡單的面向數(shù)據(jù)報(bào)的運(yùn)輸層協(xié)議撩嚼。UDP不提供可靠性,它只是把應(yīng)用程序傳給IP層的數(shù)據(jù)報(bào)發(fā)送出去挖帘,但是并不能保證它們能到達(dá)目的地完丽。由于UDP在傳輸數(shù)據(jù)報(bào)前不用在客戶和服務(wù)器之間建立一個(gè)連接,且沒有超時(shí)重發(fā)等機(jī)制拇舀,故而傳輸速度很快 (QQ)

4逻族、socket連接和http連接的區(qū)別

簡單說,你瀏覽的網(wǎng)頁(網(wǎng)址以http://開頭)都是http協(xié)議傳輸?shù)侥愕臑g覽器的, 而http是基于socket之上的骄崩。socket是一套完成tcp聘鳞,udp協(xié)議的接口。

HTTP協(xié)議:簡單對象訪問協(xié)議要拂,對應(yīng)于應(yīng)用層 抠璃,HTTP協(xié)議是基于TCP連接的

tcp協(xié)議: 對應(yīng)于傳輸層

ip協(xié)議: 對應(yīng)于網(wǎng)絡(luò)層

TCP/IP是傳輸層協(xié)議,主要解決數(shù)據(jù)如何在網(wǎng)絡(luò)中傳輸脱惰;而HTTP是應(yīng)用層協(xié)議搏嗡,主要解決如何包裝數(shù)據(jù)。

Socket是對TCP/IP協(xié)議的封裝枪芒,Socket本身并不是協(xié)議彻况,而是一個(gè)調(diào)用接口(API),通過Socket舅踪,我們才能使用TCP/IP協(xié)議纽甘。

**http連接:http連接就是所謂的短連接,即客戶端向服務(wù)器端發(fā)送一次請求抽碌,服務(wù)器端響應(yīng)后連接即會斷掉悍赢;

socket連接:socket連接就是所謂的長連接,理論上客戶端和服務(wù)器端一旦建立起連接將不會主動(dòng)斷掉货徙;但是由于各種環(huán)境因素可能會是連接斷開左权,比如說:服務(wù)器端或客戶端主機(jī)down了,網(wǎng)絡(luò)故障痴颊,或者兩者之間長時(shí)間沒有數(shù)據(jù)傳輸赏迟,網(wǎng)絡(luò)防火墻可能會斷開該連接以釋放網(wǎng)絡(luò)資源**

Socket是一個(gè)針對TCP和UDP編程的接口,你可以借助它建立TCP連接等等蠢棱。而TCP和UDP協(xié)議屬于傳輸層 锌杀。

而http是個(gè)應(yīng)用層的協(xié)議,它實(shí)際上也建立在TCP協(xié)議之上泻仙。

(HTTP是轎車糕再,提供了封裝或者顯示數(shù)據(jù)的具體形式;Socket是發(fā)動(dòng)機(jī)玉转,提供了網(wǎng)絡(luò)通信的能力突想。)

Socket是對TCP/IP協(xié)議的封裝,Socket本身并不是協(xié)議究抓,而是一個(gè)調(diào)用接口(API)猾担,通過Socket,我們才能使用TCP/IP協(xié)議漩蟆。Socket的出現(xiàn)只是使得程序員更方便地使用TCP/IP協(xié)議棧而已垒探,是對TCP/IP協(xié)議的抽象,從而形成了我們知道的一些最基本的函數(shù)接口怠李。

5圾叼、什么是TCP連接的三次握手

第一次握手:客戶端發(fā)送syn包到服務(wù)器,并計(jì)入SYN_SEND狀態(tài)捺癞,等待服務(wù)器的確認(rèn)夷蚊;

第二次握手:服務(wù)器收到syn包,必須確認(rèn)客戶的SYN髓介,同時(shí)自己也發(fā)送一個(gè)syn包惕鼓,即SYN+ACK包,此時(shí)服務(wù)器進(jìn)入SYN_RECY狀態(tài)唐础;

第三次握手:客戶端收到服務(wù)器的SYN+ACK包箱歧,向服務(wù)器發(fā)送確認(rèn)包ACK矾飞,此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài)呀邢,完成三次握手

6洒沦、frame與bounds的區(qū)別

Frame指的是:該view在父view坐標(biāo)系統(tǒng)中的位置和大小(參照點(diǎn)是父視圖的坐標(biāo)系統(tǒng))

Bounds指的是:該view在本身坐標(biāo)系統(tǒng)中的位置和大屑厶省(參照點(diǎn)是本身的坐標(biāo)系統(tǒng))

7申眼、如何理解MVC設(shè)計(jì)模式

MVC是一種架構(gòu)設(shè)計(jì),M數(shù)據(jù)模型model蝉衣,V視圖View括尸,C控制器controller

model:負(fù)責(zé)存儲定義操作數(shù)據(jù)

view:用來展示數(shù)據(jù)給用戶,和用戶進(jìn)行操作交互

controller:是model與view的協(xié)調(diào)者病毡,控制器獲取數(shù)據(jù)濒翻,將數(shù)據(jù)交給視圖展示

8、控制器的loadView方法是什么時(shí)候調(diào)用的剪验,viewWillAperar什么時(shí)候調(diào)用

loadView:當(dāng)控制器的根視圖View為空肴焊,且此view被訪問時(shí)調(diào)用

viewWillApear:當(dāng)控制器根視圖view被添加到父視圖上時(shí)調(diào)用

9、控制器的xib是怎么加載的

當(dāng)UIViewController的loadView被調(diào)用時(shí)功戚,在此方法中娶眷,通過NSBundle加載Xib,先通過控制器的類名作為xib文件加載此xib文件啸臀。如果找到此xib文件届宠,則加載為view對象作為控制器的根視圖,如果沒有xib文件乘粒,則通過alloc創(chuàng)建一個(gè)view對象作為根視圖

10豌注、內(nèi)存不足,系統(tǒng)發(fā)出警告灯萍,此時(shí)控制器應(yīng)該如何處理

內(nèi)存不足時(shí)轧铁。系統(tǒng)會調(diào)用控制器的didReceiveMemoryWarning方法通知控制器內(nèi)存不足

當(dāng)didReceiveMemoryWarning方法被調(diào)用的時(shí)候我們調(diào)用 self.view=nil方法釋放子視圖

11、如何監(jiān)聽View的觸摸事件旦棉、事件是如何傳遞的齿风、視圖的響應(yīng)者鏈?zhǔn)鞘裁矗?/a>

監(jiān)聽觸摸事件:覆寫view的touchBegain、touchMove绑洛、touchEnd系列方法監(jiān)聽視圖的觸摸

事件的傳遞:當(dāng)觸摸一個(gè)視圖時(shí)救斑,首先系統(tǒng)會捕捉此事件,并為此事件創(chuàng)見一個(gè)UIEvent對象真屯,將此對象加入到當(dāng)前應(yīng)用程序的時(shí)間隊(duì)列中脸候。然后由UIWindow對象分發(fā)個(gè)觸摸的視圖對象,也就是第一響應(yīng)者對象。

響應(yīng)者鏈表示一個(gè)系列的響應(yīng)者對象运沦。事件被交由第一響應(yīng)者對象處理泵额,如果第一響應(yīng)者不處理,事件被沿著響應(yīng)者鏈向上傳遞携添,交給下一個(gè)響應(yīng)者梯刚。一般來說,第一響應(yīng)者是視圖對象或者子類對象薪寓,當(dāng)其被觸摸后事件被交由它處理,如果它不處理澜共,事件就會被傳遞給它的父視圖對象(如果存在)向叉,然后是它的視圖控制器(如果存在),以此類推嗦董,直到頂層視圖母谎。接下來會沿著頂層視圖到窗口。再到程序京革。如果整個(gè)過程都沒有響應(yīng)這個(gè)事件奇唤,該事件就會被丟棄。一般情況下在響應(yīng)者鏈中只要由對象處理事件匹摇,事件就停止傳遞咬扇。但我們可以控制是否繼續(xù)傳遞。

12廊勃、block在內(nèi)存管理上的特點(diǎn)懈贺、如何解決循環(huán)引用

特點(diǎn):block中使用了局部對象,則此對象將會被retain坡垫,引用了當(dāng)前對象的屬性或者方法梭灿,則會將當(dāng)前對象retain

解決循環(huán)引用:將當(dāng)前對象賦給一個(gè)局部變量,并且使用__block關(guān)鍵字修飾該局部變量冰悠,使用該變量訪問當(dāng)前對象 的屬性和方法(__block typeof(self)weakself=self)

13堡妒、timer的間隔周期準(zhǔn)嗎?為什么溉卓?怎樣實(shí)現(xiàn)一個(gè)精準(zhǔn)的timer皮迟?

定時(shí)器timer一般都是準(zhǔn)確的、但是當(dāng)主線程有些時(shí)候出現(xiàn)阻塞(UI都是在主線程運(yùn)行 加載視圖就會阻塞)的情況的诵,這樣就可能導(dǎo)致timer會延遲万栅。我們可以開辟子線程運(yùn)行定時(shí)器

14、Http協(xié)議的特點(diǎn)西疤,GET請求與POST請求的區(qū)別烦粒,什么事HTTPS協(xié)議

特點(diǎn):短連接當(dāng)服務(wù)端接收到請求并處理請求后關(guān)閉連接

區(qū)別:GET請求沒有請求體,POST含有請求體,請求參數(shù)可以放入請求體重所以POST可以提交大量的數(shù)據(jù)個(gè)服務(wù)器

HTTPS:安全超文本傳輸協(xié)議他是一個(gè)安全通信通道扰她,它基于HTTP開發(fā)兽掰,用于客戶計(jì)算機(jī)和服務(wù)器之間交換信息。它使用安全套接字層(SSL)進(jìn)行信息交換徒役,簡單來說他是HTTP的安全版

15孽尽、xml數(shù)據(jù)解析方式,各有什么不同忧勿,json解析有哪些框架

解析方式:DOM解析與SAX解析

異同:DOM解析必須先完成DOM樹的構(gòu)造杉女,在處理較大的XML文檔時(shí)比較耗內(nèi)存,占用資源較多SAX解析XML文檔時(shí)每遇到一個(gè)開始或者結(jié)束標(biāo)簽或者屬性鸳吸、或者一條指令時(shí)熏挎,程序就產(chǎn)生一個(gè)事件進(jìn)行相應(yīng)的處理,因此SAX對于DOM來說更適合操作大的XML文檔

iOS原生json解析框架:NSJSONSerialization

16晌砾、用過哪些開源網(wǎng)絡(luò)框架坎拐、各有什么特點(diǎn)

ASIHTTPRequest

優(yōu)點(diǎn):出來比較早、功能強(qiáng)大养匈、文檔豐富

缺點(diǎn):停止更新哼勇、新特性少、厚重

AFNetWorking

優(yōu)點(diǎn):支持比較新的特性呕乎、簡單易用

缺點(diǎn):文檔數(shù)目一般积担、功能少、沒有同步請求

MKNetworkKit

優(yōu)點(diǎn):支持ARC猬仁、有ASIHTTPRequest的功能磅轻,AFNetWorking的輕便

缺點(diǎn):有一些小bug

17、iOS中有哪些數(shù)據(jù)持久化的方式逐虚,各有什么特點(diǎn)聋溜,iOS平臺怎么做數(shù)據(jù)的持久化?CoreData和sqlite有沒有必然聯(lián)系叭爱?CoreData是一個(gè)關(guān)系型數(shù)據(jù)庫嗎撮躁?

方式:屬性列表、對象歸檔买雾、SQLite數(shù)據(jù)庫把曼、CoreData

iOS怎么持久化:混合使用

CoreData與sqlite是有聯(lián)系的,CoreData是對sqlite的封裝漓穿,因?yàn)閟qlite是c語言的api嗤军,然而有人也需要oc 的api,所以有了 CoreData另外晃危,CoreData不僅僅是把c的api翻譯成oc 的api叙赚,還提供了一些管理的功能老客,使用更加方便。

18震叮、iOS如何捕捉異常

前言:在開發(fā)APP時(shí)胧砰,我們通常都會需要捕獲異常,防止應(yīng)用程序突然的崩潰苇瓣,防止給予用戶不友好的體驗(yàn)尉间。其實(shí)Objective-C的異常處理方法和JAVA的雷同,懂JAVA的朋友一看就懂击罪。

以下程序已測試并通過:

設(shè)備:iOS 8模擬器中

開發(fā)工具:XCode6.1

使用@try哲嘲、catch捕獲異常:

以下是最簡單的代碼寫法,其中@finally可以去掉:

@try{// 可能會出現(xiàn)崩潰的代碼}@catch(NSException *exception) {// 捕獲到的異常exception}@finally{// 結(jié)果處理}

在這里舉多一具比較詳細(xì)的方法媳禁,拋出異常:

@try{// 1[selftryTwo];}@catch(NSException*exception) {// 2NSLog(@"%s\n%@", __FUNCTION__, exception);//? ? ? ? @throw exception; // 這里不能再拋異常}@finally{// 3NSLog(@"我一定會執(zhí)行");}// 4// 這里一定會執(zhí)行NSLog(@"try");tryTwo方法代碼:

- (void)tryTwo{@try{// 5NSString*str = @"abc";? ? ? ? [str substringFromIndex:111];// 程序到這里會崩}@catch(NSException*exception) {// 6//? ? ? ? @throw exception; // 拋出異常撤蚊,即由上一級處理// 7NSLog(@"%s\n%@", __FUNCTION__, exception);? ? }@finally{// 8NSLog(@"tryTwo - 我一定會執(zhí)行");? ? }// 9// 如果拋出異常,那么這段代碼則不會執(zhí)行NSLog(@"如果這里拋出異常损话,那么這段代碼則不會執(zhí)行");}

為了方便大家理解,我在這里再說明一下情況:

如果6拋出異常槽唾,那么執(zhí)行順序?yàn)椋?->5->6->8->3->4

如果6沒拋出異常丧枪,那么執(zhí)行順序?yàn)椋?->5->7->8->9->3->4

2)部分情況的崩潰我們是無法避免的,就算是QQ也會有崩潰的時(shí)候庞萍。因此我們可以在程序崩潰之前做一些“動(dòng)作”(收集錯(cuò)誤信息)拧烦,以下例子是把捕獲到的異常發(fā)送至開發(fā)者的郵箱。

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {// Override point for customization after application launch.NSSetUncaughtExceptionHandler(&UncaughtExceptionHandler);returnYES;}voidUncaughtExceptionHandler(NSException *exception) {/**

*? 獲取異常崩潰信息

*/NSArray *callStack = [exception callStackSymbols];? ? NSString *reason = [exception reason];? ? NSString *name = [exception name];? ? NSString *content = [NSString stringWithFormat:@"========異常錯(cuò)誤報(bào)告========\nname:%@\nreason:\n%@\ncallStackSymbols:\n%@",name,reason,[callStack componentsJoinedByString:@"\n"]];/**

*? 把異常崩潰信息發(fā)送至開發(fā)者郵件

*/NSMutableString *mailUrl = [NSMutableString string];? ? [mailUrl appendString:@"mailto:test@qq.com"];? ? [mailUrl appendString:@"?subject=程序異常崩潰钝计,請配合發(fā)送異常報(bào)告恋博,謝謝合作!"];? ? [mailUrl appendFormat:@"&body=%@", content];// 打開地址NSString *mailPath = [mailUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];? ? [[UIApplication sharedApplication] openURL:[NSURL URLWithString:mailPath]];}

19私恬、單元測試

iOS自帶單元測試框架OCUnit债沮,但目前最好的測試框架應(yīng)該是GHUnit

20、 OC有多繼承嗎本鸣?有什么替代方案

OC沒有多繼承疫衩,可以通過實(shí)現(xiàn)協(xié)議替代。OC是單繼承荣德,所有的類全都繼承于NSObject闷煤,

但是在協(xié)議的遵守上卻允許使用多繼承。所以可以用協(xié)議來實(shí)現(xiàn)多繼承

21涮瞻、蘋果APP的上架流程鲤拿、什么情況下會被打回

上架流程:

1)在蘋果網(wǎng)站的開發(fā)者中心,新建一個(gè)APP署咽,填寫此APP相關(guān)的一些描述信息

2)下載安裝發(fā)布證書

3)選擇發(fā)布證書近顷,使用Archive編譯發(fā)布包

4)使用Xcode提交發(fā)布包

被打回:

1)訪問私有API

2)APP有嚴(yán)重的BUG

3)給蘋果審核的測試賬號無法登陸,或者境外無法訪問國內(nèi)服務(wù)器

4)APP加載時(shí)間過長,iOS APP的最長啟動(dòng)時(shí)間不得超過15秒

5)給出外部購買鏈接

6)APP描述中帶有”Beta“字樣幕庐,或者其他表明APP還未開發(fā)完成的信息

7)APP描述中提到了iOS之外的其他支持平臺

··········

22久锥、tableView是如何復(fù)用的

如果屏幕上能顯示10個(gè)單元格,則tableView只會創(chuàng)建11個(gè)單元格(n+1)异剥,當(dāng)滑倒第12個(gè)單元格時(shí)就會復(fù)用第一個(gè)單元格對象瑟由。tableView中有個(gè)復(fù)用池概念,tableView調(diào)用協(xié)議方法獲取單元格時(shí)冤寿,先從復(fù)用池中查找是否有可用的單元格如果有則復(fù)用歹苦,如果沒有則創(chuàng)建一個(gè)單元格對象

23、如何優(yōu)化tableView的滑動(dòng)速度

1)復(fù)用單元格

2)使用不透明的視圖督怜,單元格中盡量少使用動(dòng)畫

3)圖片加載使用異步加載殴瘦,并且設(shè)置圖片加載的并發(fā)數(shù)

4)滑動(dòng)式不加載圖片,停止滑動(dòng)開始加載

5)文字号杠、圖片可以直接drawInRect繪制

6)如非必要蚪腋,減少reloadData全部cell,只reloadRowsAtInexPaths

7)如果cell是動(dòng)態(tài)行高姨蟋,計(jì)算高度后緩存

8)cell高度固定的話直接用cell.rowHeight設(shè)置高度

24屉凯、ASI網(wǎng)絡(luò)框架有哪些功能

不支持ARC

25、了解Socket通信方式嗎眼溶?

Socket通信是通過TCP/IP協(xié)議悠砚,實(shí)現(xiàn)客戶端與服務(wù)器端之間的通信方式,客戶端通過三次握手與服務(wù)器建立可靠的連接堂飞,然后進(jìn)行數(shù)據(jù)傳輸

26灌旧、runloop的理解

runloop是線程相關(guān)的基礎(chǔ)框架的一部分。一個(gè)runloop就是一個(gè)事件處理的循環(huán)绰筛,用來不停地調(diào)度工作以及處理傳入事件枢泰,使用runloop的目的釋然你的線程在有工作的時(shí)候忙于工作,沒有工作的時(shí)候處于休眠狀態(tài)铝噩。

27宗苍、如何調(diào)用drawRect方法與layoutSubView方法,這兩個(gè)方法的作用

通過setNeedsLayout方法異步調(diào)用layoutSubView方法

通過setNeedsDisplay方法異步調(diào)用drawRect方法

drawRect方法用于繪圖薄榛,layoutSubView方法用于布局子視圖

28讳窟、二維碼掃描用過哪些類庫,這些類庫有什么特點(diǎn)敞恋?

二維碼生成:QRGener

二維碼掃描:zxing(自定義掃描區(qū)域)丽啡、ZBarSDK

29、iOS5硬猫,6补箍、7改执、8、9都有什么新特性

iOS5:iCloud坑雅、定制UI辈挂、storyBoard、ARC裹粤、coreimage路徑终蒂,新增JSON解析類

其他:6、7遥诉、8拇泣、9新特性

30、storyBoard的優(yōu)缺點(diǎn)

優(yōu)點(diǎn):開發(fā)界面所見即所得矮锈,可以快速通過拖拽構(gòu)造界面霉翔。

缺點(diǎn):xib 對版本管理是災(zāi)難,storyBoard是多個(gè)xib的集合一樣難以管理

31苞笨、如何打包靜態(tài)庫

新建一個(gè)Framework&Library的項(xiàng)目债朵,編譯的時(shí)候,會將項(xiàng)目中的代碼打包成一個(gè).a的靜態(tài)庫文件瀑凝。

32序芦、SVN、Git協(xié)作開發(fā)猜丹,怎么防止代碼文件沖突?

防止沖突:SVN不要多人同時(shí)修改同一個(gè)文件硅卢。例如A/B都修改同一個(gè)文件射窒,先讓A修改,然后提交到服務(wù)器将塑,然后B更新下來脉顿,在進(jìn)行修改。Git服務(wù)器上的項(xiàng)目文件点寥,僅讓一個(gè)人管理提交艾疟,其他人只更新。

33敢辩、斷點(diǎn)續(xù)傳是如何實(shí)現(xiàn)的蔽莱?

其實(shí)斷點(diǎn)續(xù)傳的原理很簡單,就是在Http的請求上和一般的下載有所不同而已戚长。 打個(gè)比方盗冷,瀏覽器請求服務(wù)器上的一個(gè)文時(shí),所發(fā)出的請求如下: 假設(shè)服務(wù)器域名為w www.sjtu.edu.cn同廉,文件名為down.zip仪糖。 GET /down.zip HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms- excel, application/msword, application/vnd.ms-powerpoint,/Accept-Language: zh-cn Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0) Connection: Keep-Alive 服務(wù)器收到請求后柑司,按要求尋找請求的文件,提取文件的信息锅劝,然后返回給瀏覽器攒驰,返回信息如下: 200 Content-Length=106786028 Accept-Ranges=bytes Date=Mon, 30 Apr 2001 12:56:11 GMT ETag=W/”02ca57e173c11:95b” Content-Type=application/octet-stream Server=Microsoft-IIS/5.0 Last-Modified=Mon, 30 Apr 2001 12:56:11 GMT 所謂斷點(diǎn)續(xù)傳,也就是要從文件已經(jīng)下載的地方開始繼續(xù)下載故爵。所以在客戶端瀏覽器傳給 Web服務(wù)器的時(shí)候要多加一條信息–從哪里開始玻粪。 下面是用自己編的一個(gè)”瀏覽器”來傳遞請求信息給Web服務(wù)器,要求從2000070字節(jié)開始稠集。 GET /down.zip HTTP/1.0 User-Agent: NetFox RANGE: bytes=2000070- Accept: text/html, image/gif, image/jpeg,; q=.2,/*; q=.2 仔細(xì)看一下就會發(fā)現(xiàn)多了一行RANGE: bytes=2000070- 這一行的意思就是告訴服務(wù)器down.zip這個(gè)文件從2000070字節(jié)開始傳奶段,前面的字節(jié)不用傳了。 服務(wù)器收到這個(gè)請求以后剥纷,返回的信息如下: 206 Content-Length=106786028 Content-Range=bytes 2000070-106786027/106786028 Date=Mon, 30 Apr 2001 12:55:20 GMT ETag=W/”02ca57e173c11:95b” Content-Type=application/octet-stream Server=Microsoft-IIS/5.0 Last-Modified=Mon, 30 Apr 2001 12:55:20 GMT 和前面服務(wù)器返回的信息比較一下痹籍,就會發(fā)現(xiàn)增加了一行: Content-Range=bytes 2000070-106786027/106786028 返回的代碼也改為206了,而不再是200了晦鞋。 知道了以上原理蹲缠,就可以進(jìn)行斷點(diǎn)續(xù)傳的編程了。

34悠垛、使用GCD加載一個(gè)網(wǎng)絡(luò)圖片

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{NSURL* url = [NSURLURLWithString:@"http://avatar.csdn.net/2/C/D/1_totogo2010.jpg"];? ? ? NSData * data = [[NSData alloc]initWithContentsOfURL:url];UIImage*image = [[UIImagealloc]initWithData:data];if(data !=nil) {dispatch_async(dispatch_get_main_queue(), ^{self.imageView.image= image;//當(dāng)操作UI的時(shí)候回到主線程});? ? ? }? });

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末线定,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子确买,更是在濱河造成了極大的恐慌斤讥,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件湾趾,死亡現(xiàn)場離奇詭異芭商,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)搀缠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門铛楣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人艺普,你說我怎么就攤上這事簸州。” “怎么了歧譬?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵岸浑,是天一觀的道長。 經(jīng)常有香客問我瑰步,道長助琐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任面氓,我火速辦了婚禮兵钮,結(jié)果婚禮上蛆橡,老公的妹妹穿的比我還像新娘。我一直安慰自己掘譬,他們只是感情好泰演,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著葱轩,像睡著了一般睦焕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上靴拱,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天垃喊,我揣著相機(jī)與錄音,去河邊找鬼袜炕。 笑死本谜,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的偎窘。 我是一名探鬼主播乌助,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼陌知!你這毒婦竟也來了他托?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤仆葡,失蹤者是張志新(化名)和其女友劉穎赏参,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沿盅,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡把篓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嗡呼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纸俭。...
    茶點(diǎn)故事閱讀 40,424評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡皇耗,死狀恐怖南窗,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情郎楼,我是刑警寧澤万伤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站呜袁,受9級特大地震影響敌买,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜阶界,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一虹钮、第九天 我趴在偏房一處隱蔽的房頂上張望聋庵。 院中可真熱鬧,春花似錦芙粱、人聲如沸祭玉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽脱货。三九已至,卻和暖如春律姨,著一層夾襖步出監(jiān)牢的瞬間振峻,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工择份, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留扣孟,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓缓淹,卻偏偏與公主長得像哈打,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子讯壶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評論 2 359

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

  • 從三月份找實(shí)習(xí)到現(xiàn)在料仗,面了一些公司,掛了不少伏蚊,但最終還是拿到小米立轧、百度、阿里躏吊、京東氛改、新浪、CVTE比伏、樂視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,271評論 11 349
  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,160評論 30 470
  • __block和__weak修飾符的區(qū)別其實(shí)是挺明顯的:1.__block不管是ARC還是MRC模式下都可以使用胜卤,...
    LZM輪回閱讀 3,327評論 0 6
  • 多線程、特別是NSOperation 和 GCD 的內(nèi)部原理赁项。運(yùn)行時(shí)機(jī)制的原理和運(yùn)用場景葛躏。SDWebImage的原...
    LZM輪回閱讀 2,009評論 0 12
  • socket(套接字)是通信的基石,是支持TCP/IP協(xié)議的網(wǎng)絡(luò)通信的基本操作單元悠菜,包含進(jìn)行網(wǎng)絡(luò)通信必須的五種信息...
    春鵬閱讀 277評論 0 0