iOS

OC語(yǔ)法

1. Block是如何實(shí)現(xiàn)的诱篷?Block對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)是什么樣子的?__block的作用是什么嘁傀?它對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)又是什么樣子的兴蒸?

block原理

  1. block結(jié)構(gòu)是一個(gè)結(jié)構(gòu)體
        struct __main_block_impl_0 {
          struct __block_impl impl;
          struct __main_block_desc_0* Desc;
          __main_block_impl_0(void *fp, struct __main_block_desc_0 *desc, int flags=0) {
            impl.isa = &_NSConcreteStackBlock;
            impl.Flags = flags;
            impl.FuncPtr = fp;
            Desc = desc;
          }
        };
    
  2. block的具體實(shí)現(xiàn)保存在impl的FuncPtr字段中
  3. block中的變量捕獲:
    (1)自動(dòng)變量保存在block結(jié)構(gòu)體中,通過(guò)block結(jié)構(gòu)體獲取自動(dòng)變量的值细办。
    (2)局部靜態(tài)變量的指針保存在block結(jié)構(gòu)體中橙凳,通過(guò)block結(jié)構(gòu)體獲取到變量指針最后獲取變量的值。
    (3)全局變量可以直接訪問(wèn)笑撞。
    (4)全局靜態(tài)變量可以直接訪問(wèn)岛啸。
  4. block的類型:
    (1)沒(méi)有捕獲參數(shù)時(shí)是NSGlobalBlock類型
    (2)捕獲了參數(shù),但是block沒(méi)有被引用時(shí)是NSStackBlock
    (3)當(dāng)block作為返回值時(shí)茴肥,當(dāng)block被賦值給strong指針時(shí)坚踩,當(dāng)block作為Cocoa API方法參數(shù)時(shí),當(dāng)block作為GCD方法參數(shù)時(shí)瓤狐,是NSMallocBlock
  5. 在block被copy時(shí)瞬铸,會(huì)通過(guò)__main_block_copy_0和__main_block_dispose_0函數(shù)對(duì)捕獲的參數(shù)進(jìn)行內(nèi)存管理。
  6. 當(dāng)參數(shù)使用__block修飾時(shí)础锐,捕獲的參數(shù)會(huì)被包在__Block_byref_object_0結(jié)構(gòu)體中嗓节,結(jié)構(gòu)體中__forwarding字段會(huì)將棧block中byref結(jié)構(gòu)體指向堆block中的byref結(jié)構(gòu)體,使block內(nèi)外的變量統(tǒng)一皆警,這樣就可以在變量被copy到堆上之后還是能修改棧上的變量拦宣。

2. stringWithFormat中%@的占位原理

stringWithFormat中%@的占位原理

3. 已知變量 age是NSInteger類型,下面這段代碼能編譯通過(guò),請(qǐng)問(wèn)在運(yùn)行時(shí)會(huì)不會(huì)崩潰鸵隧?請(qǐng)從原理上解釋為什么绸罗?

 NSString *str = [NSString stringWithFormat:@"%@",1];

stringWithFormat中%@的占位原理

4. GCD中的Block是在堆上還是棧上?

堆上豆瘫∩后埃可以通過(guò)block的isa指針確認(rèn)。

5. NSCoding協(xié)議是干什么用的靡羡?

6. KVO的實(shí)現(xiàn)原理系洛。

iOS KVO原理

7. NSOperation有哪些特性比著GCD有哪些優(yōu)點(diǎn)俊性,它有哪些API略步?

8. NSNotificaiton是同步還是異步的,如果發(fā)通知時(shí)在子線程定页,接收在哪個(gè)線程趟薄?

9. 符號(hào)綁定原理。

10. performSelecter與runloop有什么關(guān)系

通過(guò)performSelecter調(diào)用方法時(shí)典徊,會(huì)創(chuàng)建一個(gè)timer杭煎,將這個(gè)timer添加到runloop中執(zhí)行。當(dāng)在子線程中調(diào)用performSelecter時(shí)需要注意runloop是不是跑起來(lái)了卒落。

