2018iOS面試合集文檔

序言

面試只是對(duì)個(gè)人技術(shù)及應(yīng)變能力的一次考驗(yàn)援所。只有解決了一個(gè)問(wèn)題蝙云,你才有機(jī)會(huì)遇見(jiàn)下一個(gè)問(wèn)題酸员。以下面試題由群友提供或網(wǎng)上收集整理匈子,共勉河胎。

歡迎大家加入小編的iOS交流群551346706,群里會(huì)提供相關(guān)面試資料虎敦,書(shū)籍歡迎大家入駐游岳!大家一起交流成長(zhǎng)!其徙!

1胚迫、下列哪個(gè)名詞是不屬于在UML類圖的(D)

A、 類名 B唾那、屬性 ?C访锻、操作 ?D、默認(rèn)值

2、下列哪個(gè)關(guān)系描述的是聚合關(guān)系(B)

A朗若、嘴巴 -- 頭 ? ? ? ? ? ?B 恼五、汽車 -- 引擎

C、大雁 – 翅膀 ? ? ? ? D哭懈、葉 -- 樹(shù)

3灾馒、在OC中類的接口聲明關(guān)鍵字為:(B)

A、@import ? ? ? ? ? ? ? ?B遣总、@interface?

C睬罗、@implemention ? ? ? ? ? D、@protocol

4旭斥、經(jīng)過(guò)下列哪種操作后需要使用release方法(C)

A容达、delegate ? ? ? ? ? ? ? ?B、assign

C垂券、retain D花盐、dealloc

5、OC中,所有類的根類是:(A)

A菇爪、NSObject ? ? ? ? ? ? ? B算芯、NSDate

C、NSCoding ? ? ? ? ? ? ? D凳宙、UIView

6熙揍、向Xcode控制臺(tái)輸出一個(gè)字符串應(yīng)該用:(A)

A、NSLog() ? ? ? ? ? ? ? ?B氏涩、system.out.print()

C届囚、NSPrintf() ? ? ? ? ? ? ? D、scanf()

7是尖、必須實(shí)現(xiàn)的協(xié)議方法使用:關(guān)鍵字聲明(C)

A意系、@property ? ? ? ? ? ? ? B、@interface

C饺汹、@required ? ? ? ? ? ? ? D蛔添、@protocol

8、OC中布爾(BOOL)類型的變量的值只有:(B)

A首繁、1/0 ? ? ? ? ? ? ? ? ? B作郭、YES/NO

C、true/false ? ? ? ? ? ? ? D弦疮、1/-1

9夹攒、在OC中,類中成員變量的可見(jiàn)度(訪問(wèn)權(quán)限)不包括:(D)

A胁塞、@public ? ? ? ? ? ? ? ? ? ?B咏尝、@protected

C压语、@private ? ? ? ? ? ? ? ? ? ?D、@optional?

10编检、面向?qū)ο蟮奶匦圆话ǎ海―)

A胎食、封裝 ? ? ? ? ? ? ? ? ? ? B、繼承

C允懂、多態(tài) ? ? ? ? ? ? ? ? ? ? D厕怜、構(gòu)造

11、類何時(shí)調(diào)用dealloc方法:(D)

A蕾总、[property release]后 ? ? ? ? ?B粥航、[instance release]后

C、[super dealloc]時(shí) ? ? ? ? ? ?D生百、當(dāng)引用計(jì)數(shù)為0時(shí).

12递雀、簡(jiǎn)單類型的成員在使用@property()時(shí),括號(hào)中應(yīng)使用:(A)

A、assign ? ? ? B蚀浆、copy ? ? ? ?C缀程、retain ? ? ? ? D、auto

13市俊、NSRange是什么數(shù)據(jù)類型:(C)

A杨凑、數(shù)組 ? ? ? ? ? ? ? ? ? ?B、字典

C秕衙、結(jié)構(gòu)體 ? ? ? ? ? ? ? ? ?D蠢甲、指針

14僵刮、實(shí)例變量默認(rèn)的訪問(wèn)修飾符是:(C)

A据忘、@public ? ? ? ? ? ? ? ? ?B、@private

