大廠面試(一)

部分題目來自:不懂技術(shù)的愛迪生

抖音2018(群友提供)

1、MJ刷新是怎么實(shí)現(xiàn)的,根外部沖突怎么解決,框架解決了什么?好在哪里
2、UIView關(guān)聯(lián)xib流程,為什么能關(guān)聯(lián)上
3、鎖有幾種,每種的優(yōu)缺點(diǎn)都是是什么
4、runtime動態(tài)添加方法有什么問題(你會正確的用法,還要說出錯誤的用法)
5、線上崩潰怎么解決的


網(wǎng)易一面

轉(zhuǎn)載:iOS:網(wǎng)易一面
1、你一般學(xué)習(xí)iOS是如何學(xué)習(xí)的?
2、app內(nèi)存你是如何分析的?
3、用過 TableView 嗎,平時(shí)怎么解決 TableView 滑動卡頓問題的?
4、網(wǎng)絡(luò)模型了解么?有哪幾種?說說你的看法?
5、block本質(zhì)是什么?
6、KVC機(jī)制是如何通過key找到value。
7、說說你最熟悉的第三方,知曉其原理么?


騰訊一面

轉(zhuǎn)載: 騰訊一面
1、使用了第三方庫, 有看他們是怎么實(shí)現(xiàn)的嗎?
2、強(qiáng)連通量算法了解嘛?
3、遇到tableView卡頓嘛?會造成卡頓的原因大致有哪些?
4、M、V、C相互通訊規(guī)則你知道的有哪些?
5、NStimer準(zhǔn)嗎?談?wù)勀愕目捶??如果不?zhǔn)該怎樣實(shí)現(xiàn)一個(gè)精確的NSTimer?


阿里P6一面

轉(zhuǎn)載:阿里-p6-一面
1、介紹下內(nèi)存的幾大區(qū)域?
2、你是如何組件化解耦的?
3、runtime如何通過selector找到對應(yīng)的IMP地址
4、runloop內(nèi)部實(shí)現(xiàn)邏輯?
5、你理解的多線程?
6、GCD執(zhí)行原理?
7、怎么防止別人反編譯你的app?
8、YYAsyncLayer如何異步繪制?
9、優(yōu)化你是從哪幾方面著手?


阿里二面

1、MVC具有什么樣的優(yōu)勢,各個(gè)模塊之間怎么通信,比如點(diǎn)擊Button 后 怎么通知 Model?
2、兩個(gè)無限長度鏈表(也就是可能有環(huán)) 判斷有沒有交點(diǎn)
3、UITableView的相關(guān)優(yōu)化
4、KVO、Notification、delegate各自的優(yōu)缺點(diǎn),效率還有使用場景
5、如何手動通知KVO
6、Objective-C 中的copy方法
7、runtime 中,SEL和IMP的區(qū)別
8、autoreleasepool的使用場景和原理
9、RunLoop的實(shí)現(xiàn)原理和數(shù)據(jù)結(jié)構(gòu),什么時(shí)候會用到
10、block為什么會有循環(huán)引用
11、使用GCD如何實(shí)現(xiàn)這個(gè)需求:A、B、C 三個(gè)任務(wù)并發(fā),完成后執(zhí)行任務(wù) D。
12、NSOperation和GCD的區(qū)別
13、CoreData的使用,如何處理多線程問題
14、如何設(shè)計(jì)圖片緩存?
15、有沒有自己設(shè)計(jì)過網(wǎng)絡(luò)控件?


騰訊二面

轉(zhuǎn)載:騰訊二面
1、編譯過程做了哪些事情;
2、字典大致實(shí)現(xiàn)原理;
3、block和函數(shù)指針的理解;
4、一般開始做一個(gè)項(xiàng)目,你的架構(gòu)是如何思考的?
5、你了解的UIKit結(jié)構(gòu)?


騰訊三面

轉(zhuǎn)載:騰訊三面
1.OC你了解的鎖有哪些?在你回答基礎(chǔ)上進(jìn)行二次提問;
追問一:自旋和互斥對比?
追問二:使用以上鎖需要注意哪些?
追問三:用C/OC/C++,任選其一,實(shí)現(xiàn)自旋或互斥?口述即可!

2.內(nèi)存泄漏可能會出現(xiàn)的幾種原因,聊聊你的看法?
追問一:非OC對象如何處理?
追問二:地圖類內(nèi)存若泄漏,如何處理?
追問三:若常用框架出現(xiàn)內(nèi)存泄漏如何處理?

3.容錯處理你們一般是怎么做的?
4.項(xiàng)目開始容錯處理沒做?如何防止攔截潛在的崩潰?


