1、打造最受企業歡迎的iOS開發者:
- 一直都存在的問題,什么樣的員工最受企業歡迎?
- 一直也有人在努力提升自己,成為受企業歡迎的員工
- 然而,我們應該往方向去提升自己呢?
- 88家知名企業今年來iOS面試題合集:
- 你要的這里都有;
- 企業要的這里也有;
- 從基礎開始到進階、深入底層
- 整理出188個大綱,干貨太足
- 每個題目都會有相對的答案,由于字數太多所以我整理出一個文檔,文檔獲取地址,加入iOS開發交流群:659170228免費獲取。打造最受企業歡迎的iOS開發者
2、大綱展示階段一:
01
- 1、swift和oc的區別
- 2、編譯鏈接
- 3、synthesize?&?denamic
- 4、在項目開發中常用的開發工具有哪些?
- 5、UITableView?&?UICollection
- 6、NSProxy?&?NSObject
- 7、Object?&?Swift
- 8、傳值通知?&?推送通知(本地&遠程)
- 9、第三方庫?&?第三方平臺
02
- 10、NSCache?&?NSDcitionary
- 11、?UIView的setNeedsDisplay和setNeedsLayout方法
- 12、UILayer?&?UIView
- 13、layoutSubViews?&?drawRects
- 14、UDID?&?UUID
- 15、CPU?&?GPU
- 16、點(pt)&?像素(px)
- 17、屬性與成員變量
- 18、int和NSInteger的區別
- (1)import和include
- (2)@class
- (3)全局?&?靜態變量
- 19、類和對象
- (1)分類拓展協議中哪些可以聲明屬性?
- (2)繼承和類別的區別
- (3)分類的作用
- (4)分類的局限性
- 20、category?&?extension
03
- 21、Foundation
- 22、NSArray和NSDictionary
- (1)iOS遍歷數組/字典的方法
- (2)NSValue?NSNumber
- (3)其它
- (4)如何避免循環引用
- 23、CFSocket使用有哪幾個步驟
- 24、Core?Foundation中提供了哪幾種操作Socket的方法?
- 25、解析XML文件有哪幾種方式?
- 26、什么是沙盒模型?哪些操作是屬于私有api范疇?
- 27、在一個對象的方法里面:self.name=?“object”;和?name?=”object”?有什么不同嗎?
- 28、請簡要說明viewDidLoad和viewDidUnload何時調用
- 29、創建控制器、視圖的方式
- 30、簡述內存分區情況
04
- 31、隊列和棧有什么區別
- 32、iOS的系統架構
- 33、控件主要響應3種事件
- 34、xib文件的構成分為哪3個圖標?都具有什么功能
- 35、簡述視圖控件器的生命周期
- 36、app?項目的生命周期
- (1)應用的生命周期
- (2)簡要說明一下APP的啟動過程,main文件說起,main函數中有什么函數?作用是什么?
- (3)UIApplicationMain函數作用
- (4)main函數作用
- 37、?動畫有基本類型有哪幾種;表視圖有哪幾種基本樣式。
- 38、實現簡單的表格顯示需要設置UITableView的什么屬性、實現什么協議?
- 39、Cocoa?Touch提供了哪幾種Core?Animation過渡類型?
05
- 40、UIView與CLayer有什么區別?
- 41、Quatrz?2D的繪圖功能的三個核心概念是什么并簡述其作用
- 42、iPhone?OS主要提供了幾種播放音頻的方法?
- 43、使用AVAudioPlayer類調用哪個框架、使用步驟?
- 44、有哪幾種手勢通知方法、寫清楚方法名?
- 45、ViewController的didReceiveMemoryWarning怎么被調用
- 46、什么時候用delegate,什么時候用Notification?
- 47、用預處理指令#define聲明一個常數,用以表明1年中有多少秒(忽略閏年問題)
- 48、寫一個”標準"宏MIN?,這個宏輸入兩個參數并返回較小的一個。
- 49、關鍵字const有什么含意?修飾類呢?static的作用,用于類呢?還有extern?c的作用
- 50、關鍵字volatile有什么含意?并給出三個不同的例子
3、大綱展示階段二:
06
- 51、一個參數既可以是const還可以是volatile嗎??一個指針可以是volatile?嗎?解釋為什么。
- 52、static?關鍵字的作用
- 53、列舉幾種進程的同步機制,并比較其優缺點。
- 54、進程之間通信的途徑
- 55、進程死鎖的原因
- 56、死鎖的4個必要條件
- 57、死鎖的處理
- 58、cocoa?touch框架
- 59、自動釋放池是什么,如何工作
- 60、sprintf,strcpy,memcpy使用上有什么要注意的地方
07
- 61、你了解svn,cvs等版本控制工具么?
- 62、什么是push
- 63、靜態鏈接庫
- 64、OC三大特性
- 65、OC中如何實現多態
- 66、Objective-C的優缺點
- 67、對于OC,你認為最大的優點和最大的不足是什么?對于不足之處,現在有沒有可用的方法繞過這些不足來實現需求。如果可以話,有沒有考慮或者實現過重新實現OC的功能,如果有,具體怎么做?
- 68、oc中可修改和不可以修改類型
- 69、我們說的oc是動態運行時語言是什么意思?
- 70、通知和協議的不同之處?
08
- 71、什么是推送消息?
- 72、關于多態性
- 73、什么是謂詞?
- 74、做過的項目是否涉及網絡訪問功能,使用什么對象完成網絡功能?
- 75、簡單介紹下NSURLConnection類及+sendSynchronousRequest:returningResponse:error:與–?initWithRequest:delegate:兩個方法的區別?
- 76、談談Object-C的內存管理方式及過程?
- 77、Object-C有私有方法嗎?私有變量呢?
- 78、說說響應鏈
- 79、時間傳遞?&?響應者鏈
09
- 80、frame和bounds有什么不同?
- 81、方法和選擇器有何不同?
- 82、OC的垃圾回收機制?
- 83、什么是延遲加載?
- 84、是否在一個視圖控制器中嵌入兩個tableview控制器?
- 85、一個tableView是否可以關聯兩個不同的數據源?你會怎么處理?
- 86、什么時候使用NSMutableArray,什么時候使用NSArray?
- 87、給出委托方法的實例,并且說出UITableVIew的Data?Source方法
- 88、在應用中可以創建多少autorelease對象,是否有限制?
- 89、如果我們不創建內存池,是否有內存池提供給我們?
10
- 90、什么時候需要在程序中創建內存池?
- 91、類NSObject的那些方法經常被使用?
- 92、什么是簡便構造方法?
- 93、如何使用Xcode設計通用應用?
- 94、?UIView的動畫效果有那些?
- 95、Object-C有多繼承嗎?沒有的話用什么代替?cocoa?中所有的類都是NSObject?的子類
- 96、內存管理?Autorelease、retain、copy、assign的set方法和含義?
- 97、C和obj-c?如何混用
- 98、類別的作用?繼承和類別在實現中有何區別?
- 99、類別和類擴展的區別。
- 100、oc中的協議和java中的接口概念有何不同?
4、大綱展示階段三:
11
- 101、深拷貝與前拷貝區別
- (1)什么是深拷貝淺拷貝
- (2)字符串什么時候使用copy,strong
- (3)字符串所在內存區域
- (4)mutablecopy和copy?@property(copy)?NSMutableArray?*arr;這樣寫有什么問題
- (5)如何讓自定義類可以使用copy修飾符
- 102、對于語句NSString*obj?=?[[NSData?alloc]?init];?obj在編譯時和運行時分別時什么類型的對象?
- 103、#import?跟#include?又什么區別,@class呢,?#import<>?跟?#import”"又什么區別?
- 104、Objective-C的類可以多重繼承么?可以實現多個接口么?Category是什么?重寫一個類的方法用繼承好還是分類好?為什么?
- 105、?#import?跟#include?又什么區別,@class呢,?#import<>?跟?#import””又什么區別?
- 106、寫一個setter方法用于完成@property?(nonatomic,retain)NSString?name,寫一個setter方法用于完成@property(nonatomic,copy)NSString?name
- 107、常見的Objective-C的數據類型有那些,?和C的基本數據類型有什么區別?如:NSInteger和int
- 108、id?聲明的對象有什么特性?
- 109、Objective-C如何對內存管理的,說說你的看法和解決方法?
12
- 110、原子(atomic)跟非原子(non-atomic)屬性有什么區別?
- 111、看下面的程序,第一個NSLog會輸出什么?這時str的retainCount是多少?第二個和第三個呢??為什么?
- 112、內存管理的幾條原則時什么?按照默認法則.那些關鍵字生成的對象需要手動釋放?在和property結合的時候怎樣有效的避免內存泄露?
- 113、如何對iOS設備進行性能測試?
- 114、設計模式
- (1)mvc模式
- (2)單例模式
- (3)mvvm模式
- (4)觀察者模式
- (5)工廠模式
- (6)代理模式
- (7)策略模式
- (8)適配器模式
- (9)模版模式
- (10)外觀模式
- (11)創建模式
- (12)MVP模式
- 115、MVVM模式原理分析
- 116、說說常用的幾種傳值方式
- 117、什么時候用delegate,什么時候用Notification
- 118、對于單例的理解
- 119、從設計模式角度分析代理,通知和KVO區別?ios?SDK?提供?的framework使用了哪些設計模式,為什么使用?有哪些好處和壞處?
- 120、KVO,NSNotification,delegate及block區別
13
- 121、運行時(runTime)
- 122、runtime/消息轉發機制
- (1)runtime
- 1.1、什么是runtime
- 1.2、runtime干什么用,使用場景
- (2)消息機制
- 2.1、消息轉發的原理
- 2.2、SEL?isa?super?cmd?是什么
- (3)動態綁定
- 123、使用bugly進行崩潰分析
- 124、jenkens?持續打包
- 125、KVO?&?KVC
- 126、什么是KVO和KVC?
- KVO和KVC
- (1)如何調用私有變量,如何修改系統的只讀屬性,KVC的查找順序
- (2)什么是鍵-值,鍵路徑是什么
- (3)kvo的實現機制
- (4)KVO計算屬性,設置依賴鍵
- (5)KVO集合屬性
- (6)kvo使用場景
- 127、SDWebImage(SDWebImage的實現機制)
- 128、框架?SDWebimage的緩存機制
- 129、網絡安全
- 密碼的安全原則
- 130、多線程
14
- 131、NSOperationQueue和GCD的區別是什么
- 132、GCD與NSThread的區別
- 133、進程和線程的區別與聯系是什么?
- 134、別異步執行兩個耗時操作,等兩次耗時操作都執行完畢后,再回到主線程執行操作.?使用隊列組(
dispatch_group_t
)快速,高效的實現上述需求 - 135、在項目什么時候選擇使用GCD,什么時候選擇NSOperation?
- 136、對比iOS中的多線程技術
- 137、多線程優缺點
- 138、iOS中的延遲操作
- 139、串行隊列同步執行和異步主隊列
15
- 140、資源搶奪解決方案
- 141、
dispatch_barrier_async
的作用是什么? - 142、在多線程Core?Data中,NSC,MOC,NSObjectModel哪些需要在線程中創建或者傳遞?你是用什么策越來實現的?
- 143、+(void)load與?+(void)initialize區別load?和?initialize方法的區別
- 144、http的post與區別與聯系,實踐中如何選擇它們?
- 145、說說關于UDP/TCP的區別?
- 146、http和scoket通信的區別?socket連接相關庫,TCP,UDP的連接方法,HTTP的幾種常用方式?
- 147、HTTP請求常用的幾種方式
- 148、block
- (1)使用block時什么情況會發生引用循環,如何解決?
- (2)在block內如何修改block外部變量?
- (3)Block?&?MRC-Block
- (4)什么是block
- (5)block?實現原理
- (6)關于block
- (7)使用block和使用delegate完成委托模式有什么優點
- (8)多線程與block
- (9)談談對Block?的理解?并寫出一個使用Block執行UIVew動畫?
- (10)寫出上面代碼的Block的定義(接上題)
- 149、Weak、strong、copy、assign?使用
- (1)什么情況使用?weak?關鍵字,相比?assign?有什么不同?
- (2)怎么用?copy?關鍵字?
- (3)weak?&?strong
- (4)這個寫法會出什么問題:?@property?(copy)?NSMutableArray?*array
- (5)?如何讓自己的類用?copy?修飾符?如何重寫帶?copy?關鍵字的?setter?
- (6)?@property?的本質是什么?ivar、getter、setter?是如何生成并添加到這個類中的
- (7)ivar、getter、setter?是如何生成并添加到這個類中的?
- (8)用@property聲明的NSString(或NSArray,NSDictionary)經常使用copy關鍵字,為什么?如果改用strong關鍵字,可能造成什么問題?
- (9)@protocol?和?category?中如何使用?@property
- (10)runtime如何通過selector找到對應的IMP地址?
- (11)retain和copy區別
- (12)copy和strong的使用?
- (13)NSString和NSMutableString,前者線程安全,后者線程不安全。
- (14)readwrite,readonly,assign,retain,copy,weak?,strong,nonatomic?屬性的作用
- 150、OC與JS的交互(iOS與H5混編)
- TableView性能優化
- UITableView核心思想
- UITableView的優化主要從三個方面入手:
5、大綱展示階段四:
16
- 151、TableView為什么會卡?
- 152、UITableView
- (1)UITableView最核心的思想
- (2)定義高度
- (3)自定義高度原理
- (4)老生常談之UITableView的性能優化
- (5)cell高度的計算
- (5.1)定高的cell和動態高度的cell
- (6)TableView渲染
- (7)減少視圖的數目
- (8)減少多余的繪制操作
- (9)不要給cell動態添加subView
- (10)異步化UI,不要阻塞主線程
- (11)滑動時按需加載對應的內容
- (12)離屏渲染的問題
- (13)離屏渲染優化方案
- 153、環信SDK使用
- 154、藍牙
- 155、在iPhone應用中如何保存數據?
- 156、什么是coredata?
- 157、?什么是NSManagedObject模型?
- 158、什么是NSManagedobjectContext?
- 159、?iOS平臺怎么做數據的持久化?coredata?和sqlite有無必然聯系?coredata是一個關系型數據庫嗎?
- 160、CoreData?&?SQLite3
17
- 161、數據存儲
- (1)數據存儲技術
- (1.1)數據存儲的幾種方式
- (1.2)各自特點(面試考點)
- (1.3)偏好設置(面試考點)
- (1.4)歸檔(面試考點)
- (2)數據庫技術(SQLite&CoreData)
- 162、Objective-C堆和棧的區別?
- 163、內存泄露?&?內存溢出
- 164、堆?&?棧
- (1)堆棧空間分配區別
- (2)堆棧緩存方式區別
- (3)堆棧數據結構區別
- 165、內存管理
- (1)內存區域
- (2)字符串的內存管理
- (3)你是如何優化內存管理
- (4)循環引用
- (5)autorelease的使用
- (5.1)工廠方法為什么不釋放對象
- (5.2)ARC下autorelease的使用場景
- (5.3)自動釋放池如何工作
- (5.4)避免內存峰值
- (5.5)ARC和MRC的混用
- (5.6)NSTimer的內存管理
- (5.7)ARC的實現原理
- 166、Runloop
- 167、fmmpeg框架
- 168、fmdb框架
- 169、320框架
- 170、UIKit和CoreAnimation和CoreGraphics的關系是什么?在開發中是否使用過CoreAnimation和CoreGraphics?
18
- 171、trasform
- 172、點講動畫和layer?,view的區別
- 173、圖層與視圖
- 174、平行的層級關系
- 175、圖層的能力
- 176、使用圖層
- 177、核心繪圖
- (1)View和layer的區別
- (2)new和alloc?init的區別
- 178、動畫
- 179、UICollectionView
- (1)何實現瀑布流,流水布局
- (2)和UITableView的使用區別
- 180、UIImage
19
- 181、webview
- 182、描述九宮格算法
- 183、實現圖片輪播圖
- 184、iOS網絡框架
- 185、網絡
- 186、AFNetworking?&?ASIHttpRequest?&?MKNetWorking
- (1)底層實現
- (2)對服務器返回的數據處理
- (3)監聽請求過程
- (4)在文件下載和文件上傳的使用難易度
- (5)網絡監控
- (6)ASI提供的其他實用功能
- (7)MKNetworkKit
- 187、性能優化
- 188、算法
轉載于:https://www.cnblogs.com/CH520/p/9463270.html