C搞糕、@protected ? ? ? ? ? ? ? ?D勇吊、@package

15、關(guān)于協(xié)議描述不正確的是:(D)

A窍仰、協(xié)議分正式和非正式協(xié)議

B汉规、在要求確認(rèn)協(xié)議的類必須實(shí)現(xiàn)協(xié)議中的方法時(shí),可以使用@required

C驹吮、一個(gè)協(xié)議可以被多個(gè)類確認(rèn)

D针史、協(xié)議中聲明的方法,默認(rèn)是@optional的

16碟狞、NSMutableDictionary字典中刪除對(duì)象可以使用下面那個(gè)方法:(D)

A啄枕、filteredArrayUsingPredicate: ? ? ? ? ? ? B、arrayByAddingObject:

C族沃、initWithCapacity: ? ? ? ? ? ? ? ? ? ? D频祝、setValue:forKey:

17泌参、在Xcode中,需要編譯混合Objective-C和C++的源碼文件常空,需要將文件格式的后綴改為 (C)

A. ?.c ? ? B. ?.cpp ? ? ?C. ?.mm ? ? ? D. ?.m

18沽一、下列哪項(xiàng)不屬于數(shù)據(jù)持久化?(A)

A. 屬性列表 ? ? ? ? ? ? ? ? ? ? ? ? ? ?B. Core Data

C. NSUserDefaults ? ? ? ? ? ? ? ?D. 歸檔和反歸檔

19漓糙、下面哪個(gè)類可以創(chuàng)建可變對(duì)象(C)

A.NSString ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?B. NSArray

C. NSMutableDictionary ? ? ? ? ? D.NSSet

20铣缠、對(duì)于類和對(duì)象的概念,屬性對(duì)象的是:(C)

A昆禽、奧迪A6 ? ? ? ? ? ? ? ? ? B攘残、保齡球

C、世界冠軍劉翔 D为狸、西紅柿

21歼郭、下面哪個(gè)方法不屬于NSObject的內(nèi)省方法(A)

A、init ? ? ? ? ? ? ? ? ? ? ?B辐棒、iskindOfClass

C病曾、responseToselector ? ? ? ? ? ?D、isMemberOfClass

22漾根、一個(gè)良好的算法由下面的基本結(jié)構(gòu)組成泰涂,但不包括(D)

A、順序結(jié)構(gòu) ? ? ? ? ? ? ? ? B辐怕、選擇結(jié)構(gòu)

C逼蒙、循環(huán)結(jié)構(gòu) ? ? ? ? ? ? ? ? D、跳轉(zhuǎn)結(jié)構(gòu)

23寄疏、下面哪個(gè)方法可以比較兩個(gè)字符串的異同(B)

A是牢、if(str = str2) ? ? ? ? ? ? ? B、if([str1 isEqualToString:str2])

C陕截、if(str1&&str2) ? ? ? ? ? ? D驳棱、if([str1 length] == [str2 length])

24、NSMutableDictionary *dic = [[NSMutableDictionary alloc ]

initWithObjectsAndKeys:@”1”,@”2”,@”2”,@”3”,@”4”,nil];

NSArray *arr = [[NSAarry alloc]initWithArray:[dic allKeys]];

NSString *str = [[NSString alloc]initWithFormat:[arr objectAtIndex:0],[arr objectAtIndex:1], [arr objectAtIndex:2]];

NSLog(@”%@”,str);輸出結(jié)果是:(C)

A农曲、123 ? ? B社搅、234 ? ? ? C、2 ? ? ? ? D乳规、3

25形葬、下列哪個(gè)修飾符的對(duì)象被廢棄后悔被自動(dòng)賦值為nil?(C)

? ?A暮的、__strong ? ? ? ? ? ? ? B笙以、__autoreleasing

? ?C、__weak ? ? ? ? ? ? ? ?D青扔、__unsafe_unretained

26源织、在SVN版本庫(kù)瀏覽器中翩伪,使用(A)指令可以查看所選文件或目錄的日志?

A谈息、show log ?B缘屹、Rename ?C、Blame ? D侠仇、Save as