2018-iOS面試題

轉(zhuǎn)載:2018-iOS面試題
1.KVO實(shí)現(xiàn)原理?
2.說說你理解的埋點(diǎn)?
3.消息轉(zhuǎn)發(fā)機(jī)制原理?
4.說說你理解weak屬性?
5.假如Controller太臃腫,如何優(yōu)化?
6.項(xiàng)目中網(wǎng)絡(luò)層如何做安全處理?
7.main()之前的過程有哪些?


阿里初面

轉(zhuǎn)載: 阿里初面:一份“有點(diǎn)難”的面試題!
1.SD原理以及最大支持多少個(gè)下載數(shù)?
2.yykit如何異步渲染?
3.runtime動態(tài)創(chuàng)建一個(gè)類,需要注意什么?
4.你理解的runloop和線程之間的關(guān)系?
5.技術(shù)架構(gòu)如何搭建?
6.還有一個(gè)很長字符串,你用什么算法搜索到abc的位置?
7.字符串如何預(yù)處理?
8.https和ssl在握手方向有什么區(qū)別?
9.怎么防止反編譯
10.代碼文件編譯生成過程,編譯和鏈接有什么區(qū)別,鏈接做了什么事情
11.用C語言實(shí)現(xiàn)一個(gè)通知流程,說思路即可!
12.A B 線程執(zhí)行到一半去執(zhí)行C線程,用OC和C各自怎么實(shí)現(xiàn)!
13.tableview怎么優(yōu)化,優(yōu)化后還是感覺卡怎么辦!
14.ARC的實(shí)現(xiàn)原理,什么情況下用MRC比ARC好!
15.怎么定位到野指針的地方。如果還沒定位到,這個(gè)對象被提前釋放了,怎么知道該對象在什么地方釋放的
16.你平時(shí)做過什么有技術(shù)難點(diǎn)的東西,然后解決難點(diǎn)!


某東面試

轉(zhuǎn)載:面試題-紫潔
1、如何實(shí)現(xiàn)一個(gè)圖片加載控件(包括圖片下載、緩存時(shí)效、加載)
2、JavaScriptCore是做什么用的,客戶端使用它可實(shí)現(xiàn)什么功能。
3、程序中添加每3秒響應(yīng)一次的NSTimer,當(dāng)拖動tableView的time可能無法響應(yīng),為什么。
4、客戶端在解析服務(wù)器所下發(fā)的數(shù)據(jù)時(shí),例如下面代碼的片段。

NSString *sku = dict[@"sku"];
NSMutableArray *array = [NSMutableArray array];
[array addObject:sku];

// 可能@“aku”字段并不存在,sku對象將為nil,執(zhí)行[array addObject:sku],時(shí)將會拋出異常導(dǎo)致Crash.項(xiàng)目中可能在很多模塊存在類似這樣的問題,請從全局考慮,如何進(jìn)行異常保護(hù)

5、請問,NSLog(@"%@",test);的輸入結(jié)果是什么?這條語句是在哪個(gè)線程中執(zhí)行?為什么?

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筆試題

轉(zhuǎn)載自:2018第一波iOS筆試題(僅供參考學(xué)習(xí)使用)

1.什么是函數(shù)式編程?
2.什么是ABI?
3.什么是MVC,請結(jié)合CocoaTouch說明?
4.什么是MVVM,請?jiān)O(shè)計(jì)View moled需要考慮哪些?
5.swift相對于OC有哪些優(yōu)點(diǎn)?
6.什么是泛型,swift在哪些地方使用了泛型?
7.defer、guard的作用?
8.swift語法糖?!的本質(zhì)(實(shí)現(xiàn)原理)
9.舉例swift中模式匹配的作用?
10.swift中private與OC中block的區(qū)別?
11.什么是capture list,舉例說明用處?
12.swift中private與fileprivate的區(qū)別?
13.REST、HTTP、JSON是什么?
14.delegate解決了什么問題,Notification與它有什么不同?
15.描述一個(gè)ViewController的生命周期
16.LLVM與Clang的區(qū)別?
17.Class、objc的區(qū)別是什么?


一個(gè)小公司的面試

1、解釋一下keywords的區(qū)別:assign weak __block, __weak
2、__block在arc和非arc下含義相同么
3、使用atomic一定是線程安全嗎
4、描述一個(gè)你遇到過的retain cycle
5、+(void)load; +(void)initalize有什么用處.
6、為什么其他語言里叫函數(shù)調(diào)用,oc里則是給對象發(fā)消息(或者談一下對runtime理解)
7、什么是method swizzling
8、UIView 和 CALayer的關(guān)系
9、如何高性能的給UIImageView加圓角
10、講講你用Instrument優(yōu)化動畫性能的經(jīng)歷
11、loadView是干什么用的。


