大咖面試
部分題目來自:不懂技術的愛迪生
網易一面
轉載:iOS:網易一面
1、你一般學習iOS是如何學習的?
2、app記憶體你是如何分析的?
3、用過 TableView 嗎,平時怎麼解決 TableView 滑動卡頓問題的?
4、網路模型瞭解麼?有哪幾種?說說你的看法?
5、block本質是什麼?
6、KVC機制是如何通過key找到value。
7、說說你最熟悉的第三方,知曉其原理麼?
騰訊一面
轉載:騰訊一面
1、使用了第三方庫, 有看他們是怎麼實現的嗎?
2、強連通量演算法瞭解嘛?
3、遇到tableView卡頓嘛?會造成卡頓的原因大致有哪些?
4、M、V、C相互通訊規則你知道的有哪些?
5、NStimer準嗎?談談你的看法?如果不準該怎樣實現一個精確的NSTimer?
阿里P6一面
轉載:阿里-p6-一面
1、介紹下記憶體的幾大區域?
2、你是如何元件化解耦的?
3、runtime如何通過selector找到對應的IMP地址
4、runloop內部實現邏輯?
5、你理解的多執行緒?
6、GCD執行原理?
7、怎麼防止別人反編譯你的app?
8、YYAsyncLayer如何非同步繪製?
9、優化你是從哪幾方面著手?
阿里二面
1、MVC具有什麼樣的優勢,各個模組之間怎麼通訊,比如點選Button 後 怎麼通知 Model?
2、兩個無限長度連結串列(也就是可能有環) 判斷有沒有交點
3、UITableView的相關優化
4、KVO、Notification、delegate各自的優缺點,效率還有使用場景
5、如何手動通知KVO
6、Objective-C 中的copy方法
7、runtime 中,SEL和IMP的區別
8、autoreleasepool的使用場景和原理
9、RunLoop的實現原理和資料結構,什麼時候會用到
10、block為什麼會有迴圈引用
11、使用GCD如何實現這個需求:A、B、C 三個任務併發,完成後執行任務 D。
12、NSOperation和GCD的區別
13、CoreData的使用,如何處理多執行緒問題
14、如何設計圖片快取?
15、有沒有自己設計過網路控制元件?
騰訊二面
轉載:騰訊二面
1、編譯過程做了哪些事情;
2、字典大致實現原理;
3、block和函式指標的理解;
4、一般開始做一個專案,你的架構是如何思考的?
5、你瞭解的UIKit結構?
騰訊三面
轉載:騰訊三面
1.OC你瞭解的鎖有哪些?在你回答基礎上進行二次提問;
追問一:自旋和互斥對比?
追問二:使用以上鎖需要注意哪些?
追問三:用C/OC/C++,任選其一,實現自旋或互斥?口述即可!
2.記憶體洩漏可能會出現的幾種原因,聊聊你的看法?
追問一:非OC物件如何處理?
追問二:地圖類記憶體若洩漏,如何處理?
追問三:若常用框架出現記憶體洩漏如何處理?
3.容錯處理你們一般是怎麼做的?
4.專案開始容錯處理沒做?如何防止攔截潛在的崩潰?
2018-iOS面試題
轉載:2018-iOS面試題
1.KVO實現原理?
2.說說你理解的埋點?
3.訊息轉發機制原理?
4.說說你理解weak屬性?
5.假如Controller太臃腫,如何優化?
6.專案中網路層如何做安全處理?
7.main()之前的過程有哪些?
阿里初面
轉載:ofollow,noindex">阿里初面:一份“有點難”的面試題!
1.SD原理以及最大支援多少個下載數?
2.yykit如何非同步渲染?
3.runtime動態建立一個類,需要注意什麼?
4.你理解的runloop和執行緒之間的關係?
5.技術架構如何搭建?
6.還有一個很長字串,你用什麼演算法搜尋到abc的位置?
7.字串如何預處理?
8.https和ssl在握手方向有什麼區別?
9.怎麼防止反編譯
10.程式碼檔案編譯生成過程,編譯和連結有什麼區別,連結做了什麼事情
11.用C語言實現一個通知流程,說思路即可!
12.A B 執行緒執行到一半去執行C執行緒,用OC和C各自怎麼實現!
13.tableview怎麼優化,優化後還是感覺卡怎麼辦!
14.ARC的實現原理,什麼情況下用MRC比ARC好!
15.怎麼定位到野指標的地方。如果還沒定位到,這個物件被提前釋放了,怎麼知道該物件在什麼地方釋放的
16.你平時做過什麼有技術難點的東西,然後解決難點!
某東面試
轉載:面試題-紫潔
1、如何實現一個圖片載入控制元件(包括圖片下載、快取時效、載入)
2、JavaScriptCore是做什麼用的,客戶端使用它可實現什麼功能。
3、程式中新增每3秒響應一次的NSTimer,當拖動tableView的time可能無法響應,為什麼。
4、客戶端在解析伺服器所下發的資料時,例如下面程式碼的片段。
NSString *sku = dict[@"sku"]; NSMutableArray *array = [NSMutableArray array]; [array addObject:sku];
// 可能@“aku”欄位並不存在,sku物件將為nil,執行[array addObject:sku],時將會丟擲異常導致Crash.專案中可能在很多模組存在類似這樣的問題,請從全域性考慮,如何進行異常保護
5、請問,NSLog(@"%@",test);的輸入結果是什麼?這條語句是在哪個執行緒中執行?為什麼?
typedef void (^TestBlock)(void); NSString *test = @"test"; TestBlock block = ^(void){ dispatch_sync(dispatch_queue_create("jd.test", DISPATCH_QUEUE_SERIAL), ^{ NSLog(@"%@",test); }); }; test = @"test1"; block();
2018第一波iOS筆試題
1.什麼是函數語言程式設計?
2.什麼是ABI?
3.什麼是MVC,請結合CocoaTouch說明?
4.什麼是MVVM,請設計View moled需要考慮哪些?
5.swift相對於OC有哪些優點?
6.什麼是泛型,swift在哪些地方使用了泛型?
7.defer、guard的作用?
8.swift語法糖?!的本質(實現原理)
9.舉例swift中模式匹配的作用?
10.swift中private與OC中block的區別?
11.什麼是capture list,舉例說明用處?
12.swift中private與fileprivate的區別?
14.delegate解決了什麼問題,Notification與它有什麼不同?
15.描述一個ViewController的生命週期
16.LLVM與Clang的區別?
17.Class、objc的區別是什麼?
一個小公司的面試
1、解釋一下keywords的區別:assign weak __block, __weak
2、__block在arc和非arc下含義相同麼
3、使用atomic一定是執行緒安全嗎
4、描述一個你遇到過的retain cycle
5、+(void)load;+(void)initalize有什麼用處.
6、為什麼其他語言裡叫函式呼叫,oc裡則是給物件發訊息(或者談一下對runtime理解)
7、什麼是method swizzling
8、UIView 和 CALayer的關係
9、如何高效能的給UIImageView加圓角
10、講講你用Instrument優化動畫效能的經歷
11、loadView是幹什麼用的。
2017年iOS高階面試題
轉載自:2017年iOS高階面試題
1、NSCache類當中是如何解決時間複雜度問題的.請說明其原理.
2、應用啟動時是用怎樣載入所有依賴的Mach-O檔案的?
3、什麼是冷啟動,什麼是熱啟動?
4、有沒有做過專案的優化,請列舉你所知道main()函式之前耗時的因素都有哪些,點選應用響應時間多少ms之內不會讓使用者察覺到
5、屬性 可以與set方法和get方法 三者同時存在嗎,如果不行,請說明原因?
6、Runtime機制是什麼?有沒有寫過方法欺騙?簡述一下
7、GCD和NSoperation的區別之處,請分別說一下特點?
8、Reachability是用來判斷網路狀態的,請簡述一下其原理?
9、layoutSubviews這個方法一般在什麼情況下呼叫的?
10、在一個表內有很多cell,每個cell上有很多個檢視,如何解決卡頓問題(提示Runloop)。
11、Objective-C語言中閉包是如何實現的,閉包中有什麼需要注意,閉包執行環境是在堆還是在棧。
全英文版
1、What's your common workflow (git commands) to fix a bug or add a new feature?
2、Could NSMutableArray property be declared with copy ownership, why or why not?
3、What will happen after invoking test method in ARC and MRC
@interface ViewController () @property (nonatomic, copy) NSString *value; @end - (void)test { for (int i = 0; i < 10000; i ++) { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{ _value = [[NSString alloc] initWithFormat:@"%d", i]; }); } }
4、How to use @synchronize/ NSRecursiveLock/dispatch_semaphore_t
5、List at least two Observer Design Pattem implementation in Cocoa
6、What is the difference between a struct and a class in swift
7、What is the difference between NSRunLoop / CADisplayLink?
8、Write down the sequences ofviewWillApperr/viewDidAppear/viewWillDisppear/viewDidDisappear ,when push B view controller to navigation controller with top view controller
9、List at least five causes for application carshes
10、How does JSPatch work?
11、How does HTTPS work?
12、Implement a binary search function?
13、How is react native different from cordova
翻譯:
1、你工作中修復bug或新增新功能常用的Git命令
2、可變陣列的property是否可用copy修飾,為什麼不能?
3、在ARC和MRC下分別呼叫test 方法會發生什麼
4、如何使用:@synchronize/ NSRecursiveLock/dispatch_semaphore_t
5、列舉Cocoa中至少兩種觀察者設計模式的實現
6、swift中struct和class的區別
7、說說NSRunLoop / CADisplayLink兩者的區別
8、當從棧頂push到B控制器後寫出viewWillApperr/viewDidAppear/viewWillDisppear/viewDidDisappear 的呼叫順序
9、列出五種崩潰情況
10、JSPatch是如何工作的?
11、HTTPS是如何工作的?
12、二分查詢的實現過程
13、說一下react native 和 cordova 的不同
iOS招人心得
擷取某公司面試官部落格:J_Knight_
基礎部分
1、為什麼說Objective-C是一門動態的語言?
2、講一下MVC和MVVM,MVP?
3、如何令自己所寫的物件具有拷貝功能?
4、為什麼代理要用weak?代理的delegate和dataSource有什麼區別?block和代理的區別?
5、可變集合類 和 不可變集合類的 copy 和 mutablecopy有什麼區別?如果是集合是內容複製的話,集合裡面的元素也是內容複製麼?
6、nonatomic和atomic的區別?atomic是絕對的執行緒安全麼?為什麼?如果不是,那應該如何實現?
7、UICollectionView自定義layout如何實現?
8、用StoryBoard開發介面有什麼弊端?如何避免?
9、程序和執行緒的區別?同步非同步的區別?並行和併發的區別?
10、執行緒間通訊?
11、GCD的一些常用的函式?(group,barrier,訊號量,執行緒同步)
12、如何使用佇列來避免資源搶奪?
13、資料持久化的幾個方案(fmdb用沒用過)
14、說一下AppDelegate的幾個方法?從後臺到前臺呼叫了哪些方法?第一次啟動呼叫了哪些方法?從前臺到後臺呼叫了哪些方法?
15、NSCache優於NSDictionary的幾點?
16、知不知道Designated Initializer?使用它的時候有什麼需要注意的問題?
17、實現description方法能取到什麼效果?
18、objc使用什麼機制管理物件記憶體?
中級部分
Block
1、block的實質是什麼?一共有幾種block?都是什麼情況下生成的?
2、為什麼在預設情況下無法修改被block捕獲的變數? __block都做了什麼?
3、模擬一下迴圈引用的一個情況?block實現介面反向傳值如何實現?
Runtime
4、objc在向一個物件傳送訊息時,發生了什麼?
5、什麼時候會報unrecognized selector錯誤?iOS有哪些機制來避免走到這一步?
6、能否向編譯後得到的類中增加例項變數?能否向執行時建立的類中新增例項變數?為什麼?
7、runtime如何實現weak變數的自動置nil?
8、給類新增一個屬性後,在類結構體裡哪些元素會發生變化?
RunLoop
9、runloop是來做什麼的?runloop和執行緒有什麼關係?主執行緒預設開啟了runloop麼?子執行緒呢?
10、runloop的mode是用來做什麼的?有幾種mode?
11、為什麼把NSTimer物件以NSDefaultRunLoopMode(kCFRunLoopDefaultMode)新增到主執行迴圈以後,滑動scrollview的時候NSTimer卻不動了?
12、蘋果是如何實現Autorelease Pool的?
類結構
13、isa指標?(物件的isa,類物件的isa,元類的isa都要說)
14、類方法和例項方法有什麼區別?
15、介紹一下分類,能用分類做什麼?內部是如何實現的?它為什麼會覆蓋掉原來的方法?
16、執行時能增加成員變數麼?能增加屬性麼?如果能,如何增加?如果不能,為什麼?
17、objc中向一個nil物件傳送訊息將會發生什麼?(返回值是物件,是標量,結構體)
高階部分
1、UITableview的優化方法(快取高度,非同步繪製,減少層級,hide,避免離屏渲染)
2、有沒有用過執行時,用它都能做什麼?(交換方法,建立類,給新建立的類增加方法,改變isa指標)
3、看過哪些第三方框架的原始碼?都是如何實現的?(如果沒有,問一下多圖下載的設計)
4、SDWebImage的快取策略?
5、AFN為什麼新增一條常駐執行緒?
6、KVO的使用?實現原理?(為什麼要建立子類來實現)
7、KVC的使用?實現原理?(KVC拿到key以後,是如何賦值的?知不知道集合操作符,能不能訪問私有屬性,能不能直接訪問_ivar)
學習
1、開發過程中遇到過什麼困難,是如何解決的?
2、遇到一個問題完全不能理解的時候,是如何幫助自己理解的?舉個例子?
3、有看書的習慣麼?最近看的一本是什麼書?有什麼心得?
4、有沒有使用一些筆記軟體?會在多平臺同步以及多渠道採集麼?(如果沒有,問一下是如何複習知識的)
5、有沒有使用清單類,日曆類的軟體?(如果沒有,問一下是如何安排,計劃任務的)
6、平常看部落格麼?有沒有自己寫過?(如果寫,有哪些收穫?如果沒有寫,問一下不寫的原因)