27轻姿、下列不是屬性默認(rèn)關(guān)鍵字的是(D)

A、readwrite ?B逻炊、assign ?C互亮、atomic ?D、copy

28余素、NSString *name = [[NSString alloc]initWithString:@"張三"];

NSLog(@"%d",[name retainCount]);

上述代碼打印結(jié)果是:(A)

A豹休、-1 ? ? ?B、0 ? ? ? ?C桨吊、1 ? ? ? ? ?D威根、2

29、現(xiàn)有如下集合视乐,能準(zhǔn)確刪除“張三”的代碼是:NSMutableDictionary * peoples=[NSMutableDictionary dictionaryWithObjectsAndKeys:@"張三",@"001",@"lisa",@"002",@"唐sir",@"老大哥", nil];

答案:(A)

A洛搀、[peoples removeObjectForKey:@"001"];

B、[peoples removeObject:@"張三"];

C佑淀、[peoples removeObjectAtIndex:0];

D留美、[peoples removeAllObjects];

30、NSArray *array = [NSArray arrayWithObjects:@"one", @"two", @"three",nil];

NSLog(@"%@",[array objectAtIndex:1]);

NSLog(@"%@",[array objectAtIndex:3]);

控制臺(tái)中打印的最后一條信息會(huì)是:(D)

A伸刃、one ? ? ? ?B谎砾、two ? ? ? ? C、three ? ? ? D奕枝、崩潰信息

31棺榔、NSRange的成員變量有:(A)

A瓶堕、location,length ? ? ? ? ? ? B隘道、width,height

C、location,height ? ? ? ? ? ? D郎笆、length,width

32谭梗、關(guān)于NSSet描述正確的有:(B)

A、NSSet可以存放任何數(shù)據(jù)類型的數(shù)據(jù)

B宛蚓、NSSet存放數(shù)據(jù)是無(wú)序的

C激捏、NSSet可以通過(guò)下標(biāo)獲取數(shù)據(jù)

D、NSSet存放的數(shù)據(jù)是有序的

33凄吏、NSRange是什么數(shù)據(jù)類型:

答案:(C)

A远舅、數(shù)組 ?B闰蛔、字典 ? ? C、結(jié)構(gòu)體 ? ? D图柏、指針

34序六、關(guān)于協(xié)議描述不正確的是:(D)

A、協(xié)議分正式和非正式協(xié)議

B蚤吹、在要求確認(rèn)協(xié)議的類必須實(shí)現(xiàn)協(xié)議中的方法時(shí)例诀,可以使用@required

C、一個(gè)協(xié)議可以被多個(gè)類確認(rèn)

D裁着、協(xié)議中聲明的方法繁涂,默認(rèn)是@optional的

35、以下對(duì)類的描述不正確的是:(C)

A二驰、類的接口部分可以包含實(shí)例變量扔罪、屬性和方法

B、可以把聲明和實(shí)現(xiàn)都放到.h文件中

C桶雀、一對(duì)文件(Person.h Person.m)只能定義一個(gè)類//可以定義多個(gè)類

D步势、類比較抽象,對(duì)象比較具體

36背犯、Objective-C 語(yǔ)言中類的實(shí)例變量如果只可以被本類和其子類訪問(wèn)坏瘩,需要下列哪個(gè)修飾符:(C)

A、@public ? ? ? B漠魏、@private ? ? C倔矾、@protected ? ? D、@friendly

37柱锹、int a = 10;

NSNumber *b = [[NSNumber alloc] initWithInt:a];

NSLog(@"%d", a+++b);

這段代碼的輸出結(jié)果是什么:(D)

A哪自、21

B、20

C禁熏、30

D壤巷、編譯錯(cuò)誤

38、下列選項(xiàng)中不能正常為emp的name屬性賦值的代碼有:(B)

A瞧毙、emp.name=@"李嘉誠(chéng)";

B胧华、emp->name=@"李開(kāi)復(fù)";

C、[emp setValue:@"柳傳志" forKey:@"name"];

D宙彪、[emp setName:@"黃光裕"];