11. 一個(gè)NSObject對(duì)象占用多少內(nèi)存羡铲?

需要理解OC對(duì)象在內(nèi)存中有哪些內(nèi)容,是怎樣分布的儡毕。
OC對(duì)象的底層是基于C/C++的結(jié)構(gòu)體來(lái)實(shí)現(xiàn)的也切。
利用下面的命令將OC代碼編譯為C++代碼(xx為文件名)

xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc xx.m -o xx.cpp

"-sdk"指定平臺(tái)
"-arch"指定架構(gòu)(模擬器:i386,32位:armv7腰湾,64位:arm64)

12. Mach-O的結(jié)構(gòu)里面有啥

UI

  1. 事件響應(yīng)鏈?zhǔn)侨绾蝹鬟f的雷恃?
  2. 什么是異步渲染?
  3. layoutsubviews是在什么時(shí)機(jī)調(diào)用的费坊?
  4. 一張圖片的展示經(jīng)歷了哪些步驟倒槐?
  5. 什么是離屏渲染,什么情況會(huì)導(dǎo)致離屏渲染附井?
  6. CoreAnimation這個(gè)框架的作用什么讨越,它跟UIKit的關(guān)系是什么?
  7. UIView與CALayer有什么關(guān)系永毅?舉例一個(gè)CALayer的秒用把跨。
  8. 顯示動(dòng)畫與隱式動(dòng)畫的區(qū)別。

內(nèi)存管理

  1. ARC方案的原理是什么卷雕?它是在什么時(shí)候做的隱式添加release操作节猿?
  2. 循環(huán)引用有哪些場(chǎng)景,如何避免?
  3. 為什么當(dāng)我們?cè)谑褂胋lock時(shí)外面是weak 聲明一個(gè)weakSelf滨嘱,還要在block內(nèi)部使用strong再持有一下峰鄙?
  4. Autoreleasepool是實(shí)現(xiàn)機(jī)制是什么?它是什么時(shí)候釋放內(nèi)部的對(duì)象的太雨?它內(nèi)部的數(shù)據(jù)結(jié)構(gòu)是什么樣的吟榴?當(dāng)我提到哨兵對(duì)象時(shí),會(huì)繼續(xù)問(wèn)哨兵對(duì)象的作用是什么囊扳,為什么要設(shè)計(jì)它吩翻?(runtime源碼)
  5. 哪些對(duì)象會(huì)放入到Autoreleasepool中?
  6. weak的實(shí)現(xiàn)原理是什么锥咸?當(dāng)引用對(duì)象銷毀是它是如何管理內(nèi)部的Hash表的狭瞎?(這里要參閱weak源碼)

多線程

  1. 進(jìn)程,線程搏予,任務(wù)熊锭,隊(duì)列概念
  2. GCD
  3. 串行,并行雪侥,并發(fā)
  4. 同步碗殷,異步
  5. 串行、并發(fā)和同步速缨、異步相互結(jié)合能否開(kāi)啟新線程
  6. 主線程和主隊(duì)列
  7. 隊(duì)列與線程的關(guān)系
  8. gcd中常用隊(duì)列有哪些
  9. 什么情況下會(huì)發(fā)生死鎖锌妻?
  10. 如何避免死鎖?這段代碼應(yīng)該如何修改旬牲?
  11. GCD如何常駐線程仿粹?
    開(kāi)啟子線程的runloop,然后添加一個(gè)監(jiān)聽(tīng)端口事件引谜。(待細(xì)化)

