100家知名企業(yè)今年來(lái)iOS面試題合集:
你要的這里都有勘高;
企業(yè)要的這里也有;
從基礎(chǔ)開始到進(jìn)階坟桅、深入底層
整理出188個(gè)面試題华望,全是干貨
這些全部是題目跟類目,每個(gè)題目都會(huì)有相對(duì)的答案仅乓,由于字?jǐn)?shù)太多所以我整理出一個(gè)文檔赖舟,文檔獲取地址,作者創(chuàng)建的iOS行業(yè)交流群:763164022夸楣,加群在群文件下載
目錄展示:
1宾抓、swift和oc的區(qū)別
2、編譯鏈接
3豫喧、synthesize & denamic
4石洗、在項(xiàng)目開發(fā)中常用的開發(fā)工具有哪些?
5紧显、UITableView & UICollection
6讲衫、NSProxy & NSObject
7、Object & Swift
8孵班、傳值通知 & 推送通知(本地&遠(yuǎn)程)
9涉兽、第三方庫(kù) & 第三方平臺(tái)
10、NSCache & NSDcitionary
11篙程、 UIView的setNeedsDisplay和setNeedsLayout方法
12枷畏、UILayer & UIView
13、layoutSubViews & drawRects
14虱饿、UDID & UUID
15拥诡、CPU & GPU
16丹允、點(diǎn)(pt)& 像素(px)
17、屬性與成員變量
18袋倔、int和NSInteger的區(qū)別
(1)import和include
(2)@class
(3)全局 & 靜態(tài)變量
19、類和對(duì)象
(1)分類拓展協(xié)議中哪些可以聲明屬性?
(2)繼承和類別的區(qū)別
(3)分類的作用
(4)分類的局限性
20折柠、category & extension
21宾娜、Foundation
(1)字符串
(2)字符串截取
(3)格式
22、NSArray和NSDictionary
(1)iOS遍歷數(shù)組/字典的方法
(2)NSValue NSNumber
(3)其它
(4)如何避免循環(huán)引用
23扇售、CFSocket使用有哪幾個(gè)步驟
24前塔、Core Foundation中提供了哪幾種操作Socket的方法?
25承冰、解析XML文件有哪幾種方式华弓?
26、什么是沙盒模型困乒?哪些操作是屬于私有api范疇?
27寂屏、在一個(gè)對(duì)象的方法里面:self.name= “object”;和 name =”object” 有什么不同嗎?
28娜搂、請(qǐng)簡(jiǎn)要說(shuō)明viewDidLoad和viewDidUnload何時(shí)調(diào)用
29迁霎、創(chuàng)建控制器、視圖的方式
30百宇、簡(jiǎn)述內(nèi)存分區(qū)情況
31考廉、隊(duì)列和棧有什么區(qū)別
32、iOS的系統(tǒng)架構(gòu)
33携御、控件主要響應(yīng)3種事件
34昌粤、xib文件的構(gòu)成分為哪3個(gè)圖標(biāo)?都具有什么功能
35啄刹、簡(jiǎn)述視圖控件器的生命周期
36涮坐、app 項(xiàng)目的生命周期
(1)應(yīng)用的生命周期
(2)簡(jiǎn)要說(shuō)明一下APP的啟動(dòng)過(guò)程,main文件說(shuō)起鸵膏,main函數(shù)中有什么函數(shù)膊升?作用是什么?
(3)UIApplicationMain函數(shù)作用
(4)main函數(shù)作用
37谭企、 動(dòng)畫有基本類型有哪幾種廓译;表視圖有哪幾種基本樣式。
38债查、實(shí)現(xiàn)簡(jiǎn)單的表格顯示需要設(shè)置UITableView的什么屬性非区、實(shí)現(xiàn)什么協(xié)議?
39盹廷、Cocoa Touch提供了哪幾種Core Animation過(guò)渡類型征绸?
40、UIView與CLayer有什么區(qū)別?
41管怠、Quatrz 2D的繪圖功能的三個(gè)核心概念是什么并簡(jiǎn)述其作用
42淆衷、iPhone OS主要提供了幾種播放音頻的方法?
43渤弛、使用AVAudioPlayer類調(diào)用哪個(gè)框架祝拯、使用步驟?
44她肯、有哪幾種手勢(shì)通知方法佳头、寫清楚方法名?
45晴氨、ViewController的didReceiveMemoryWarning怎么被調(diào)用
46康嘉、什么時(shí)候用delegate,什么時(shí)候用Notification?
47、用預(yù)處理指令#define聲明一個(gè)常數(shù)籽前,用以表明1年中有多少秒(忽略閏年問(wèn)題)
48亭珍、寫一個(gè)”標(biāo)準(zhǔn)"宏MIN ,這個(gè)宏輸入兩個(gè)參數(shù)并返回較小的一個(gè)枝哄。
49块蚌、關(guān)鍵字const有什么含意?修飾類呢?static的作用,用于類呢?還有extern c的作用
50膘格、關(guān)鍵字volatile有什么含意?并給出三個(gè)不同的例子
51峭范、一個(gè)參數(shù)既可以是const還可以是volatile嗎? 一個(gè)指針可以是volatile 嗎瘪贱?解釋為什么纱控。
52、static 關(guān)鍵字的作用
53菜秦、列舉幾種進(jìn)程的同步機(jī)制甜害,并比較其優(yōu)缺點(diǎn)。
54球昨、進(jìn)程之間通信的途徑
55尔店、進(jìn)程死鎖的原因
56、死鎖的4個(gè)必要條件
57主慰、死鎖的處理
58嚣州、cocoa touch框架
59、自動(dòng)釋放池是什么,如何工作
60共螺、sprintf,strcpy,memcpy使用上有什么要注意的地方
61该肴、你了解svn,cvs等版本控制工具么?
62藐不、什么是push
63匀哄、靜態(tài)鏈接庫(kù)
64秦效、OC三大特性
(1)封裝_點(diǎn)語(yǔ)法
(2)繼承
(3)多態(tài)
65、OC中如何實(shí)現(xiàn)多態(tài)
66涎嚼、Objective-C的優(yōu)缺點(diǎn)
67阱州、對(duì)于OC,你認(rèn)為最大的優(yōu)點(diǎn)和最大的不足是什么?對(duì)于不足之處法梯,現(xiàn)在有沒有可用的方法繞過(guò)這些不足來(lái)實(shí)現(xiàn)需求贡耽。如果可以話,有沒有考慮或者實(shí)現(xiàn)過(guò)重新實(shí)現(xiàn)OC的功能鹊汛,如果有,具體怎么做阱冶?
68刁憋、oc中可修改和不可以修改類型
69、我們說(shuō)的oc是動(dòng)態(tài)運(yùn)行時(shí)語(yǔ)言是什么意思?
70木蹬、通知和協(xié)議的不同之處?
71至耻、什么是推送消息?
72、關(guān)于多態(tài)性
73镊叁、什么是謂詞?
74尘颓、做過(guò)的項(xiàng)目是否涉及網(wǎng)絡(luò)訪問(wèn)功能,使用什么對(duì)象完成網(wǎng)絡(luò)功能?
75晦譬、簡(jiǎn)單介紹下NSURLConnection類及+sendSynchronousRequest:returningResponse:error:與– initWithRequest:delegate:兩個(gè)方法的區(qū)別?
76疤苹、談?wù)凮bject-C的內(nèi)存管理方式及過(guò)程?
77敛腌、Object-C有私有方法嗎卧土?私有變量呢?
78像樊、說(shuō)說(shuō)響應(yīng)鏈
79尤莺、時(shí)間傳遞 & 響應(yīng)者鏈
80、frame和bounds有什么不同?
81生棍、方法和選擇器有何不同?
82颤霎、OC的垃圾回收機(jī)制?
83、什么是延遲加載?
84涂滴、是否在一個(gè)視圖控制器中嵌入兩個(gè)tableview控制器?
85友酱、一個(gè)tableView是否可以關(guān)聯(lián)兩個(gè)不同的數(shù)據(jù)源?你會(huì)怎么處理?
86、什么時(shí)候使用NSMutableArray柔纵,什么時(shí)候使用NSArray?
87粹污、給出委托方法的實(shí)例,并且說(shuō)出UITableVIew的Data Source方法
88首量、在應(yīng)用中可以創(chuàng)建多少autorelease對(duì)象壮吩,是否有限制?
89进苍、如果我們不創(chuàng)建內(nèi)存池,是否有內(nèi)存池提供給我們?
90鸭叙、什么時(shí)候需要在程序中創(chuàng)建內(nèi)存池?
91觉啊、類NSObject的那些方法經(jīng)常被使用?
92、什么是簡(jiǎn)便構(gòu)造方法?
93沈贝、如何使用Xcode設(shè)計(jì)通用應(yīng)用?
94杠人、 UIView的動(dòng)畫效果有那些?
95、Object-C有多繼承嗎宋下?沒有的話用什么代替嗡善?cocoa 中所有的類都是NSObject 的子類
96、內(nèi)存管理 Autorelease学歧、retain罩引、copy、assign的set方法和含義枝笨?
97袁铐、C和obj-c 如何混用
98、類別的作用?繼承和類別在實(shí)現(xiàn)中有何區(qū)別?
99横浑、類別和類擴(kuò)展的區(qū)別剔桨。
100、oc中的協(xié)議和java中的接口概念有何不同?
101徙融、深拷貝與前拷貝區(qū)別
(1)什么是深拷貝淺拷貝
(2)字符串什么時(shí)候使用copy,strong
(3)字符串所在內(nèi)存區(qū)域
(4)mutablecopy和copy @property(copy) NSMutableArray *arr;這樣寫有什么問(wèn)題
(5)如何讓自定義類可以使用copy修飾符
102洒缀、對(duì)于語(yǔ)句NSString*obj = [[NSData alloc] init]; obj在編譯時(shí)和運(yùn)行時(shí)分別時(shí)什么類型的對(duì)象?
103欺冀、#import 跟#include 又什么區(qū)別帝洪,@class呢, #import<> 跟 #import”"又什么區(qū)別?
104脚猾、Objective-C的類可以多重繼承么?可以實(shí)現(xiàn)多個(gè)接口么?Category是什么?重寫一個(gè)類的方法用繼承好還是分類好?為什么?
105葱峡、 #import 跟#include 又什么區(qū)別,@class呢, #import<> 跟 #import””又什么區(qū)別?
106龙助、寫一個(gè)setter方法用于完成@property (nonatomic,retain)NSString *name,寫一個(gè)setter方法用于完成@property(nonatomic砰奕,copy)NSString *name
107、常見的Objective-C的數(shù)據(jù)類型有那些提鸟, 和C的基本數(shù)據(jù)類型有什么區(qū)別?如:NSInteger和int
108军援、id 聲明的對(duì)象有什么特性?
109、Objective-C如何對(duì)內(nèi)存管理的,說(shuō)說(shuō)你的看法和解決方法?
110称勋、原子(atomic)跟非原子(non-atomic)屬性有什么區(qū)別?
111胸哥、看下面的程序,第一個(gè)NSLog會(huì)輸出什么?這時(shí)str的retainCount是多少?第二個(gè)和第三個(gè)呢? 為什么?
112、內(nèi)存管理的幾條原則時(shí)什么?按照默認(rèn)法則.那些關(guān)鍵字生成的對(duì)象需要手動(dòng)釋放?在和property結(jié)合的時(shí)候怎樣有效的避免內(nèi)存泄露?
113赡鲜、如何對(duì)iOS設(shè)備進(jìn)行性能測(cè)試?
114空厌、設(shè)計(jì)模式
(1)mvc模式
(2)單例模式
(3)mvvm模式
(4)觀察者模式
(5)工廠模式
(6)代理模式
(7)策略模式
(8)適配器模式
(9)模版模式
(10)外觀模式
(11)創(chuàng)建模式
(12)MVP模式
115庐船、MVVM模式原理分析
116、說(shuō)說(shuō)常用的幾種傳值方式
117嘲更、什么時(shí)候用delegate筐钟,什么時(shí)候用Notification
118、對(duì)于單例的理解
119赋朦、從設(shè)計(jì)模式角度分析代理篓冲,通知和KVO區(qū)別?ios SDK 提供 的framework使用了哪些設(shè)計(jì)模式宠哄,為什么使用壹将?有哪些好處和壞處?
120、KVO毛嫉,NSNotification诽俯,delegate及block區(qū)別
121、運(yùn)行時(shí)(runTime)
122狱庇、runtime/消息轉(zhuǎn)發(fā)機(jī)制
(1)runtime
1.1、什么是runtime
1.2恶耽、runtime干什么用密任,使用場(chǎng)景
(2)消息機(jī)制
2.1、消息轉(zhuǎn)發(fā)的原理
2.2偷俭、SEL isa super cmd 是什么
(3)動(dòng)態(tài)綁定
123浪讳、使用bugly進(jìn)行崩潰分析
124、jenkens 持續(xù)打包
125涌萤、KVO & KVC
(1)底層實(shí)現(xiàn)
(2)KVO概述
(3)KVC概述
126淹遵、什么是KVO和KVC?
KVO和KVC
(1)如何調(diào)用私有變量,如何修改系統(tǒng)的只讀屬性负溪,KVC的查找順序
(2)什么是鍵-值,鍵路徑是什么
(3)kvo的實(shí)現(xiàn)機(jī)制
(4)KVO計(jì)算屬性透揣,設(shè)置依賴鍵
(5)KVO集合屬性
(6)kvo使用場(chǎng)景
127、SDWebImage(SDWebImage的實(shí)現(xiàn)機(jī)制)
(1)主要功能
(2)緩存
(3)內(nèi)存緩存與磁盤緩存
128川抡、框架 SDWebimage的緩存機(jī)制
129辐真、網(wǎng)絡(luò)安全
密碼的安全原則
130、多線程
(1)多線程概念
(2)多線程的作用
(3)使用場(chǎng)景
131崖堤、NSOperationQueue和GCD的區(qū)別是什么
132侍咱、GCD與NSThread的區(qū)別
133、進(jìn)程和線程的區(qū)別與聯(lián)系是什么?
134密幔、別異步執(zhí)行兩個(gè)耗時(shí)操作楔脯,等兩次耗時(shí)操作都執(zhí)行完畢后,再回到主線程執(zhí)行操作. 使用隊(duì)列組(dispatch_group_t
)快速,高效的實(shí)現(xiàn)上述需求
135、在項(xiàng)目什么時(shí)候選擇使用GCD胯甩,什么時(shí)候選擇NSOperation?
136昧廷、對(duì)比iOS中的多線程技術(shù)
137堪嫂、多線程優(yōu)缺點(diǎn)
138、iOS中的延遲操作
139麸粮、串行隊(duì)列同步執(zhí)行和異步主隊(duì)列
140溉苛、資源搶奪解決方案
141、dispatch_barrier_async
的作用是什么弄诲?
142愚战、在多線程Core Data中,NSC,MOC,NSObjectModel哪些需要在線程中創(chuàng)建或者傳遞齐遵?你是用什么策越來(lái)實(shí)現(xiàn)的寂玲?
143、+(void)load與 +(void)initialize區(qū)別load 和 initialize方法的區(qū)別
144梗摇、http的post與區(qū)別與聯(lián)系拓哟,實(shí)踐中如何選擇它們?
145伶授、說(shuō)說(shuō)關(guān)于UDP/TCP的區(qū)別断序?
146、http和scoket通信的區(qū)別?socket連接相關(guān)庫(kù),TCP,UDP的連接方法,HTTP的幾種常用方式?
147糜烹、HTTP請(qǐng)求常用的幾種方式
148违诗、block
(1)使用block時(shí)什么情況會(huì)發(fā)生引用循環(huán),如何解決疮蹦?
(2)在block內(nèi)如何修改block外部變量诸迟?
(3)Block & MRC-Block
(4)什么是block
(5)block 實(shí)現(xiàn)原理
(6)關(guān)于block
(7)使用block和使用delegate完成委托模式有什么優(yōu)點(diǎn)
(8)多線程與block
(9)談?wù)剬?duì)Block 的理解?并寫出一個(gè)使用Block執(zhí)行UIVew動(dòng)畫?
(10)寫出上面代碼的Block的定義(接上題)
149、Weak愕乎、strong阵苇、copy、assign 使用
(1)什么情況使用 weak 關(guān)鍵字感论,相比 assign 有什么不同绅项?
(2)怎么用 copy 關(guān)鍵字?
(3)weak & strong
(4)這個(gè)寫法會(huì)出什么問(wèn)題: @property (copy) NSMutableArray *array
(5) 如何讓自己的類用 copy 修飾符比肄?如何重寫帶 copy 關(guān)鍵字的 setter趁怔?
(6) @property 的本質(zhì)是什么?ivar薪前、getter润努、setter 是如何生成并添加到這個(gè)類中的
(7)ivar、getter示括、setter 是如何生成并添加到這個(gè)類中的?
(8)用@property聲明的NSString(或NSArray铺浇,NSDictionary)經(jīng)常使用copy關(guān)鍵字,為什么垛膝?如果改用strong關(guān)鍵字鳍侣,可能造成什么問(wèn)題丁稀?
(9)@protocol 和 category 中如何使用 @property
(10)runtime如何通過(guò)selector找到對(duì)應(yīng)的IMP地址?
(11)retain和copy區(qū)別
(12)copy和strong的使用倚聚?
(13)NSString和NSMutableString线衫,前者線程安全,后者線程不安全惑折。
(14)readwrite授账,readonly,assign惨驶,retain白热,copy,weak ,strong,nonatomic 屬性的作用
150粗卜、OC與JS的交互(iOS與H5混編)
TableView性能優(yōu)化
UITableView核心思想
UITableView的優(yōu)化主要從三個(gè)方面入手:
151屋确、TableView為什么會(huì)卡?
152续扔、UITableView
(1)UITableView最核心的思想
(2)定義高度
(3)自定義高度原理
(4)老生常談之UITableView的性能優(yōu)化
(5)cell高度的計(jì)算
(5.1)定高的cell和動(dòng)態(tài)高度的cell
(6)TableView渲染
(7)減少視圖的數(shù)目
(8)減少多余的繪制操作
(9)不要給cell動(dòng)態(tài)添加subView
(10)異步化UI攻臀,不要阻塞主線程
(11)滑動(dòng)時(shí)按需加載對(duì)應(yīng)的內(nèi)容
(12)離屏渲染的問(wèn)題
(13)離屏渲染優(yōu)化方案
153、環(huán)信SDK使用
154纱昧、藍(lán)牙
155安疗、在iPhone應(yīng)用中如何保存數(shù)據(jù)?
156某残、什么是coredata?
157祭钉、 什么是NSManagedObject模型?
158腾节、什么是NSManagedobjectContext?
159棵譬、 iOS平臺(tái)怎么做數(shù)據(jù)的持久化?coredata 和sqlite有無(wú)必然聯(lián)系株依?coredata是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)嗎叉存?
160阎曹、CoreData & SQLite3
161雕拼、數(shù)據(jù)存儲(chǔ)
(1)數(shù)據(jù)存儲(chǔ)技術(shù)
(1.1)數(shù)據(jù)存儲(chǔ)的幾種方式
(1.2)各自特點(diǎn)(面試考點(diǎn))
(1.3)偏好設(shè)置(面試考點(diǎn))
(1.4)歸檔(面試考點(diǎn))
(2)數(shù)據(jù)庫(kù)技術(shù)(SQLite&CoreData)
162纵东、Objective-C堆和棧的區(qū)別?
163啥寇、內(nèi)存泄露 & 內(nèi)存溢出
164偎球、堆 & 棧
(1)堆棧空間分配區(qū)別
(2)堆棧緩存方式區(qū)別
(3)堆棧數(shù)據(jù)結(jié)構(gòu)區(qū)別
165辑甜、內(nèi)存管理
(1)內(nèi)存區(qū)域
(1.1)堆和棧的區(qū)別
(1.2)iOS內(nèi)存區(qū)域
(2)字符串的內(nèi)存管理
(3)你是如何優(yōu)化內(nèi)存管理
(4)循環(huán)引用
(5)autorelease的使用
(5.1)工廠方法為什么不釋放對(duì)象
(5.2)ARC下autorelease的使用場(chǎng)景
(5.3)自動(dòng)釋放池如何工作
(5.4)避免內(nèi)存峰值
(5.5)ARC和MRC的混用
(5.6)NSTimer的內(nèi)存管理
(5.7)ARC的實(shí)現(xiàn)原理
166衰絮、Runloop
167、fmmpeg框架
168磷醋、fmdb框架
169猫牡、320框架
170、UIKit和CoreAnimation和CoreGraphics的關(guān)系是什么邓线?在開發(fā)中是否使用過(guò)CoreAnimation和CoreGraphics?
171淌友、trasform
172煌恢、點(diǎn)講動(dòng)畫和layer ,view的區(qū)別
173、圖層與視圖
174震庭、平行的層級(jí)關(guān)系
175瑰抵、圖層的能力
176、使用圖層
177器联、核心繪圖
(1)View和layer的區(qū)別
(2)new和alloc init的區(qū)別
178二汛、動(dòng)畫
179、UICollectionView
(1)何實(shí)現(xiàn)瀑布流,流水布局
(2)和UITableView的使用區(qū)別
180主籍、UIImage
181习贫、webview
182、描述九宮格算法
183千元、實(shí)現(xiàn)圖片輪播圖
184苫昌、iOS網(wǎng)絡(luò)框架
185、網(wǎng)絡(luò)
(1)網(wǎng)絡(luò)基礎(chǔ)
(2)網(wǎng)絡(luò)傳輸
(3)AFN
186幸海、AFNetworking & ASIHttpRequest & MKNetWorking
(1)底層實(shí)現(xiàn)
(2)對(duì)服務(wù)器返回的數(shù)據(jù)處理
(3)監(jiān)聽請(qǐng)求過(guò)程
(4)在文件下載和文件上傳的使用難易度
(5)網(wǎng)絡(luò)監(jiān)控
(6)ASI提供的其他實(shí)用功能
(7)MKNetworkKit
187祟身、性能優(yōu)化
188、算法