39矩动、關(guān)于類與對(duì)象的說(shuō)法正確的是(A)

A、一個(gè)文件中可以聲明多個(gè)類

B释漆、方法需要傳遞多個(gè)參數(shù)時(shí)悲没,參數(shù)用逗號(hào)隔開(kāi)

C、不是每個(gè)對(duì)象都有引用計(jì)數(shù)

D男图、Objective-C可以有多繼承

中級(jí)

1示姿、關(guān)于KVC的描述正確的是:(B)

A甜橱、KVC是指"Key-Value Observing"

B、是一種間接訪問(wèn)對(duì)象的屬性的機(jī)制

C栈戳、只能訪問(wèn)對(duì)象的屬性

D渗鬼、當(dāng)對(duì)象的屬性值改變時(shí),我們能收到一個(gè)通知

2荧琼、以下說(shuō)法正確的是:(C)

A譬胎、求數(shù)組的內(nèi)容的個(gè)數(shù)用length方法

B、字典是根據(jù)其位置來(lái)索引數(shù)據(jù)的

C命锄、協(xié)議中定義的方法默認(rèn)不是必須實(shí)現(xiàn)的

D堰乔、一個(gè)文件中可以聲明多個(gè)類

3、下面說(shuō)法錯(cuò)誤的是(B)

A脐恩、GCD的開(kāi)銷要比NSThread大?

B镐侯、可以在子線程中修改UI元素

C、NSOperationQueue是比NSthread更高層的封裝

D驶冒、GCD可以根據(jù)不同優(yōu)先級(jí)分配線程

4苟翻、下列哪個(gè)操作不會(huì)引起引用計(jì)數(shù)(retaincount)的變化是:(C)

A、NSString *str = [[NSString stringWithFormat:@"hello"];?

B骗污、NSMutableData *data = [NSMutableData allocWithZone:data1];

C崇猫、int a=1;

D、NSArray *arr = [[NSArray alloc]initWithArray:arr1];

5需忿、多線程中棧與堆是公有的還是私有的(C)

A.棧公有诅炉,堆私有 ? ? ? ? ? B.棧公有,堆公有

C.棧私有屋厘,堆公有 ? ? ? ? ? D.棧私有涕烧,堆私有

6、以下哪個(gè)算法不是對(duì)稱加密算法(D)

A.DES ? ? ? B.RC5 ? ? ? C.AES ? ? ? D.RSA

7汗洒、優(yōu)秀的程序設(shè)計(jì)议纯,應(yīng)遵循下列哪個(gè)準(zhǔn)則?(B)

A. 高內(nèi)聚溢谤,高耦合 ? ? ? ? ? ? ?B. 高內(nèi)聚瞻凤,低耦合

C. 低內(nèi)聚,高耦合 ? ? ? ? ? ? ?D. 低內(nèi)聚溯香,低耦合

8鲫构、對(duì)于runloop的理解不正確的是(C)

A、每個(gè)線程都有其對(duì)應(yīng)的RunLoop

B玫坛、默認(rèn)非主線程的RunLoop是沒(méi)有運(yùn)行的

C、在一個(gè)單獨(dú)的線程中沒(méi)有必要去啟用RunLoop

D包晰、可以將NSTimer添加到runLoop

9湿镀、下列選項(xiàng)不是MVVM模式特點(diǎn)的是(A)

A炕吸、高耦合 ?B、可重用性 C勉痴、可測(cè)試性 D赫模、獨(dú)立開(kāi)發(fā)

10、對(duì)于Objective-C中的方括號(hào)“[]”的作用,下列說(shuō)法錯(cuò)誤的是:(D)

A蒸矛、用于通知某個(gè)對(duì)象該做什么

B瀑罗、方括號(hào)內(nèi)第一項(xiàng)是對(duì)象,其余部分是你需要對(duì)象執(zhí)行的操作

C、在Objective-C中通知對(duì)象執(zhí)行某種操作,稱為發(fā)送消息.(也叫調(diào)用方法)

D雏掠、方括號(hào)中可以為空

11斩祭、下列關(guān)于環(huán)信的說(shuō)法錯(cuò)誤的是(D)

A、環(huán)信是一個(gè)第三方平臺(tái)乡话,提供即時(shí)通信服務(wù)(IM)摧玫。

B、環(huán)信是在XMPP的基礎(chǔ)上進(jìn)行二次開(kāi)發(fā)绑青。

C诬像、環(huán)信在網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)也是XML