2017年iOS高階面試題

轉(zhuǎn)載自:2017年iOS高階面試題
1、NSCache類當(dāng)中是如何解決時(shí)間復(fù)雜度問題的.請說明其原理.
2、應(yīng)用啟動時(shí)是用怎樣加載所有依賴的Mach-O文件的?
3、什么是冷啟動,什么是熱啟動?
4、有沒有做過項(xiàng)目的優(yōu)化,請列舉你所知道m(xù)ain()函數(shù)之前耗時(shí)的因素都有哪些,點(diǎn)擊應(yīng)用響應(yīng)時(shí)間多少ms之內(nèi)不會讓用戶察覺到
5、屬性 可以與set方法和get方法 三者同時(shí)存在嗎,如果不行,請說明原因?
6、Runtime機(jī)制是什么?有沒有寫過方法欺騙?簡述一下
7、GCD和NSoperation的區(qū)別之處,請分別說一下特點(diǎn)?
8、Reachability是用來判斷網(wǎng)絡(luò)狀態(tài)的,請簡述一下其原理?
9、layoutSubviews這個(gè)方法一般在什么情況下調(diào)用的?
10、在一個(gè)表內(nèi)有很多cell,每個(gè)cell上有很多個(gè)視圖,如何解決卡頓問題(提示Runloop)。
11、Objective-C語言中閉包是如何實(shí)現(xiàn)的,閉包中有什么需要注意,閉包運(yùn)行環(huán)境是在堆還是在棧。


全英文版

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 of viewWillApperr/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、你工作中修復(fù)bug或添加新功能常用的Git命令
2、可變數(shù)組的property是否可用copy修飾,為什么不能?
3、在ARC和MRC下分別調(diào)用test方法會發(fā)生什么
4、如何使用:@synchronize/ NSRecursiveLock/dispatch_semaphore_t
5、列舉Cocoa中至少兩種觀察者設(shè)計(jì)模式的實(shí)現(xiàn)
6、swift中struct和class的區(qū)別
7、說說NSRunLoop / CADisplayLink兩者的區(qū)別
8、當(dāng)從棧頂push到B控制器后寫出viewWillApperr/viewDidAppear/viewWillDisppear/viewDidDisappear的調(diào)用順序
9、列出五種崩潰情況
10、JSPatch是如何工作的?
11、HTTPS是如何工作的?
12、二分查找的實(shí)現(xiàn)過程
13、說一下react native 和 cordova 的不同


iOS招人心得

截取某公司面試官博客:J_Knight_

基礎(chǔ)部分

1、為什么說Objective-C是一門動態(tài)的語言?
2、講一下MVC和MVVM,MVP?
3、如何令自己所寫的對象具有拷貝功能?
4、為什么代理要用weak?代理的delegate和dataSource有什么區(qū)別?block和代理的區(qū)別?
5、可變集合類 和 不可變集合類的 copy 和 mutablecopy有什么區(qū)別?如果是集合是內(nèi)容復(fù)制的話,集合里面的元素也是內(nèi)容復(fù)制么?
6、nonatomic和atomic的區(qū)別?atomic是絕對的線程安全么?為什么?如果不是,那應(yīng)該如何實(shí)現(xiàn)?
7、UICollectionView自定義layout如何實(shí)現(xiàn)?
8、用StoryBoard開發(fā)界面有什么弊端?如何避免?
9、進(jìn)程和線程的區(qū)別?同步異步的區(qū)別?并行和并發(fā)的區(qū)別?
10、線程間通信?
11、GCD的一些常用的函數(shù)?(group,barrier,信號量,線程同步)
12、如何使用隊(duì)列來避免資源搶奪?
13、數(shù)據(jù)持久化的幾個(gè)方案(fmdb用沒用過)
14、說一下AppDelegate的幾個(gè)方法?從后臺到前臺調(diào)用了哪些方法?第一次啟動調(diào)用了哪些方法?從前臺到后臺調(diào)用了哪些方法?
15、NSCache優(yōu)于NSDictionary的幾點(diǎn)?
16、知不知道Designated Initializer?使用它的時(shí)候有什么需要注意的問題?
17、實(shí)現(xiàn)description方法能取到什么效果?
18、objc使用什么機(jī)制管理對象內(nèi)存?

