最近的ios面試

ios面試題整理



? ? 先把阿里口碑的電話面試說(shuō)下吧,問(wèn)了我最近做過(guò)的需求,我回答說(shuō)改版了登錄注冊(cè)模塊,于是問(wèn)我從登錄到后臺(tái)驗(yàn)證的整個(gè)過(guò)程以及如何加密?? 看我簡(jiǎn)歷寫了封裝圖片下載緩存,于是問(wèn)了我圖片緩存策略、歸檔以什么作為key、什么作為文件名? 到后面問(wèn)到我NSArray和NSDictionary的作用和區(qū)別? https://blog.csdn.net/Deft_MKJing/article/details/82732833?utm_source=app

? ? 其他的幾家作一個(gè)匯總吧

1.你對(duì)MVC的理解

2.GCD如何實(shí)現(xiàn)多個(gè)并發(fā)全部完成后再進(jìn)行通知?dispatch_group方法會(huì)創(chuàng)建新線程嗎?

3.LLVM和Clang是什么

4.熱部署是什么

5.byte和bit的區(qū)別

6.ios main函數(shù)執(zhí)行了些什么操作??http://blog.sunnyxx.com/2014/08/30/objc-pre-main/

7.類別為什么添加不了屬性? 附上不錯(cuò)的回答:https://www.zhihu.com/question/51513146

8.category重寫的方法為什么會(huì)先執(zhí)行?http://www.itdecent.cn/p/4cd699a66f9b

根據(jù)runtime的消息傳遞機(jī)制中的核心函數(shù)void objc_msgSend(id self,SEL cmd,...)來(lái)發(fā)送消息,先從當(dāng)前類中查找調(diào)用的方法,若沒有找到則繼續(xù)從其父類中一層層往上找,那么對(duì)于category重寫同一個(gè)方法,則在消息傳遞的過(guò)程中,會(huì)最先找到category中的方法并執(zhí)行該方法。對(duì)于多個(gè)分類調(diào)用同一個(gè)方法,Xcode在運(yùn)行時(shí)是根據(jù)buildPhases->Compile Sources里面的從上至下順序編譯的,編譯時(shí)通過(guò)壓棧的方式將多個(gè)分類壓棧,根據(jù)后進(jìn)先出的原則,后編譯的會(huì)被先調(diào)用,當(dāng)objc_msgSend找到方法并調(diào)用之后,就不再繼續(xù)傳遞消息,所以形成所謂上的覆蓋。并不是后面創(chuàng)建的就一定被調(diào)用,得看創(chuàng)建之后其在buildPhases->Compile Sources里面的位置。

9.tableView有哪些delegate和dataSource方法,哪個(gè)方法先執(zhí)行

10.輪播圖的幾種實(shí)現(xiàn)方式

11.appDelegate的幾種代理方法

12.https ssl 原理? ?https://cloud.tencent.com/developer/article/1601995

13.如果讓你自己封裝網(wǎng)絡(luò)請(qǐng)求庫(kù),你會(huì)用NSURLConnection還是NSURLSession,異步方法如何實(shí)現(xiàn)

14.Method Swizzing是如何實(shí)現(xiàn)的? (修改method中SEL和IMP的對(duì)應(yīng)關(guān)系(IMP函數(shù)指針指向))



待續(xù)~~~~~

2.5號(hào)? 晚上接到攜程的電話面試

1.用戶點(diǎn)擊屏幕的響應(yīng)過(guò)程? ?http://www.cocoachina.com/articles/14896

2.category 和 extension的區(qū)別??http://www.itdecent.cn/p/a5e517a3064b

3.通知是同步的還是異步的

4.https 客戶端和服務(wù)端交互過(guò)程? (域名解析,建立連接, 客戶端發(fā)送請(qǐng)求,服務(wù)端響應(yīng)請(qǐng)求)

5.DNS如何解析域名的

6.get請(qǐng)求和post請(qǐng)求的區(qū)別??https://www.cnblogs.com/logsharing/p/8448446.html

7.ARC造成內(nèi)存泄漏的幾種情況(NSTimer、delegate、block、非OC類的方法)

7.load方法在main函數(shù)之前還是之后執(zhí)行 (前)

待續(xù)~~~

---- 2019.6.13 準(zhǔn)備面試了 -------

消息轉(zhuǎn)發(fā)??http://www.itdecent.cn/p/f9bd98ad5b05

