畢業好幾年了,上週發送了簡歷給騰訊,參加了騰訊面試。具體部門這邊就不說了。此次面試仍是收穫到了不少。面試
一面電話面試:算法
面試官主要是針對iOS相關的基礎問題。數據庫
先簡單自我介紹一下本身緩存
對mrc和arc的理解性能優化
談談對自動釋放池的理解網絡
自動釋放池在mrc和arc區別多線程
多層自動釋放池嵌套的對象在哪一層釋放框架
對於block,理解,mrc和arc下有什麼區別,使用注意事項oop
對於深拷貝和淺拷貝的理解性能
對於strong weak,atomic等等理解
weak原理
若是屬性徹底不加修飾詞入weak,atomic,系統會怎麼處理
簡述下block的實現
描述下IM系統如何保證消息不丟
IM數據庫如何設計表
C++引用和指針有什麼區別
Http協議30x的錯誤是什麼
談談你懂runloop得理解:由淺入深
談談對多線程理解:由淺入深
談談category和extension區別,系統如何底層實現category
談談消息轉發機制實現
談談事件響應鏈,如何響應view以外的事件
界面性能優化
整個面試大約1個半小時。總體上,回答的還算OK,自動釋放池這塊,不夠清楚底層實現。另外atomic是在屬性沒有寫的狀況下系統默認的。Block的底層實現也表達的不夠準確。
一面以後過了幾天,給了二面通知。
二面視頻面試:
此次面試官相對於一面,更加側重於過往項目。
1.開頭都是簡短的自我介紹 2.聊一聊過往項目中你以爲收穫最大的一個模塊。
忽然遇到這個問題,心理是有點懵逼的呀,我不由反想了一下,過去這些個項目,零零散散收穫了很多知識和經驗,但是具體到哪個模塊,完整的思考仍是沒有過的。
答: 就說了上個項目作相似朋友圈的優化思路,談到了空間換時間,緩存,渲染相關的技術點。
不得不驚歎騰訊的面試官的邏輯條理,很快抓住了問題的本質。
需求痛點:界面卡頓,體驗很差 解決方案:探索的思路-》解決方案。
該模塊引伸到的新話題還涉及到了增量更新,內存緩存,本地緩存。
細節上還談到了富文本繪製,Coretext框架的使用,哎,說來慚愧,上次使用coretext已是兩年前,連框架的核心API都已經不記得了。再加上項目中使用的是YYLabel的開源框架。最後只能憑藉印象大概說了下繪製的流程,其實面試官都是由淺入深的,若是這邊回答的不夠深刻。那麼後面也就不會有更深刻的探討了。
3.上個項目中存在視頻裁剪,錄製等功能。 面試官對這塊有些興趣,就聊到了視頻裁剪的實現,由於咱們項目中使用了ffmpeg作的裁剪功能。包括視頻下載,數據裁剪封裝,引伸聊到了邊預覽邊裁剪,由於我以前的項目並無作到預覽裁剪這塊。也就沒有深刻聊下去了。期間簡單談到了rstp協議,和HLS,rtmp等協議的對比,信令協議。雖然以前都有看過協議的大體實現和預覽,可是實際使用的是SDK,沒有實踐加持。這部分知識是很容易忘記的。大體聊了下整體差異。
4.項目中有用到過DLNA投屏協議 說來又是慚愧,本身完整作過的項目,過去了兩年,竟然連流程,協議都只是零零散散的記起來了,很勉強的說出了大概實現流程。知道最後才記起來是soap協議。當初爲了作這個但是研究了整整兩週的。面試官應該也實現過這個需求,提到了視頻盒子斷線如何檢測作處理,什麼緣由致使的。因爲以前咱們的產品需求比較簡單,沒有特別完善。這裏我也只能說了大概。
5.項目作過視頻播放需求,使用的AVPlayer框架(重點聊) 面試官問到,AVPlayer怎麼監聽視頻緩衝狀態的,有哪幾種狀態。說來又是慚愧,我只記得是KVO監聽的。具體的API已經記不清了。 接着面試官問到這個需求遇到過哪些坑,怎麼解決的。 這個還真的有,首先是回調播放進度在拖動時候錯亂,加載某些小視頻的適配,首幀出圖很慢。KVO的模式不靈活。緩衝進度不受咱們控制。短視頻可能直接迅速緩衝到底。 仍是以前的思路 需求痛點有了 解決方案:探索的思路-》解決方案。 不得不說以前作的產品,都是需求驅動,解決了需求,不少時候就沒有極客精神,在深刻的去探討。這塊真的是差!
發散問到了:若是網絡很差,首幀出圖以後,如何優化後續播放不卡頓 當時已經一臉懵逼了:就提到了能夠適當加大緩衝區,等到足夠的I幀數據再開始播放。
甚至連常規的碼率切換思路都沒想到。做爲作音視頻相關產品的我太不該該了。
6.項目聊完了以後,又追問了iOS的一些基礎問題,屬性和成員變量區別,strong,atomic關鍵字,怎麼理解runloop,runloop有幾種狀態等等。
7.最後給出了一個很是有意思的算法題
有15個瓶子,其中最多有一瓶有毒,如今有四隻老鼠,喝了有毒的水以後,次日就會死。如何在次日就能夠判斷出哪一個瓶子有毒 答:開始我想到的是常規思路二分法,717,和麪試官說了,發現四隻老鼠根本不夠,面試官友好的提示從老鼠面去想,這時候很快想到了一個老鼠有死和不死,也就0和1兩個狀態,四隻老鼠有16個組合,正好是足夠的。可是怎麼分配瓶子,還沒想好,演算了一下子,由於面試官這邊時間有限,就說思路是正確的。下面有興趣在看怎麼分哈。面試就到此結束了。
二面持續了大約一個小時多一點。 二面本身感受了不少欠缺,不夠深刻。
面試總結
騰訊的面試官都很是的友好,邏輯性很是強。綜合素質很高。面試過程當中雖然針對的都是技術問題,可是考察的包含了邏輯思惟和產品思惟以及溝通能力等綜合素質。特別是二面。
認識到了本身的不足:
1.不夠極客精神:仍是需求驅動,以前的項目不少設計優化由於對產品的需求沒有那麼高精度,遇到痛點的時候:僅僅作了初步的探討,沒有造成完整的閉環
每每是作了必定的優化知足了需求就結束整個過程了。這對於自個人成長是很很差的。好比一個API瞭解到百分之70,沒有到100.
雖然每一個環節都有去學習,也都知道流程,可是這是不夠。要深刻進去。即便本身的項目沒有這塊實踐需求。也要自我驅動去作。
3.自我總結欠缺:之前都是渾渾噩噩的快樂開發,也自學了很多。每一個項目,或者每一個自我學習的過程走一段,都應該站在更高點去總結一下。
例如項目,要站在產品角度,自我學習,要站在總體框架角度。不然學習到的東西一段時間不用就忘記了。高度也不夠。沒有徹底消化透。感受什麼都懂一些,可是什麼都差一點火候
怎麼改善提升
多寫Blog分享,東西會作,和能寫出來是兩個層面。即便網上已經有不少實現了。消化好以後,用本身的思路表達出來,也有很大提升
遇到問題,不管是項目仍是本身實踐,都要多問幾個爲何,不能淺嘗輒止,站在產品角度。從原理層面理解問題,最重要是給出解決問題方案。demo不等於工程。
階段性總結知識點。古語: 學而時習之。
反思了不少:也清楚認識到本身的一些優勢,有技術熱情,愛好學習。很好的邏輯思惟。溝通能力。相信只要堅持努力。必定能得到好的結果。也給本身打打氣。共勉之。
本文爲第三方轉載。 原文連接:mp.weixin.qq.com/s/rj3G4vaaR…