Runtime

  1. 消息發(fā)送的流程是怎樣的牍陌?
  2. 關(guān)聯(lián)對(duì)象時(shí)什么情況下會(huì)導(dǎo)致內(nèi)存泄露?
  3. 消息轉(zhuǎn)發(fā)的流程是什么员咽?
  4. category能否添加屬性毒涧,為什么?能否添加實(shí)例變量贝室,為什么契讲?
  5. 元類的作用是什么?
  6. 類方法是存儲(chǔ)到什么地方的滑频?類屬性呢捡偏?
  7. 講幾個(gè)runtime的應(yīng)用場(chǎng)景
  8. 實(shí)例對(duì)象與類對(duì)象的存儲(chǔ)結(jié)構(gòu)是什么樣的?
  9. 調(diào)用類對(duì)象和實(shí)例對(duì)象的方法時(shí)峡迷,是如何在內(nèi)存中查找到方法并調(diào)用的银伟?
  10. 什么是線程安全你虹,為什么UI操作必須在主線程執(zhí)行
  11. 開(kāi)啟新的線程有哪些方法
  12. 多線程任務(wù)要實(shí)現(xiàn)順序執(zhí)行有哪些方法
  13. 如何實(shí)現(xiàn)一個(gè)多讀單寫的功能?
  14. 用GCD如何實(shí)現(xiàn)一個(gè)控制最大并發(fā)數(shù)且執(zhí)行任務(wù)FIFO的功能彤避?
  15. 怎么去攔截C語(yǔ)言的系統(tǒng)函數(shù)
    http://www.reibang.com/p/aeb0d891607e

Runloop

  1. 講一下對(duì)Runloop的理解傅物?
  2. 可以用Runloop實(shí)現(xiàn)什么功能?
  3. 多線程與Runloop的關(guān)系

性能優(yōu)化

  1. 對(duì)TableView進(jìn)行性能優(yōu)化有哪些方式琉预?
  2. Xcode的Instruments都有哪些調(diào)試的工具董饰?
  3. 講一下你做過(guò)的性能優(yōu)化的事情。
  4. 如何檢測(cè)卡頓圆米,都有哪些方法卒暂?
  5. 縮小包體積有哪些方案?
  6. APM的具體實(shí)現(xiàn)

網(wǎng)絡(luò)

  1. TCP為什么需要三次握手呢娄帖?

  2. TCP為什么揮手需要四次呢也祠?為什么不能將ACK和FIN報(bào)文一起發(fā)送?

  3. TCP為什么TIMED_WAIT之后要等2MSL才進(jìn)入CLOSED狀態(tài)块茁?

  4. TCP怎么保證安全性
    校驗(yàn)和
    序列號(hào)
    確認(rèn)應(yīng)答
    超時(shí)重傳
    連接管理
    流量控制
    擁塞控制

  5. Https為什么握手過(guò)程需要三個(gè)隨機(jī)數(shù)齿坷,而且安全性只取決于第三個(gè)隨機(jī)數(shù)?

  6. Charles如何實(shí)現(xiàn)HTTPS的攔截数焊?

  7. 為什么有些HTTPS請(qǐng)求(例如微信)抓包結(jié)果仍是加密的,如何實(shí)現(xiàn)的崎场?

  8. DNS解析流程

  9. DNS遞歸查詢

  10. DNS迭代查詢

  11. DNS劫持

  12. CDN工作流程

  13. Cookie和Session的區(qū)別

  14. Socket

  15. 如果某一請(qǐng)求只在某一地特定時(shí)刻失敗率較高佩耳,會(huì)有哪些原因

  16. http有沒(méi)有做過(guò)一些http弱網(wǎng)的優(yōu)化