D、使用環(huán)信闸婴,需要自己搭建服務(wù)器

12坏挠、關(guān)于Socket,下列說(shuō)法錯(cuò)誤的是(A)

A邪乍、socket本身是一種協(xié)議癞揉,而不是接口

B、通過(guò)socket我們才能使用TCP/IP協(xié)議

C溺欧、TCP/IP協(xié)議是傳輸層協(xié)議喊熟,主要解決數(shù)據(jù)如何在網(wǎng)絡(luò)中傳輸

D、socket是對(duì)TCP/IP協(xié)議的封裝

13姐刁、關(guān)于git和svn的說(shuō)法正確的是(B)

A芥牌、在很多其情況下,git的速率遠(yuǎn)遠(yuǎn)比SVN小

B聂使、git是分布式管理壁拉,SVN是集中式管理

C、git用分支比較麻煩

D柏靶、git必須用網(wǎng)絡(luò)并且服務(wù)器開(kāi)啟的情況下才可以使用

二弃理、簡(jiǎn)答

問(wèn)題1:請(qǐng)說(shuō)明一下UML類圖中組合與聚合的區(qū)別

答:聚合與組合都表示整體與部分的關(guān)系,只不過(guò)在聚合關(guān)系中屎蜓,成員對(duì)象可以脫離整體對(duì)象獨(dú)立存在痘昌,而在組合關(guān)系中,成員對(duì)象與整體對(duì)象之間具有同生共死的關(guān)系,例如頭與嘴巴辆苔,如果頭沒(méi)了算灸,那么嘴巴自然也不復(fù)存在。

問(wèn)題2驻啤、OC有多繼承嗎菲驴?沒(méi)有的話可以用什么方法替代?

答:多繼承即一個(gè)子類可以有多個(gè)父類骑冗,它繼承了多個(gè)父類的特性赊瞬。OC的類沒(méi)有多繼承,只支持單繼承贼涩,如果要實(shí)現(xiàn)多繼承的話巧涧,可以通過(guò)類別和協(xié)議的方式來(lái)實(shí)現(xiàn)。protocal可以實(shí)現(xiàn)多個(gè)接口磁携,通過(guò)實(shí)現(xiàn)多個(gè)接口可以完成多繼承褒侧。Category一般使用分類,用Category去重寫(xiě)類的方法谊迄,僅對(duì)Category有效闷供,不會(huì)影響到其他類與原有類的關(guān)系。

問(wèn)題3:如果在block里面修改外部變量的值统诺,會(huì)報(bào)錯(cuò)嗎歪脏?

答:在默認(rèn)情況下,不允許block內(nèi)部修改外部變量的數(shù)值粮呢。因?yàn)榭截愔笏c原數(shù)值指向了不同的地址婿失。若是能改變則會(huì)破壞代碼的可讀性。

問(wèn)題4:下面是一段能正確運(yùn)行的代碼啄寡。為啥將外部變量定義成mutableString就能在block內(nèi)部對(duì)其進(jìn)行修改豪硅?

void demoBlock() {

? ? NSMutableString *strM = [NSMutableString stringWithString:@”張三”];

? void(^myBlock)() = ^{

[strM setString:@”lisa”];

};

? ? myBlock();

? ? NSLog(@”%@”,strM);

}

答案:在block中引用外部變量要拷貝一份到堆中挺物。

這個(gè)時(shí)候拷貝到堆中的地址與在棧中的地址是一樣的懒浮。因此,它指向zhangsan识藤。在使用setString方法之時(shí)砚著,將指針指向的地址的值進(jìn)行修改。

![](media/15200565364442/15200580079155.jpg)

問(wèn)題5:簡(jiǎn)述_block/weak修飾符的區(qū)別

