面試-A公司
1.面試題
- 如果要你設(shè)計(jì)一個(gè)復(fù)雜頁(yè)面你會(huì)怎么處理握巢?
- 談?wù)勀銓?duì)模塊化和組件化的看法。他們有哪些優(yōu)勢(shì)和缺點(diǎn)松却。如何做到解耦暴浦。
- 你認(rèn)為NSDictionary是怎么實(shí)現(xiàn)的?
- 為什么會(huì)產(chǎn)生卡頓,什么是離屏渲染晓锻?為什么會(huì)產(chǎn)生離屏渲染歌焦?
- NStimer和cgd的定時(shí)器有什么區(qū)別,為什么說(shuō)NSTimer的定時(shí)器是不準(zhǔn)確的砚哆。還有什么方式來(lái)實(shí)現(xiàn)定時(shí)器
- iOS開發(fā)中都有哪些鎖独撇,有什么區(qū)別。@synchronized
這個(gè)鎖里有一個(gè)參數(shù)self躁锁。有什么用纷铣,如果它被釋放了有什么后果,可不可以是其他對(duì)象战转,為什么搜立? - 啟動(dòng)優(yōu)化有哪些?
- 如何讓你實(shí)現(xiàn)一個(gè)addobserver你會(huì)怎么設(shè)計(jì)槐秧。有哪些需要注意的點(diǎn)(生成的新類是強(qiáng)引用還是弱引用)開源庫(kù)kvoviewcontroller以及rac的addobserve是如何做到不產(chǎn)生循環(huán)引用的
- 如果任務(wù)a依賴于任務(wù)b和c的執(zhí)行啄踊,你怎么處理
- 你對(duì)flutter和RN有什么看法
- 性能優(yōu)化你做了哪些工作
- socket和tcp udp有什么區(qū)別,socket原理是什么刁标,socket在app之間傳輸用的什么社痛。引申到http如何使用長(zhǎng)連接 keep-alive的使用。
- gcd的底層實(shí)現(xiàn)命雀。我們能開辟的最大線程數(shù)是多少蒜哀?默認(rèn)值是多少?
- gcd中的notify和barrier有什么區(qū)別
2.算法題
- 如何判斷兩個(gè)樹是否相等
- 我們?cè)诮y(tǒng)計(jì)過(guò)程中需要知道一個(gè)VC上有多少個(gè)子view 你怎么處理吏砂?用算法實(shí)現(xiàn)撵儿。
3.小細(xì)節(jié)
- setobject:forkey key除了用字符串能用對(duì)象嗎?
面試題-B公司
面試題:
- 談?wù)勀銓?duì)事件響應(yīng)機(jī)制的看法
- 內(nèi)存相關(guān)
- 談?wù)勀銓?duì)內(nèi)存管理的看法
- arc下能否自己控制對(duì)象的生命周期
- coreFoundation中我們用__bridge來(lái)處理與oc之間的轉(zhuǎn)換為什么呢狐血?結(jié)構(gòu)體中為什么不能使用oc對(duì)象淀歇,為什么?
- 多線程問(wèn)題
- 開發(fā)過(guò)程中你遇到過(guò)哪些線程的問(wèn)題匈织,你是怎么解決的浪默?
- 鎖相關(guān)
- iOS開發(fā)中有哪些鎖牡直?他們有哪些應(yīng)用場(chǎng)景?他們有什么區(qū)別纳决?
- 循環(huán)引用問(wèn)題
- 循環(huán)引用是如何產(chǎn)生的碰逸?你是怎么解決的?你是怎么檢測(cè)循環(huán)引用的阔加?如果用第三方工具 請(qǐng)簡(jiǎn)述其原理
- 性能優(yōu)化相關(guān)
- 為什么會(huì)產(chǎn)生離屏渲染饵史?為什么圓角會(huì)產(chǎn)生離屏渲染 怎么檢測(cè) 所有的UI都會(huì)產(chǎn)生離屏渲染嗎?為什么胜榔?
- 如何設(shè)計(jì)出一個(gè)復(fù)雜的頁(yè)面胳喷?
- 使用autolayout是否會(huì)造成卡頓,為什么夭织?怎么解決吭露?
- 你是怎么做性能優(yōu)化的?
- 項(xiàng)目中單例多嗎尊惰?單例過(guò)多的話你怎么處理讲竿?
- 包瘦身是怎么做的?比如刪除無(wú)用圖片 壓縮圖片以及刪除無(wú)用文件
- 怎么刪除無(wú)用文件的择浊?怎么判斷方法是否使用以及類是否使用
- mach-o是干嘛用的?
- bitcode是做什么的逾条?
- 假設(shè)你使用的是友盟琢岩,友盟是怎么根據(jù)我們的崩潰信息定位到崩潰代碼位置的?
- 模塊化 組件化問(wèn)題
- 項(xiàng)目為什么使用模塊化 組件化 他們有什么不同师脂,有什么優(yōu)缺點(diǎn)
- apns相關(guān)
- 你了解過(guò)第三方推送嗎?第三方例如極光是怎么實(shí)現(xiàn)消息推送的担孔?應(yīng)用殺死的時(shí)候和應(yīng)用處于后臺(tái)以及前臺(tái)的時(shí)候,傳輸方式有什么不同吃警?apns和socket有什么不同糕篇?
- runloop和runtime相關(guān)
- runloop的啟動(dòng)以及退出方式有哪些?
- 談?wù)勀銓?duì)runtime和runloop的理解酌心。
- 定時(shí)器相關(guān)
- NSTimer為什么是不準(zhǔn)確的拌消?你還知道哪些定時(shí)器?他們的各自使用場(chǎng)景有哪些安券?
- jpg和png有什么區(qū)別墩崩?
- 網(wǎng)絡(luò)相關(guān)
- http和https有什么不同 他們是怎么建立起鏈接的?
- tcp 和udp有什么不同
- 抓包的原理是什么侯勉?如何避免自己的app不被別人抓包
- 談?wù)勀銓?duì)socket有什么看法
- 底層原理相關(guān)
- 你有沒(méi)有看過(guò)gcd的源碼鹦筹,談?wù)勀銓?duì)gcdglobal的看法
- 如果讓你實(shí)現(xiàn)一個(gè)kvo你怎么實(shí)現(xiàn)?有哪些需要注意的點(diǎn)址貌。第三方開源的KVOController和kvo比有什么優(yōu)缺點(diǎn)铐拐。rac中的addobserver原理是什么徘键?
- 三方庫(kù)源碼相關(guān):
- 如果要你設(shè)計(jì)一個(gè)網(wǎng)絡(luò)框架你怎么設(shè)計(jì)?
- 如果要你設(shè)計(jì)一個(gè)圖片緩存框架你怎么設(shè)計(jì)遍蟋?
- flutter問(wèn)題
- 為什么flutter可以hotrelaod 而oc不可以吹害?如果oc要實(shí)現(xiàn)hot reload你認(rèn)為有什么技術(shù)難度?
- java問(wèn)題
- 在oc中如何實(shí)現(xiàn)java接口的功能
面試題-C公司
面試題:
- 屬性關(guān)鍵字相關(guān)
- 你都使用過(guò)哪些屬性關(guān)鍵字匿值?
- atomic實(shí)現(xiàn)原理是什么赠制?他是怎么保證安全的?
- 如果用readonly修飾系統(tǒng)會(huì)自動(dòng)為當(dāng)前屬性生成setter和getter方法嗎挟憔?
- 用strong修飾符修飾的有哪些钟些?如果改為copy會(huì)有什么隱患?
- @dynamic @synthesize 有什么區(qū)別绊谭?他們的應(yīng)用場(chǎng)景在哪里政恍?(系統(tǒng)會(huì)自動(dòng)為我們生成setter和getter方法嗎?)
- 內(nèi)存管理相關(guān)
- 談?wù)刴rc和arc下的copy
- mrc和arc混編的時(shí)候 如果mrc要調(diào)用arc中的block 要怎么處理达传?
對(duì)象什么時(shí)候會(huì)被釋放篙耗?如果對(duì)象在應(yīng)該釋放的時(shí)候沒(méi)有釋放,有哪些可能宪赶? - 談?wù)刬OS是怎么實(shí)現(xiàn)引用計(jì)數(shù)機(jī)制的宗弯?
- dealloc方法的執(zhí)行步驟有哪些?
- category 和extention 有什么區(qū)別搂妻?
- 對(duì)代理添加屬性的時(shí)候蒙保,系統(tǒng)會(huì)為我們自動(dòng)生成setter和getter方法嗎?
- +load和+initialize有什么不同 他們都應(yīng)用在哪個(gè)場(chǎng)景欲主?假如分類和當(dāng)前類都有l(wèi)oad方法那么方法的執(zhí)行順序是怎么樣的邓厕?如果當(dāng)前類和分類中都有initialize方法執(zhí)行順序又是什么樣呢?如果有多個(gè)分類呢扁瓢?
- 假如當(dāng)前類和分類中有相同方法名的方法详恼,他們的執(zhí)行順序是什么樣的呢?為什么引几?如果想要執(zhí)行方法的時(shí)候優(yōu)先執(zhí)行當(dāng)前類的方法你怎么處理昧互?
- 通過(guò)關(guān)聯(lián)對(duì)象生成的屬性,它是當(dāng)前類維護(hù)還是應(yīng)用統(tǒng)一來(lái)維護(hù)伟桅?關(guān)聯(lián)對(duì)象什么時(shí)候被釋放硅堆?
- 集合相關(guān)深拷貝和淺拷貝以及集合對(duì)象的實(shí)現(xiàn)原理。假如10000條數(shù)據(jù)需要存儲(chǔ)并且需要查詢贿讹,你會(huì)選用數(shù)組還是字典還是集合渐逃。為什么?集合和字典的實(shí)現(xiàn)方式有什么區(qū)別民褂?
- 生命周期相關(guān) UIViewController的生命周期都會(huì)執(zhí)行哪些方法茄菊?從A視圖push到B視圖的時(shí)候 A會(huì)執(zhí)行哪些方法 B會(huì)執(zhí)行哪些方法疯潭?
- VC上有一個(gè)按鈕點(diǎn)擊按鈕原本是要跳轉(zhuǎn)到下一個(gè)頁(yè)面的,但是現(xiàn)在事件不響應(yīng)了面殖,有哪些原因造成的竖哩。
- UIView和CALayer有什么區(qū)別?他們之間分工不同脊僚,符合哪一個(gè)設(shè)計(jì)原則相叁?
- 循環(huán)引用相關(guān)
- 談?wù)勀銓?duì)循環(huán)引用的理解?哪些場(chǎng)景會(huì)產(chǎn)生循環(huán)引用
- 數(shù)據(jù)存儲(chǔ)相關(guān)
- 你都用過(guò)哪些數(shù)據(jù)存儲(chǔ)方式辽幌?他們各自的應(yīng)用場(chǎng)景有哪些增淹?他們有什么不同?NSUserDefaults 歸檔接檔 plist 數(shù)據(jù)庫(kù)
- 數(shù)據(jù)庫(kù)相關(guān)
- 一些簡(jiǎn)單的數(shù)據(jù)庫(kù)查詢語(yǔ)句 條件查詢等 以及表創(chuàng)建應(yīng)該怎么寫
- 如果數(shù)據(jù)庫(kù)需要更新100w條數(shù)據(jù)你有什么方法進(jìn)行更新
- FMDB 是怎么實(shí)現(xiàn)事務(wù)的乌企?談?wù)勀銓?duì)事務(wù)的理解虑润。
- 網(wǎng)絡(luò)相關(guān)
- http請(qǐng)求的cache你是怎么用的?實(shí)例:假如我有一個(gè)請(qǐng)求加酵,如果服務(wù)端數(shù)據(jù)不變的時(shí)候我不再進(jìn)行UI處理了拳喻,這個(gè)怎么解決?
- 關(guān)于https的握手和揮手談?wù)勀愕睦斫狻?/li>
面試題-D公司
面試題:
- 你是怎么做性能優(yōu)化的(這個(gè)有點(diǎn)寬泛猪腕,可以從內(nèi)存上冗澈,啟動(dòng)速度上,檢測(cè)內(nèi)存泄漏以及卡頓上來(lái)說(shuō))你用什么工具來(lái)檢測(cè)的陋葡,檢測(cè)的原理是什么亚亲?有沒(méi)有做一些自動(dòng)化的檢測(cè)處理。
- 你是怎么處理包瘦身的脖岛?
- 如何處理才能讓app省電朵栖。你是怎么檢測(cè)到耗電的颊亮?有以下場(chǎng)景:有個(gè)地方要頻繁的去請(qǐng)求柴梆,你怎么處理?
- 卡頓的原因是什么终惑?你怎么去處理和定位卡頓的問(wèn)題绍在。
- 如果讓你設(shè)計(jì)一個(gè)埋點(diǎn)統(tǒng)計(jì)的方案你會(huì)怎么處理?
- swift和oc相比有什么優(yōu)缺點(diǎn)雹有。你認(rèn)為swift比oc打包體積大的原因是什么偿渡?
- 假如現(xiàn)在數(shù)據(jù)庫(kù)中有100w條數(shù)據(jù)。這些數(shù)據(jù)需要更新現(xiàn)在有200w條數(shù)據(jù)你怎么能查出相同的和不同的數(shù)據(jù)霸奕。實(shí)現(xiàn)更新和插入操作溜宽。
- iOS13有什么新功能?你是怎么處理劉海屏的適配以及深色模式的质帅。
- wwdc你平呈嗜啵看嗎留攒?講一下最新的一些技術(shù)。你學(xué)習(xí)的途徑有哪些嫉嘀?
- 遇到技術(shù)問(wèn)題你是通過(guò)哪些途徑解決的炼邀?
- 你是怎么做代碼管理的?
算法題:
這是筆試題上的算法的題可供參考剪侮,關(guān)于OC的一些筆試題參考意義不大拭宁。比如:怎么讀寫文件,寫出相關(guān)代碼瓣俯。怎么實(shí)現(xiàn)圖片縮放杰标,寫出相關(guān)代碼。
- 寫一個(gè)函數(shù)計(jì)算一個(gè)整數(shù)的階乘降铸,如果n非常大在旱,如何處理?
- 求一個(gè)字符串最長(zhǎng)連續(xù)子串推掸,舉例桶蝎,abcdeab,輸出結(jié)果abcde谅畅。