最全的iOS面試題及答案
iOS面試小貼士
———————————————回答好下面的足夠了-------------------------------------
目錄:
基礎
- 如何令?自?己所寫的對象具有拷?貝功能?
- 說說你理理解weak屬性?
- 題?目:Swift mutating關鍵字的使?用?
- UIView和 CALayer是什什么關系?
- 下?面的代碼輸出什什么?
- @synthesize 和 @dynamic 分別有什什么作?用?
- 動態綁定
- Category(類別)、 Extension(擴展)和繼承的區別
- 為什什么代理理要?用weak?代理理的delegate和dataSource有什什么區別?block和代理理 的區別?
- id和NSObject*的區別
- 如何令?自?己所寫的對象具有拷?貝功能?
- 使?用系統的某些block api(如UIView的block版本寫動畫時),是否也考慮引?用 循環問題?
- ?用@property聲明的NSString(或NSArray,NSDictionary)經常使?用copy關鍵 字,為什什么?如果改?用strong關鍵字,可能造成什什么問題?
- UIView和 CALayer是什什么關系?
- static有什什么作?用?
底層:
- main()之前的過程有哪些?
- KVO基本原理理?
- Swift 下的如何使?用 KVC?
- :Swift有哪些模式匹配?
- objc在向?一個對象發送消息時,發?生了了什什么?
- 靜態庫的原理理是什什么?你有沒有?自?己寫過靜態編譯庫,遇到了了哪些問題?
- runloop是來做什什么的?runloop和線程有什什么關系?主線程默認開啟了了runloop 么??子線程呢?
- 不不?手動指定autoreleasepool的前提下,?一個autorealese對象在什什么時刻釋放? (?比如在?一個vc的viewDidLoad中創建
- 不不?手動指定autoreleasepool的前提下,?一個autorealese對象在什什么時刻釋放? (?比如在?一個vc的viewDidLoad中創建)
- OC完整的消息轉發機制+代碼實現【暴暴擊】
- 以+ scheduledTimerWithTimeInterval...的?方式觸發的timer,在滑動?頁?面上的 列列表時,timer會暫定回調,為什什么?如何解決?
- 如何?手動觸發?一個value的KVO
- 如何對定位和分析項?目中影響性能的地?方?以及如何進?行行性能優化?
- 串串?行行并?行行,異步同步的區別?
- 線程是什什么?進程是什什么??二者有什什么區別和聯系?
- RunLoop是什什么?
- 假設有?一個字符串串aabcad,請寫?一段程序,去掉字符串串中不不相鄰的重復字符 串串,即上述字符串串處理理之后的輸出結果為:aabcd @autoclosure(?自動閉包)
- iOS app啟動如何優化?
- swift?面試題:
- 怎樣防?止反編譯?
- UITableView性能優化,超實?用
線程: - 不不要阻塞主線程
- 談談你對多線程開發的理理解?ios中有?幾種實現多線程的?方法?
- 進程和線程的區別?同步異步的區別?并?行行和并發的區別?
- ViewController?生命周期
- iOS 中的多線程
- 內存管理理的?幾條原則時什什么?按照默認法則.那些關鍵字?生成的對象 需要?手動釋放?在和property結合的時候怎樣有效的避免內存泄露露? 誰申請,誰釋放
- dispatch_barrier_async的作?用是什什么?
- 如何?用GCD同步若?干個異步調?用?(如根據若?干個url異步加載多張圖?片,然后在 都下載完成后合成?一張整圖)
http:
- http與https的區別?
- 服務器?能否知道APNS推送后有沒有到達客戶端的?方法?
app:
- 1.什什么?方式可以看到上架App的頭?文件?
2.閱讀過哪些框架的源碼?能說說它的架構?方式嗎 - iOS iAP內購審核可能失敗的問題
IAP內購中虛擬貨幣導致審核?無法通過的問題?
基礎:
1、如何令?自?己所寫的對象具有拷?貝功能?
如果想讓?自?己的類具備copy?方法,并返回不不可邊類型,必須遵循nscopying
協議,并 且實現
- (id)copyWithZone:(NSZone *)zone
如果讓自?己的類具備mutableCopy
方法,并且放回可變類型,必須遵守NSMutableCopying
并實現- (id)mutableCopyWithZone:(nullable NSZone *)zone
注意:再此說的copy
對應不不可邊類型和mutableCopy
對應不不可邊類型?方法,都是遵從 系統規則?而已。如果你想實現?自?己的規則,也是可以的。
2、 釋放時,調?用clearDeallocating
函數。clearDeallocating
函數?首先根據對象地址 獲取所有weak
指針地址的數組,然后遍歷這個數組把其中的數據設為nil
后把這個entry從weak
表中刪除,后清理理對象的記錄。
追問的問題?:
1.實現weak
后,為什么對象釋放后會自動為nil
?
runtime?對注冊的類, 會進?行行布局,對于?weak?對象會放?入?一個?hash?表中。 ?用?weak?指向的對象內存地址作為?key,當此對象的引?用計數為?0?的時候會? dealloc,假如?weak?指向的對象內存地址是?a?,那么就會以?a?為鍵, 在這個? weak?表中搜索,找到所有以?a?為鍵的?weak?對象,從?而設置為?nil?。
由于太長只能寫到這里 需要這份面試題的朋友可以到群里:763164022直接下載學習,群里不僅有面試資料還有群友在聊技術,群里全是iOS開發者,希望大家共同進步!
image.png
image.png
image.png