計(jì)算機(jī)相關(guān)

  1. 項(xiàng)目編譯的流程是什么?手機(jī)上的應(yīng)用程序自點(diǎn)擊圖標(biāo)開(kāi)始到首屏內(nèi)容展示都經(jīng)歷了哪些步驟谭跨?
  2. 對(duì)于基本數(shù)據(jù)類型干厚,一般是存儲(chǔ)到棧中的,它有沒(méi)有可能存在堆上螃宙,什么情況下會(huì)存儲(chǔ)到堆上蛮瞄?
  3. 數(shù)據(jù)庫(kù)中的事務(wù)是什么意思?
  4. FMDB中事務(wù)的實(shí)現(xiàn)原理是什么谆扎?
  5. 使用過(guò)什么數(shù)據(jù)庫(kù)(我回答的Sqlite挂捅,Realm),Realm在使用時(shí)有哪些注意事項(xiàng)堂湖,如何實(shí)現(xiàn)批量操作闲先?
  6. LRU算法是否了解,如何實(shí)現(xiàn)一套LRU算法无蜂?
  7. 知道哪些設(shè)計(jì)模式伺糠,怎么理解設(shè)計(jì)模式的作用?
  8. 如果有1000萬(wàn)個(gè)Int類型的數(shù)字斥季,如何對(duì)他們排序训桶?
  9. 設(shè)計(jì)一套數(shù)據(jù)庫(kù)方案,實(shí)現(xiàn)類似微信的搜索關(guān)鍵詞能快速檢索出包含該字符串的聊天信息,并展示對(duì)應(yīng)數(shù)量(聊天記錄的數(shù)據(jù)量較大)舵揭。
  10. iOS系統(tǒng)代碼中使用了哪些設(shè)計(jì)模式慰照?

其他開(kāi)發(fā)技能

  1. Lottie實(shí)現(xiàn)動(dòng)畫效果的原理是什么?
  2. OClint實(shí)現(xiàn)靜態(tài)分析的原理是什么琉朽,它是如何做到的毒租?
  3. MVVM和MVC有什么區(qū)別?
  4. 靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)的區(qū)別是什么箱叁?
  5. 了解Flutter嗎墅垮?它有沒(méi)有使用UIKit?它是如何渲染UI的耕漱?
  6. 二進(jìn)制重排的核心依據(jù)是什么算色?
  7. 如何設(shè)計(jì)一套切換主題的方案?
  8. AVPlayer和IJKPlayer有什么區(qū)別螟够?用IJKPlayer如何實(shí)現(xiàn)一個(gè)緩存視頻列表每條視頻前1s的內(nèi)容灾梦?
  9. 類似微博的短視頻列表,滑動(dòng)停留播放妓笙,如何實(shí)現(xiàn)若河?
  10. 使用python做過(guò)哪些事?如何理解腳本語(yǔ)言寞宫?
  11. 簽名文件里面有啥
  12. ipa是怎么校驗(yàn)簽名的
  13. 線上的webview怎么去調(diào)試,除了用safari瀏覽器的開(kāi)發(fā)者模式還有別的么

數(shù)據(jù)結(jié)構(gòu)與算法

  1. 什么是Hash表萧福,什么是Hash碰撞,解決Hash碰撞有什么方法辈赋?
  2. 如何遍歷二叉樹(shù)鲫忍?
  3. 簡(jiǎn)述下快速排序的過(guò)程,時(shí)間復(fù)雜度是多少钥屈?
  4. 有一個(gè)整數(shù)數(shù)組悟民,如何只遍歷一遍就實(shí)現(xiàn)讓該數(shù)組奇數(shù)都在前面,偶數(shù)都在后面篷就?
  5. 假設(shè)你正在爬樓梯射亏。需要 n 階你才能到達(dá)樓頂。每次你可以爬 1 或 2 個(gè)臺(tái)階腻脏。你有多少種不同的方法可以爬到樓頂呢鸦泳?
  6. 給出一個(gè) 32 位的有符號(hào)整數(shù),你需要將這個(gè)整數(shù)中每位上的數(shù)字進(jìn)行反轉(zhuǎn)永品。leetcode 7
  7. 有紅做鹰、黃、藍(lán)三種顏色的氣球鼎姐。在偶佤铮客王國(guó)更振,1個(gè)紅氣球+1個(gè)黃氣球+1個(gè)藍(lán)氣球可以兌換一張彩票。
    2個(gè)紅氣球+1個(gè)黃氣球可以兌換1個(gè)藍(lán)氣球饭尝。
    2個(gè)黃氣球+1個(gè)藍(lán)氣球可以兌換1個(gè)紅氣球肯腕。
    2個(gè)藍(lán)氣球+1個(gè)紅氣球可以兌換1個(gè)黃氣球。
    現(xiàn)在牛牛有a個(gè)紅氣球钥平,b個(gè)黃氣球实撒, c個(gè)藍(lán)氣球,牛牛想知道自己最多可以兌換多少?gòu)埐势薄?/li>

