iOS面試題整理自用(二)

  1. 聊聊Xcode 中的編譯過程

基本的編譯過程分為四個步驟:
預(yù)處理(Pre-process):把宏替換,刪除注釋,展開頭文件,產(chǎn)生 .i 文件。
編譯(Compliling):把之前的 .i 文件轉(zhuǎn)換成匯編語言,產(chǎn)生 .s文件。
匯編(Asembly):把匯編語言文件轉(zhuǎn)換為機器碼文件,產(chǎn)生 .o 文件。
鏈接(Link):對.o文件中的對于其他的庫的引用的地方進行引用,生成最后的可執(zhí)行文件(同時也包括多個 .o 文件進行 link)。

OC,Swift都是編譯型語言。
編譯型語言在程序執(zhí)行之前,有一個單獨的編譯過程,將程序翻譯成機器語言,以后執(zhí)行這個程序的時候,就不用再進行翻譯了。
解釋型語言,是在運行的時候?qū)⒊绦蚍g成機器語言,所以運行速度相對于編譯型語言要慢。
雖然Java程序在運行之前也有一個編譯過程,但是并不是將程序編譯成機器語言,而是將它編譯成字節(jié)碼(可以理解為一個中間語言)。
在運行的時候,由JVM將字節(jié)碼再翻譯成機器語言。

2.編譯器
https://zhuanlan.zhihu.com/mosky/19878094

LLVM編譯器后端 Clang是一個C、C++、Objective-C和Objective-C++編程語言的編譯器前端。
Clang編譯Objective-C代碼時速度為GCC的3倍。
我們在說到GCC的時候提到了GDB,說它能夠糾錯。Clang下糾錯工具就是LLDB。GDB的一個限制——“用戶界面”,,所以LLDB的一個優(yōu)點就是有一個良好的GUI。

Xcode提供的playground文件中實現(xiàn)。支撐這個的背后應(yīng)該就是LLVM+Clang。

3.加密相關(guān)
是網(wǎng)絡(luò)上使用最廣泛的編碼系統(tǒng),能夠?qū)⑷魏味M制數(shù)據(jù),轉(zhuǎn)換成只有 65 個字符組成的文本文件
數(shù)據(jù)本身的加密解密使用對稱加密算法(AES)
用 RSA 算法加密并傳輸對稱算法所需的密鑰
MD5同樣的密碼,同樣的加密算法,每次加密的結(jié)果是不一樣 服務(wù)器時間戳密碼
蘋果的"生態(tài)圈",鑰匙串訪問,使用 AES 256 加密算法,能夠保證用戶密碼的安全

4.線程相關(guān)

同步(sync) 和 異步(async) 的主要區(qū)別在于會不會阻塞當(dāng)前線程
互斥鎖:保證鎖內(nèi)的代碼,同一時間,只有一條線程能夠執(zhí)行!如果發(fā)現(xiàn)有其他線程正在執(zhí)行鎖定的代碼,線程會進入休眠狀態(tài),等待其他線程執(zhí)行完畢,打開鎖之后,線程會被喚醒
自旋鎖:如果發(fā)現(xiàn)有其他線程正在執(zhí)行鎖定的代碼,線程會以死循環(huán)的方式,一直等待鎖定代碼執(zhí)行完成
自旋鎖更適合執(zhí)行非常短的代碼,原子屬性內(nèi)部的鎖是自旋鎖,自旋鎖的執(zhí)行效率比互斥鎖高

a> 線程間通訊
比如異步去下載圖片,然后回到主線程去更新UI
b>多線程之間的數(shù)據(jù)共享

  • 可以加上同步鎖

GCD:
barrier : 比如往線程不安全的NSMutableArray 操作數(shù)據(jù)
group: enter leave notify
after: 延時操作
once: 一次性執(zhí)行 單例

NSOperation :
最大操作并發(fā)數(shù)(GCD不好做)
繼續(xù)/暫停/全部取消
跨隊列設(shè)置操作的依賴關(guān)系

  1. 算法相關(guān)

6.C語言相關(guān)

7.直播 IM
推流端(采集、美顏處理、編碼、推流)、服務(wù)端處理(轉(zhuǎn)碼、錄制、截圖、鑒黃)、播放器(拉流、解碼、渲染)、互動系統(tǒng)(聊天室、禮物系統(tǒng)、贊)
1.采集、2.濾鏡處理、3.編碼、4.推流、5.CDN分發(fā)、6.拉流、7.解碼、8.播放、9.聊天互動

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

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

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