答:_block在arc和mrc環(huán)境下都能用痴昧,可以修飾對(duì)象稽穆,也能修飾基本數(shù)據(jù)類型

_weak只能在arc環(huán)境下使用,只能修飾對(duì)象赶撰,不能修飾基本數(shù)據(jù)類型

_block對(duì)象可以在block中重新賦值舌镶,_weak不行柱彻。

問(wèn)題6:請(qǐng)簡(jiǎn)單說(shuō)明在安裝cocoapods時(shí),使用pod install命令安裝框架后的大致過(guò)程

答:

1)分析依賴:該步驟會(huì)分析Podfile,查看不同類庫(kù)之間的依賴情況乎折。如果有多個(gè)類庫(kù)依賴于同一個(gè)類庫(kù)绒疗,但是依賴于不同的版本侵歇,那么cocoaPods會(huì)自動(dòng)設(shè)置一個(gè)兼容的版本骂澄。

2)下載依賴:根據(jù)分析依賴的結(jié)果,下載指定版本的類庫(kù)到本地項(xiàng)目中惕虑。

3)生成Pods項(xiàng)目:創(chuàng)建一個(gè)Pods項(xiàng)目專門(mén)用來(lái)編譯和管理第三方框架坟冲,CocoaPods會(huì)將所需的框架,庫(kù)等內(nèi)容添加到項(xiàng)目中溃蔫,并且進(jìn)行相應(yīng)的配置健提。

4)整合Pods項(xiàng)目:將Pods和項(xiàng)目整合到一個(gè)工作空間中,并且設(shè)置文件鏈接

問(wèn)題7:在開(kāi)發(fā)中伟叛,如何去優(yōu)化tableview呢私痹?

答:

行高一定要緩存: 行高方法其實(shí)被調(diào)用的次數(shù)非常多。通過(guò)緩存行高统刮,可以減少大量計(jì)算自動(dòng)布局的過(guò)程紊遵。

不要?jiǎng)討B(tài)創(chuàng)建子視圖:當(dāng)cell顯示的時(shí)候,不要再去創(chuàng)建了侥蒙。所有的自視圖都應(yīng)該預(yù)先創(chuàng)建暗膜,如果不需要顯示可以設(shè)置hidden。

所有的子視圖都必須制定背景顏色

所有的顏色都不要使用alpha:設(shè)置alpha會(huì)增加圖層的計(jì)算鞭衩,對(duì)性能的消耗非常之大学搜。

cell柵格化

柵格化的代碼如下:

-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier(NSString *)reuseIdentifier {

? ? self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];

? ? if(self){

? ? ? ? //柵格化

? ? ? ? self.layer.shouldRasterize = YES;

? ? ? ? // 柵格化必須指定分辨率,否則默認(rèn)使用 *1 生成圖像

? ? ? ? self.layer.raterizationScale = [UIScreen mainScreen].scale;

? ? }

? ? return self;

}

異步繪制

self.layer.drawsAsynchronously = YES;

問(wèn)題8:SDWebimage 在內(nèi)存方面存在很大的問(wèn)題论衍,如何解決動(dòng)態(tài)圖片內(nèi)存不釋放的問(wèn)題瑞佩?

答:SDWebimage 在內(nèi)存方面存在很大的內(nèi)存問(wèn)題,靜態(tài)的圖片也會(huì)出現(xiàn)拉伸問(wèn)題坯台,動(dòng)態(tài)的gif圖內(nèi)存峰值更加的高炬丸,內(nèi)存釋放不會(huì)及時(shí)。

1捂人、利用CADisplayLink開(kāi)啟一個(gè)時(shí)鐘御雕,每次觸發(fā)只加載一幀圖像!而之前的圖像立即釋放滥搭。

2酸纲、用加時(shí)鐘的方式來(lái)解決內(nèi)存過(guò)大的問(wèn)題,會(huì)造成額外的開(kāi)銷瑟匆∶銎拢可以將動(dòng)態(tài)圖片加載換成YYAnimatedImageView。

問(wèn)題9:逆向分析最常用的有三種方法是什么?

