的底层实现 ios_iOS 面试梳理
本次面試周期為一周,準備時間為一周。
本次面試共投遞25家,約面11家,最后大廠只面了360、字節,實際面了9家,收到4家offer。
563513413可獲取相關的面試資料
說明:16年畢業,非重點大學,非計算機專業,本科
經過這次面試,對自己的定位又有了更多的認知,由于之前工作經驗的原因,音視頻這塊將會成為我今后的主要方向,下一次希望能做到一個資深iOS音視頻工程師,我也會把更多時間放到這上面。
確實算法能考察一個人的聰明程度,這段時間完全被女票碾壓,好在算法多做一些,總結規律,也能把人訓練的更聰明,像奧數一樣。
建議大家用C寫算法題;平時leetcode也用C。
主觀面試感受
- 最右印象較差,面試官不nice;
- 360最佳,很細心,很喜歡他們的leader;
- 其他公司均不錯
- 幾乎每一家都有算法題,但整體難度不大(大部分是動態規劃+樹的遍歷)
360 音視頻崗位
主觀評價:面的是音視頻中臺的崗位,本以為HR會推薦業務崗,準備不充分
一面:
- 以往直播和相機的業務考察
- AVFoundation、GPUImage
- 兩道算法題(追問優化)
二面:
- AVPlayer實現原理、數據緩存
- OpenGL ES 處理流程
- 硬編、軟編
- 直播整體流程
- 濾鏡實現原理
然后回去讓我等通知,說一周內。
抖音 業務崗
主觀評價:吐槽下,獵頭給我很多面試題,讓我背,結果一個都沒遇到; 希望大家遇到一個好的面試官
- 大數相加
- 樹的遍歷(遞歸,隊列兩種方式)
- 事件響應機制(傳遞鏈、響應鏈、手勢)
算法寫出來了但花了50分鐘,然后一個小時就過去了,我。。。能力不足,leetcode還要繼續。
天真互動
主觀評價:這家雖然是創業公司,有三面,算上HR是4面,最后一面我感覺面試官水平超高,應該是個大神,被虐,但還是拿到了他家的offer。
- xcode 證書校驗過程
- json轉model實現
- 動態庫靜態庫區別
- 用純AVFoundation框架,向視頻中加入一個水印怎么做
- GPUImag框架介紹
- 網絡如何優化
- camke用法
- 視頻從采集到顯示,最終寫入文件流程
- AVPlayer緩存技術
- 視頻如何2倍播放,2倍速導出
- charles原理
- samplebuffer與pixelbuffer區別
- CMTime結構
這個人的問題專業程度不遜于360。
最右
一面
- crash崩潰怎么解,崩潰到底層代碼
- AVplayer 遍播遍下載
- 如何設計一個網絡庫
二面
- FBO、H264、GPUImage3、
- 大圖加載、PCM計算時間、
- 如何實現分割濾鏡、
- 音視頻編碼
美術寶
主觀評價:我感覺是最高效的,簡潔
- kvo
- block
- notification
- runloop
- 二面有個算法題
兩次面試加一起50分鐘,然后就發offer,牛。
其他公司
主觀評價:大小公司都會有算法,有的用牛客網,有的用leetcode,純手擼,無提示。
- NSCache 應用場景 與NSDictionary區別
- git工作流
- 常見的鎖,哪個性能最差,以及原因
- app逆向分析
- leak工具使用
- charles原理
- http與https區別
- 組件化思路
- 持續集成方案
- copy、assign區別
- 內存對齊
- sel、_cmd、isa
- Tagged pointer
- 剪刀石頭布
- 最長不重復字符串
- 大量的數字排序
- leetcode 32
- leetcode 1237
- leetcode 828
- leetcode 283
- leetcode j67
- leetcode 116
- 函數調用機制
- 消息轉發
- h5、js
總結
iOS底層:
- kvo、
- runtime、
- kvc、
- notification、
- runloop、
- 關鍵字(copy、assign、strong)、
- block、
- GCD
其實東西不多,理解底層對于記憶規則,有很大幫助。建議源碼和《iOS和OS X多線程和內存管理》一起看,以及一些大神的文章
音視頻方向:
- 從AVFoundation入手,然后GPUImage,在然后OpenGL ES、MetalKit
- ffmpeg、opencv
- cc++
- rtmp、webrtc
其他:
- 組件化
- 設計模式與原則
- 網絡
- 持續集成
- 團隊協作流程
面試沒有遇到Swift的問題,有點意外,這次面試,大約有一半使用swift,有一家純swift開發,其余都是混編,或者有業務線是swift。
建議大家先找到工作再辭職,除非工作太忙,沒時間。
關于Swift
swift我也準備了,預計明年,swift相關的問題會爆發出來
- 泛型約束
- 關聯類型
- 類型擦除
- where使用
- codable 如何實現key映射
- AnyIterator
- sequence
- indexable
- collection
- map、filter、reduce、sorted
- 如何實現鏈式編程(snapkit)
- 函數派發機制(class、struct、extension、protocol)
- kvo失效怎么辦
- 內存管理 pwt、vwt
- 內存,統一類型的變量可選值與非選值內存有什么區別
原創聲明,本文系作者授權云+社區發表,未經許可,不得轉載。
如有侵權,請聯系 yunjia_community@tencent.com 刪除。
總結
以上是生活随笔為你收集整理的的底层实现 ios_iOS 面试梳理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java程序优化快捷键_Java 代码中
- 下一篇: docker 添加端口映射_苟且偷生的程