中級部分
Block
1、block的實(shí)質(zhì)是什么?一共有幾種block?都是什么情況下生成的?
2、為什么在默認(rèn)情況下無法修改被block捕獲的變量? __block都做了什么?
3、模擬一下循環(huán)引用的一個(gè)情況?block實(shí)現(xiàn)界面反向傳值如何實(shí)現(xiàn)?

Runtime
4、objc在向一個(gè)對象發(fā)送消息時(shí),發(fā)生了什么?
5、什么時(shí)候會報(bào)unrecognized selector錯誤?iOS有哪些機(jī)制來避免走到這一步?
6、能否向編譯后得到的類中增加實(shí)例變量?能否向運(yùn)行時(shí)創(chuàng)建的類中添加實(shí)例變量?為什么?
7、runtime如何實(shí)現(xiàn)weak變量的自動置nil?
8、給類添加一個(gè)屬性后,在類結(jié)構(gòu)體里哪些元素會發(fā)生變化?

RunLoop
9、runloop是來做什么的?runloop和線程有什么關(guān)系?主線程默認(rèn)開啟了runloop么?子線程呢?
10、runloop的mode是用來做什么的?有幾種mode?
11、為什么把NSTimer對象以NSDefaultRunLoopMode(kCFRunLoopDefaultMode)添加到主運(yùn)行循環(huán)以后,滑動scrollview的時(shí)候NSTimer卻不動了?
12、蘋果是如何實(shí)現(xiàn)Autorelease Pool的?

類結(jié)構(gòu)
13、isa指針?(對象的isa,類對象的isa,元類的isa都要說)
14、類方法和實(shí)例方法有什么區(qū)別?
15、介紹一下分類,能用分類做什么?內(nèi)部是如何實(shí)現(xiàn)的?它為什么會覆蓋掉原來的方法?
16、運(yùn)行時(shí)能增加成員變量么?能增加屬性么?如果能,如何增加?如果不能,為什么?
17、objc中向一個(gè)nil對象發(fā)送消息將會發(fā)生什么?(返回值是對象,是標(biāo)量,結(jié)構(gòu)體)

高級部分

1、UITableview的優(yōu)化方法(緩存高度,異步繪制,減少層級,hide,避免離屏渲染)
2、有沒有用過運(yùn)行時(shí),用它都能做什么?(交換方法,創(chuàng)建類,給新創(chuàng)建的類增加方法,改變isa指針)
3、看過哪些第三方框架的源碼?都是如何實(shí)現(xiàn)的?(如果沒有,問一下多圖下載的設(shè)計(jì))
4、SDWebImage的緩存策略?
5、AFN為什么添加一條常駐線程?
6、KVO的使用?實(shí)現(xiàn)原理?(為什么要創(chuàng)建子類來實(shí)現(xiàn))
7、KVC的使用?實(shí)現(xiàn)原理?(KVC拿到key以后,是如何賦值的?知不知道集合操作符,能不能訪問私有屬性,能不能直接訪問_ivar)

學(xué)習(xí)
1、開發(fā)過程中遇到過什么困難,是如何解決的?
2、遇到一個(gè)問題完全不能理解的時(shí)候,是如何幫助自己理解的?舉個(gè)例子?
3、有看書的習(xí)慣么?最近看的一本是什么書?有什么心得?
4、有沒有使用一些筆記軟件?會在多平臺同步以及多渠道采集么?(如果沒有,問一下是如何復(fù)習(xí)知識的)
5、有沒有使用清單類,日歷類的軟件?(如果沒有,問一下是如何安排,計(jì)劃任務(wù)的)
6、平常看博客么?有沒有自己寫過?(如果寫,有哪些收獲?如果沒有寫,問一下不寫的原因)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時(shí)...
    歐辰_OSR閱讀 30,237評論 8 265
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,654評論 1 32
  • OC語言基礎(chǔ) 1.類與對象 類方法 OC的類方法只有2種:靜態(tài)方法和實(shí)例方法兩種 在OC中,只要方法聲明在@int...
    奇異果好補(bǔ)閱讀 4,520評論 0 11
  • 青菜決定和高中時(shí)期的好友紅藥徹底絕交了。 沒有什么愛恨情仇,國仇家恨,僅僅是因紅藥來到青菜的城市旅游。 ...
    王小拉愛吃肉閱讀 397評論 0 0
  • 生活里偶爾的總是會有一些無奈,就好像出門遇見了飛馳而過的車子,濺了自己一身水;沒注意就踩到了一個(gè)水坑兒,濕透了鞋子...
    云朵兒z閱讀 319評論 0 9

友情鏈接更多精彩內(nèi)容