網(wǎng)絡(luò)分析

通過(guò)分析和篡改接口數(shù)據(jù)疾嗅,可以有效的破解通過(guò)接口數(shù)據(jù)來(lái)控制客戶端行為的app外厂,常用的抓包工具有Tcpdump, WireShark, Charles等,windows平臺(tái)有fidller

靜態(tài)分析

通過(guò)砸殼代承、反匯編汁蝶、classdump頭文件等技術(shù)來(lái)分析app行為,通過(guò)這種方式可以有效的分析出app實(shí)用的一些第三方庫(kù)论悴,甚至分析出app的架構(gòu)等內(nèi)容掖棉,常用的工具有dumpdecrypted(砸殼)、hopper disassembler(反匯編)膀估、class_dump(導(dǎo)頭文件)

動(dòng)態(tài)分析

動(dòng)態(tài)分析指的是通過(guò)分析app的運(yùn)行時(shí)數(shù)據(jù)幔亥,來(lái)定位注入點(diǎn)或者獲取關(guān)鍵數(shù)據(jù),常用的工具有cycript(運(yùn)行時(shí)控制臺(tái))察纯、 lldb+debugserver(遠(yuǎn)程斷點(diǎn)調(diào)試)帕棉、logify(追蹤)

問(wèn)題10:怎樣防止反編譯?

本地?cái)?shù)據(jù)加密

對(duì)NSUserDefaults饼记,sqlite存儲(chǔ)文件數(shù)據(jù)加密香伴,保護(hù)帳號(hào)和關(guān)鍵信息

URL編碼加密

對(duì)程序中出現(xiàn)的URL進(jìn)行編碼加密,防止URL被靜態(tài)分析

網(wǎng)絡(luò)傳輸數(shù)據(jù)加密

對(duì)客戶端傳輸數(shù)據(jù)提供加密方案握恳,有效防止通過(guò)網(wǎng)絡(luò)接口的攔截獲取數(shù)據(jù)

方法體瞒窒,方法名高級(jí)混淆

對(duì)應(yīng)用程序的方法名和方法體進(jìn)行混淆,保證源碼被逆向后無(wú)法解析代碼

程序結(jié)構(gòu)混排加密

對(duì)應(yīng)用程序邏輯結(jié)構(gòu)進(jìn)行打亂混排乡洼,保證源碼可讀性降到最低

借助第三方APP加固崇裁,例如:網(wǎng)易云易盾

問(wèn)題11:在MVC架構(gòu)中,如何解決controller層的臃腫問(wèn)題束昵?

答:

將網(wǎng)絡(luò)請(qǐng)求抽象到單獨(dú)的類中

將界面的拼裝抽象到專門(mén)的類中

構(gòu)造 ViewModel?

這樣抽象之后拔稳,View 只接受 ViewModel,而 Controller 只需要傳遞 ViewModel 這么一行代碼锹雏。而另外構(gòu)造 ViewModel 的過(guò)程巴比,我們就可以移動(dòng)到另外的類中了。

專門(mén)構(gòu)造存儲(chǔ)類

三礁遵、大廠面試題(答案略)

1轻绞、 RunLoop 的基本概念,它是怎么休眠的佣耐?

2政勃、runtime如何通過(guò)selector找到對(duì)應(yīng)的IMP地址?

3兼砖、YYAsyncLayer如何異步繪制奸远?

4既棺、你是如何組件化解耦的?

5懒叛、_objc_msgForward函數(shù)是做什么的丸冕?直接調(diào)用它將會(huì)發(fā)生什么?

6薛窥、用過(guò) TableView 嗎胖烛,平時(shí)怎么解決 TableView 滑動(dòng)卡頓問(wèn)題的?

7拆檬、KVC機(jī)制是如何通過(guò)key找到value洪己?

8妥凳、app內(nèi)存你是如何分析的竟贯?

9、使用了第三方庫(kù), 有看它們是怎么實(shí)現(xiàn)的嗎逝钥?

10屑那、什么是強(qiáng)連通量算法?