軟技能

  1. 做過(guò)哪些工作職責(zé)之外的事情涉瘾?
  2. 經(jīng)歷過(guò)最難的一次業(yè)務(wù)開(kāi)發(fā)是什么樣的知态,最終怎么解決的?
  3. 最近有學(xué)習(xí)什么新技術(shù)嗎立叛?有何收獲负敏?
  4. 你最擅長(zhǎng)iOS哪方面的知識(shí)?怎么體現(xiàn)出來(lái)的秘蛇?
  5. 常用哪些開(kāi)源庫(kù)其做,有沒(méi)有研究過(guò)他們的原理?
  6. 如何保持個(gè)人成長(zhǎng)赁还?
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末妖泄,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子秽浇,更是在濱河造成了極大的恐慌浮庐,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柬焕,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡梭域,警方通過(guò)查閱死者的電腦和手機(jī)斑举,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)病涨,“玉大人富玷,你說(shuō)我怎么就攤上這事〖饶拢” “怎么了赎懦?”我有些...
    開(kāi)封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)幻工。 經(jīng)常有香客問(wèn)我励两,道長(zhǎng),這世上最難降的妖魔是什么囊颅? 我笑而不...
    開(kāi)封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任当悔,我火速辦了婚禮傅瞻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘盲憎。我一直安慰自己嗅骄,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布饼疙。 她就那樣靜靜地躺著溺森,像睡著了一般。 火紅的嫁衣襯著肌膚如雪窑眯。 梳的紋絲不亂的頭發(fā)上屏积,一...
    開(kāi)封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音伸但,去河邊找鬼肾请。 笑死,一個(gè)胖子當(dāng)著我的面吹牛更胖,可吹牛的內(nèi)容都是我干的铛铁。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼却妨,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼饵逐!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起彪标,我...
    開(kāi)封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤倍权,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后捞烟,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體薄声,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年题画,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了默辨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡苍息,死狀恐怖缩幸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情竞思,我是刑警寧澤表谊,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站盖喷,受9級(jí)特大地震影響爆办,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜传蹈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鹉戚,春花似錦、人聲如沸咙冗。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)雾消。三九已至,卻和暖如春挫望,著一層夾襖步出監(jiān)牢的瞬間立润,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工媳板, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留桑腮,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓蛉幸,卻偏偏與公主長(zhǎng)得像破讨,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子奕纫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1.weak和assign區(qū)別 修飾變量類型的區(qū)別: weak 只可以修飾對(duì)象提陶。如果修飾基本數(shù)據(jù)類型,編譯器會(huì)報(bào)錯(cuò)...
    coderjon閱讀 1,019評(píng)論 0 1
  • 目錄:1.Runtime2.NSNotification相關(guān)3.RunLoop4.多線程相關(guān)5.KVO6.Bloc...
    麥子_KB閱讀 1,038評(píng)論 0 14
  • 面向?qū)ο蟮娜筇匦裕悍庋b匹层、繼承隙笆、多態(tài) OC內(nèi)存管理 _strong 引用計(jì)數(shù)器來(lái)控制對(duì)象的生命周期。 _weak...
    運(yùn)氣不夠技術(shù)湊閱讀 1,100評(píng)論 0 10
  • 今天感恩節(jié)哎升筏,感謝一直在我身邊的親朋好友撑柔。感恩相遇!感恩不離不棄您访。 中午開(kāi)了第一次的黨會(huì)乏冀,身份的轉(zhuǎn)變要...
    迷月閃星情閱讀 10,566評(píng)論 0 11
  • 彩排完,天已黑
    劉凱書法閱讀 4,218評(píng)論 1 3