dispatch_group_enter、dispatch_group_leave配合使用,如果不使用的話 ,異步里異步并發(fā)會(huì)出現(xiàn)問(wèn)題?http://www.itdecent.cn/p/d840fb75e668

NSDictionary和NSArray的底層原理??https://blog.csdn.net/Deft_MKJing/article/details/82732833

isEqual和hash? ?https://blog.csdn.net/hx_lei/article/details/53885798

JavaScript異步機(jī)制??https://www.cnblogs.com/zhaodongyu/p/3922961.html

---7.29-----

1.KVC的底層原理??https://blog.csdn.net/qq_18505715/article/details/80205796

KVO的原理?http://www.itdecent.cn/p/a8195d182742

2.React框架如何讓iOS原生和JS交互

3.項(xiàng)目中react-native整體架構(gòu)

4.runtime的理解, 項(xiàng)目中運(yùn)用到runtime的地方

5.props和state的區(qū)別?

6.react-native如何渲染組件的(虛擬DOM....)

7.ES6(react)中import導(dǎo)入時(shí),有的帶花括號(hào){},有的不帶(export default導(dǎo)出不帶,默認(rèn)導(dǎo)出只能有一個(gè),其他的export需要{}? https://blog.csdn.net/Chris__wang/article/details/82977626

https://blog.csdn.net/Deft_MKJing/article/details/82732833?utm_source=app

-----8.19? 攜程 根據(jù)簡(jiǎn)歷面的-----

1.MVC https://www.cnblogs.com/QianChia/p/5771082.html、MVP?http://www.cocoachina.com/articles/21062

2.iOS實(shí)現(xiàn)多繼承的方式(protocol, category, 消息轉(zhuǎn)發(fā))

4.strong和copy的區(qū)別

5.如果在一個(gè)方法里聲明block,block里引用了self會(huì)造成循環(huán)引用嗎?(不會(huì),需要聲明成@property和當(dāng)前類互相強(qiáng)引用 http://www.itdecent.cn/p/fc2f4d207d25),調(diào)用系統(tǒng)的block方法并且引用self也不會(huì)造成循環(huán)引用,比如[UIView animateWithDuration...]

6.dispatch_group 如果有兩個(gè)dispatch_enter,三個(gè)dispatch_leave會(huì)出現(xiàn)什么情況(enter和leave不對(duì)等)? 答:crash? ?http://www.itdecent.cn/p/d7b6dfdb7181

7.delegate和notification的區(qū)別

8.tableView優(yōu)化 (如果一個(gè)cell有幾張圖片的話,runloop每次循環(huán)只加載一張圖片? http://www.itdecent.cn/p/30f7ced70083

-----8.29? 京東 -----

1.runloop、autorelease原理? ? ? http://www.itdecent.cn/p/d260d18dd551

2.RN的通信原理

3.組件化的理解

4.block的理解? ?http://www.itdecent.cn/p/221d0778dcaa


-----------自己準(zhǔn)備的一些題-----------------

1.load和initialize的區(qū)別 : (1) load在main函數(shù)之前,initialize在main函數(shù)之后 (2)load只要裝載進(jìn)內(nèi)存就會(huì)調(diào)用, initialize當(dāng)?shù)谝淮问褂眠@個(gè)類或者其子類就會(huì)調(diào)用(3)如果父類或者子類的category實(shí)現(xiàn)了initialize方法,那么父類或者子類不會(huì)調(diào)用自身的initialize,只會(huì)調(diào)用對(duì)應(yīng)category的initialize方法,父類和子類有多個(gè)category也只會(huì)實(shí)現(xiàn)compile sources最底部的 (4)load方法先實(shí)現(xiàn)父類的,然后子類的,最后才是父類和子類的category的,category的load調(diào)用順序按照compile sources從上而下


2.runtime json->model :? 遍歷json的key,class_getProperty(待轉(zhuǎn)的對(duì)象,key)獲取property, 比如有個(gè)@property(nonatomic, strong)NSString *name;? ?property_getAttributes(property)獲取property的特征字符串,可以拿到property的類型比如NSString, 通過(guò)key獲取json對(duì)應(yīng)的value, 判斷value的類型是不是和上面通過(guò)property_getAttributes拿到的類型相同,類型相同則賦值。

如果value的類型是string, property的類型是nsDate,可以轉(zhuǎn)換成nsDate再賦值,如果value的類型是NSDictionary(字典套字典)則將這個(gè)value遞歸調(diào)用該方法(這時(shí)候的待轉(zhuǎn)對(duì)象則應(yīng)該是第一個(gè)待轉(zhuǎn)對(duì)象其中的屬性 比如@property(nonatomiic, strong)Price *price;? ?這個(gè)Price對(duì)象)

如果value的類型是NSSArray,@property的類型也是NSArray(對(duì)象里有個(gè)數(shù)組,數(shù)組里再套對(duì)象),則先定義好property對(duì)應(yīng)的NSArray的model類型,再遍歷value的array進(jìn)行相應(yīng)賦值


3.堆排序: 時(shí)間復(fù)雜度 n*log2n? ?不停地建立大頂堆/小頂堆,建立完一次就替換首位位置然后去除尾部(尾部此時(shí)是最大或者最小)剩下的部分繼續(xù)建堆。?

為什么要逆序遍歷?答:首先堆排序針對(duì)的是一個(gè)絲毫不滿足最大堆特點(diǎn)的一個(gè)數(shù)組(0號(hào)位置不放元素),首先要從后向前調(diào)整每一個(gè)非葉子結(jié)點(diǎn)開始(也就是倒數(shù)第二層),這個(gè)是用來(lái)建立堆的(就是讓誤規(guī)律的變成有一定規(guī)律的),若你從前向后就會(huì)忽略另一條大分支樹,一條道走到黑了,不能正確建立堆;后面可以從前往后調(diào)整的原因是只有最頂上的那個(gè)被換了,其他分支都是滿足最大堆的

4.method_swizziling 可以hook viewWillAppear等生命周期方法埋點(diǎn),比如統(tǒng)計(jì)用戶行為分析(用戶先瀏覽了首頁(yè)然后詳情頁(yè)然后支付頁(yè)...)

---------8.30京東------------

1.虛擬DOM是什么

2.自動(dòng)釋放池和runloop的關(guān)系?自動(dòng)釋放池的數(shù)據(jù)結(jié)構(gòu)

3.ARC有棧block嗎??http://www.itdecent.cn/p/19e6de8437f5(block講得不錯(cuò))

4.兩個(gè)棧模擬出一個(gè)隊(duì)列

5.事件攔截和消息轉(zhuǎn)發(fā)??http://www.itdecent.cn/p/db3518be5ebb

--------2020/5/19毒-------

1.kvo是什么模式 觀察者

2.自己如何實(shí)現(xiàn)通知(觀察者模式)不移除通知會(huì)有什么影響??http://www.itdecent.cn/p/4a44b9a15fe9

3.runloop如何喚醒? ? (source 和 timer)

4.atomic屬性怎么實(shí)現(xiàn)(鎖的機(jī)制)

5.swift如何實(shí)現(xiàn)代理協(xié)議枚舉,值類型引用類型, optional內(nèi)部實(shí)現(xiàn)

6.kvo生成的新子類實(shí)現(xiàn)了哪些方法,有沒有g(shù)et方法??http://www.itdecent.cn/p/5477cf91bb32

-----2020/5/20 閱文集團(tuán)--------

1.為什么ios不用try catch (無(wú)法釋放)

2.LRU算法(哈希鏈表)

dispatch_barrier_async 和 dispatch_barrier_sync的區(qū)別?http://www.itdecent.cn/p/9ed95082f256

swift copy-on-write(寫時(shí)技術(shù))?https://blog.csdn.net/weixin_34417814/article/details/91366280

ios signal崩潰如何分析 (SIGABRT–程序中止命令中止信號(hào),SIGALRM–程序超時(shí)信號(hào),SIGFPE–程序浮點(diǎn)異常信號(hào)等。。??梢垣@取類型然后傳到service, EXC_BAD_ACCESS一般是內(nèi)存訪問(wèn)出錯(cuò),對(duì)象內(nèi)存已經(jīng)釋放,但仍然在訪問(wèn)會(huì)造成這樣的后果, 可以通過(guò)打開僵尸模式查找)

Person繼承NSObject, NSObject有個(gè)分類里的A方法,Person能去調(diào)用嗎 (可以)

UIViewCtroller有tableview, cell有點(diǎn)擊方法,如果UIViewController的UIView設(shè)置tapGesture,這時(shí)候會(huì)響應(yīng)cell還是uiview(響應(yīng)uiview, 手勢(shì)與響應(yīng)者鏈有一些差別,觸摸事件首先會(huì)傳遞到手勢(shì)上,如果手勢(shì)識(shí)別成功,就會(huì)取消事件的繼續(xù)傳遞。如果手勢(shì)識(shí)別失敗,事件才會(huì)被響應(yīng)鏈處理。http://www.itdecent.cn/p/ea6bb96c0470)

-----2020/5/25 掌門1對(duì)1------

ARC 引用計(jì)數(shù)? 當(dāng)計(jì)數(shù)為0的時(shí)候?qū)ο髸?huì)自動(dòng)調(diào)用dealloc?http://www.itdecent.cn/p/e7b1651df746

copy修飾的NSMutableArray可以添加對(duì)象嗎(不可以,會(huì)崩潰,copy修飾的后變成不可變數(shù)組,不能調(diào)用add方法 http://www.itdecent.cn/p/869ca6fbdd5c

self class 和 super class的打印結(jié)果(相同? http://www.cocoachina.com/articles/10740

常見的內(nèi)存泄漏(循環(huán)引用,nstimer,CoreFoundation對(duì)象(C對(duì)象)?)

weak對(duì)象什么時(shí)候釋放?https://www.cnblogs.com/guohai-stronger/p/10161870.html

有哪些鎖?http://www.itdecent.cn/p/6d6832e42936

網(wǎng)絡(luò)協(xié)議?

http有狀態(tài)無(wú)狀態(tài)(無(wú)狀態(tài),通過(guò)cookie session https://www.cnblogs.com/bq-med/p/8603664.html)

----2020/5/26 百度一面------

1. iOS的各種鎖以及性能 (互斥和自旋,互斥中遞歸和非遞歸的性能比較)

2.iOS性能優(yōu)化 優(yōu)化啟動(dòng)時(shí)間?https://zhuanlan.zhihu.com/p/28600469

3. 二叉樹的深度和最大寬度

4.md5 不可逆 加密后長(zhǎng)度固定128位

5.為什么符號(hào)化可以看到具體崩潰的方法? ? ? ? ? ? ?崩潰日志對(duì)應(yīng)的 dSYM 文件(dSYM 是保存十六進(jìn)制函數(shù)地址映射信息的中轉(zhuǎn)文件,符號(hào)化過(guò)程中的十六進(jìn)制函數(shù)地址對(duì)應(yīng)的方法名函數(shù)名就保存在這個(gè)文件中)。http://www.itdecent.cn/p/c60d9578b656

------ --------

1.websocket 相關(guān)

TCP與UDP區(qū)別 (面向連接和無(wú)連接 ,都是傳輸層協(xié)議....)

http的報(bào)文結(jié)構(gòu) (請(qǐng)求行請(qǐng)求頭請(qǐng)求體 響應(yīng)行響應(yīng)頭響應(yīng)體)?https://www.cnblogs.com/myseries/p/11239662.html

離屏渲染?http://www.itdecent.cn/p/cff0d1b3c915

cocoapods use_frameworks??http://www.itdecent.cn/p/f938b1e17974

---- blibli------

1.NSProxy實(shí)現(xiàn)hook(切面編程)?http://www.itdecent.cn/p/a7187e014c03

2.自己封裝的圖片緩存優(yōu)化點(diǎn)(結(jié)合LRU算法)

-----Swift 相關(guān) -------

1.struct 和 class區(qū)別

2.逃逸閉包和非逃逸閉包

3.高階函數(shù)(map, flatmap, reduce.... flatmap和map的區(qū)別)

4.optional?

5.結(jié)構(gòu)體里如何修改屬性



iOS深拷貝(MutableCopy)與淺拷貝(Copy)的區(qū)別?http://www.itdecent.cn/p/5df570135ad2

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

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

  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 2,082評(píng)論 0 9
  • 摘自: http://www.cocoachina.com/ios/20150803/12872.html 說(shuō)明...
    program袁閱讀 932評(píng)論 1 3
  • 女人,也許你的生活并不富裕;也許你沒有一份體面的工作;也許你正在困境中;也許你被情所棄;也許你現(xiàn)在下崗了。不論什么...
    Angel_曉曉閱讀 619評(píng)論 0 0
  • 我死了……就在剛剛,幾分鐘前,一輛車呼嘯而過(guò),我便成了一灘碎泥……我不覺著痛,只是有些覺著有些突然,我有些傷心,我...
    柒柒四九閱讀 511評(píng)論 6 9

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