11艘款、如何應(yīng)對(duì)APP版本升級(jí)持际,數(shù)據(jù)結(jié)構(gòu)隨之變化?

12、單例會(huì)有什么弊端哗咆?

13蜘欲、如何關(guān)閉默認(rèn)的KVO的默認(rèn)實(shí)現(xiàn),簡(jiǎn)述KVO的實(shí)現(xiàn)原理晌柬。

14姥份、說(shuō)說(shuō)Swift和Objective-C的聯(lián)系。

最后

今天給大家的分享就到這吧年碘!有收獲澈歉,或者喜歡小編的可以關(guān)注小編同時(shí)也歡迎大家加入小編的iOS交流群551346706,群里會(huì)提供相關(guān)面試資料屿衅,書(shū)籍歡迎大家入駐埃难!大家一起交流成長(zhǎng)!涤久!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末涡尘,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子响迂,更是在濱河造成了極大的恐慌考抄,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件栓拜,死亡現(xiàn)場(chǎng)離奇詭異座泳,居然都是意外死亡惠昔,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)挑势,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)镇防,“玉大人,你說(shuō)我怎么就攤上這事潮饱±囱酰” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵香拉,是天一觀的道長(zhǎng)啦扬。 經(jīng)常有香客問(wèn)我,道長(zhǎng)凫碌,這世上最難降的妖魔是什么扑毡? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮盛险,結(jié)果婚禮上瞄摊,老公的妹妹穿的比我還像新娘。我一直安慰自己苦掘,他們只是感情好换帜,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著鹤啡,像睡著了一般惯驼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上递瑰,一...
    開(kāi)封第一講書(shū)人閱讀 49,185評(píng)論 1 284
  • 那天祟牲,我揣著相機(jī)與錄音,去河邊找鬼泣矛。 笑死疲眷,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的您朽。 我是一名探鬼主播狂丝,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼哗总!你這毒婦竟也來(lái)了几颜?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤讯屈,失蹤者是張志新(化名)和其女友劉穎蛋哭,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體涮母,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谆趾,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年躁愿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沪蓬。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡彤钟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出跷叉,到底是詐尸還是另有隱情逸雹,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布云挟,位于F島的核電站,受9級(jí)特大地震影響园欣,放射性物質(zhì)發(fā)生泄漏帖世。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一俊庇、第九天 我趴在偏房一處隱蔽的房頂上張望辉饱。 院中可真熱鬧彭沼,春花似錦姓惑、人聲如沸于毙。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)溶褪。三九已至猿妈,卻和暖如春鳍刷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工最欠, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拌阴,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓酌媒,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子奇徒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

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

  • 高級(jí)鉗工應(yīng)知鑒定題庫(kù)(858題) ***單選題*** 1. 000003難易程度:較難知識(shí)范圍:相關(guān)4 01答案:...
    開(kāi)源時(shí)代閱讀 5,700評(píng)論 1 9
  • dispatch_once 常用于單例 : 只創(chuàng)建一次,如果不對(duì)對(duì)象進(jìn)行銷毀的話,它會(huì)一直存放于內(nèi)存當(dāng)中。 代碼...
    樂(lè)意先生閱讀 413評(píng)論 0 0
  • 我是日記星球212號(hào)星寶寶萬(wàn)兒填硕,我在參加日記星球第十期21天蛻變之旅翅帜,這是我在日記星球?qū)懙牡?06篇日記涝滴。 學(xué)如逆...
    萬(wàn)兒閱讀 258評(píng)論 0 2
  • 2017年7月18日該吃午飯了缩麸,自己卻懶的起,要說(shuō)這把子童鞋,是叫人不太放心:羞迷,了然已是跨入中年門(mén)坎的人了衔瓮。老公荒澡,...
    立正站好叫哥閱讀 140評(píng)論 2 4
  • 四個(gè)力量懺悔 1.思維空性 今天表姐7點(diǎn)半了還沒(méi)有把飯給我送過(guò)來(lái),我覺(jué)得特別生氣,好餓漂辐,打了她好幾個(gè)電話也沒(méi)有接髓涯,...
    柔光寶寶閱讀 236評(píng)論 0 0