本文來源:https://juejin.im/post/5b3c40f4e51d45191a0d0aae
一面電話面試:
面試官主要是針對iOS相關(guān)的基礎(chǔ)問題。
先簡單自我介紹一下自己
對mrc和arc的理解
談?wù)剬ψ詣?dòng)釋放池的理解
自動(dòng)釋放池在mrc和arc區(qū)別
多層自動(dòng)釋放池嵌套的對象在哪一層釋放
對于block,理解,mrc和arc下有什么區(qū)別提鸟,使用注意事項(xiàng)
對于深拷貝和淺拷貝的理解
對于strong weak售睹,atomic等等理解
weak原理
如果屬性完全不加修飾詞入weak,atomic炒瘸,系統(tǒng)會怎么處理
簡述下block的實(shí)現(xiàn)
描述下IM系統(tǒng)如何保證消息不丟
IM數(shù)據(jù)庫如何設(shè)計(jì)表
C++引用和指針有什么區(qū)別
Http協(xié)議30x的錯(cuò)誤是什么
談?wù)勀愣畆unloop得理解:由淺入深
談?wù)剬Χ嗑€程理解:由淺入深
談?wù)刢ategory和extension區(qū)別,系統(tǒng)如何底層實(shí)現(xiàn)category
談?wù)勏⑥D(zhuǎn)發(fā)機(jī)制實(shí)現(xiàn)
談?wù)勈录憫?yīng)鏈寝衫,如何響應(yīng)view之外的事件
界面性能優(yōu)化
整個(gè)面試大約1個(gè)半小時(shí)顷扩。整體上,回答的還算OK慰毅,自動(dòng)釋放池這塊隘截,不夠清楚底層實(shí)現(xiàn)。另外atomic是在屬性沒有寫的情況下系統(tǒng)默認(rèn)的。Block的底層實(shí)現(xiàn)也表達(dá)的不夠準(zhǔn)確婶芭。
一面之后過了幾天东臀,給了二面通知。
二面視頻面試:
這次面試官相對于一面犀农,更加側(cè)重于過往項(xiàng)目惰赋。
1.開頭都是簡短的自我介紹
2.聊一聊過往項(xiàng)目中你覺得收獲最大的一個(gè)模塊。
突然遇到這個(gè)問題呵哨,心理是有點(diǎn)懵逼的呀赁濒,我不禁反想了一下,過去這些個(gè)項(xiàng)目仇穗,零零散散收獲了不少知識和經(jīng)驗(yàn)流部,可是具體到哪一個(gè)模塊,完整的思考還是沒有過的纹坐。
答: 就說了上個(gè)項(xiàng)目做類似朋友圈的優(yōu)化思路枝冀,談到了空間換時(shí)間,緩存耘子,渲染相關(guān)的技術(shù)點(diǎn)果漾。
不得不驚嘆騰訊的面試官的邏輯條理,很快抓住了問題的本質(zhì)谷誓。
需求痛點(diǎn):界面卡頓绒障,體驗(yàn)不好
解決方案:探索的思路-》解決方案。
該模塊引申到的新話題還涉及到了增量更新捍歪,內(nèi)存緩存户辱,本地緩存。
細(xì)節(jié)上還談到了富文本繪制糙臼,Coretext框架的使用庐镐,哎,說來慚愧变逃,上次使用coretext已經(jīng)是兩年前必逆,連框架的核心API都已經(jīng)不記得了。再加上項(xiàng)目中使用的是YYLabel的開源框架揽乱。最后只能憑借印象大概說了下繪制的流程名眉,其實(shí)面試官都是由淺入深的,如果這邊回答的不夠深入凰棉。那么后面也就不會有更深入的探討了损拢。
上個(gè)項(xiàng)目中存在視頻裁剪,錄制等功能渊啰。
面試官對這塊有些興趣探橱,就聊到了視頻裁剪的實(shí)現(xiàn)申屹,因?yàn)槲覀冺?xiàng)目中使用了ffmpeg做的裁剪功能绘证。包括視頻下載隧膏,數(shù)據(jù)裁剪封裝,引申聊到了邊預(yù)覽邊裁剪嚷那,因?yàn)槲抑暗捻?xiàng)目并沒有做到預(yù)覽裁剪這塊胞枕。也就沒有深入聊下去了。期間簡單談到了rstp協(xié)議魏宽,和HLS腐泻,rtmp等協(xié)議的對比,信令協(xié)議队询。雖然之前都有看過協(xié)議的大致實(shí)現(xiàn)和預(yù)覽派桩,但是實(shí)際使用的是SDK,沒有實(shí)踐加持蚌斩。這部分知識是很容易忘記的铆惑。大致聊了下總體差別。
項(xiàng)目中有用到過DLNA投屏協(xié)議
說來又是慚愧送膳,自己完整做過的項(xiàng)目员魏,過去了兩年,居然連流程叠聋,協(xié)議都只是零零散散的記起來了撕阎,很勉強(qiáng)的說出了大概實(shí)現(xiàn)流程。知道最后才記起來是soap協(xié)議碌补。當(dāng)初為了做這個(gè)可是研究了整整兩周的虏束。面試官應(yīng)該也實(shí)現(xiàn)過這個(gè)需求,提到了視頻盒子斷線如何檢測做處理厦章,什么原因?qū)е碌恼蛟取S捎谥拔覀兊漠a(chǎn)品需求比較簡單,沒有特別完善闷袒。這里我也只能說了大概坑律。
項(xiàng)目做過視頻播放需求,使用的AVPlayer框架(重點(diǎn)聊)
面試官問到囊骤,AVPlayer怎么監(jiān)聽視頻緩沖狀態(tài)的晃择,有哪幾種狀態(tài)。說來又是慚愧也物,我只記得是KVO監(jiān)聽的宫屠。具體的API已經(jīng)記不清了。
接著面試官問到這個(gè)需求遇到過哪些坑滑蚯,怎么解決的浪蹂。
這個(gè)還真的有抵栈,首先是回調(diào)播放進(jìn)度在拖動(dòng)時(shí)候錯(cuò)亂,加載某些小視頻的適配坤次,首幀出圖很慢古劲。KVO的模式不靈活。緩沖進(jìn)度不受我們控制缰猴。短視頻可能直接迅速緩沖到底产艾。
還是之前的思路
需求痛點(diǎn)有了
解決方案:探索的思路-》解決方案。
不得不說之前做的產(chǎn)品滑绒,都是需求驅(qū)動(dòng)篇亭,解決了需求晤揣,很多時(shí)候就沒有極客精神逝薪,在深入的去探討俏讹。這塊真的是差!
發(fā)散問到了:如果網(wǎng)絡(luò)不好纵势,首幀出圖之后踱阿,如何優(yōu)化后續(xù)播放不卡頓
當(dāng)時(shí)已經(jīng)一臉懵逼了:就提到了可以適當(dāng)加大緩沖區(qū),等到足夠的I幀數(shù)據(jù)再開始播放吨悍。
甚至連常規(guī)的碼率切換思路都沒想到扫茅。作為做音視頻相關(guān)產(chǎn)品的我太不應(yīng)該了。
6.項(xiàng)目聊完了之后育瓜,又追問了iOS的一些基礎(chǔ)問題葫隙,屬性和成員變量區(qū)別,strong躏仇,atomic關(guān)鍵字恋脚,怎么理解runloop,runloop有幾種狀態(tài)等等焰手。
7.最后給出了一個(gè)非常有意思的算法題
有15個(gè)瓶子糟描,其中最多有一瓶有毒,現(xiàn)在有四只老鼠书妻,喝了有毒的水之后船响,第二天就會死。如何在第二天就可以判斷出哪個(gè)瓶子有毒
答:開始我想到的是常規(guī)思路二分法躲履,717见间,和面試官說了,發(fā)現(xiàn)四只老鼠根本不夠工猜,面試官友好的提示從老鼠面去想米诉,這時(shí)候很快想到了一個(gè)老鼠有死和不死,也就0和1兩個(gè)狀態(tài)篷帅,四只老鼠有16個(gè)組合史侣,正好是足夠的拴泌。但是怎么分配瓶子,還沒想好惊橱,演算了一會兒蚪腐,因?yàn)槊嬖嚬龠@邊時(shí)間有限,就說思路是正確的李皇。下面有興趣在看怎么分哈削茁。面試就到此結(jié)束了宙枷。
二面持續(xù)了大約一個(gè)小時(shí)多一點(diǎn)掉房。
二面自己感覺了很多欠缺,不夠深入慰丛。
面試總結(jié)
騰訊的面試官都非常的友好卓囚,邏輯性非常強(qiáng)。綜合素質(zhì)很高诅病。面試過程中雖然針對的都是技術(shù)問題哪亿,但是考察的包含了邏輯思維和產(chǎn)品思維以及溝通能力等綜合素質(zhì)。特別是二面贤笆。
認(rèn)識到了自己的不足:
1. 不夠極客精神:還是需求驅(qū)動(dòng)蝇棉,之前的項(xiàng)目很多設(shè)計(jì)優(yōu)化因?yàn)閷Ξa(chǎn)品的需求沒有那么高精度,遇到痛點(diǎn)的時(shí)候:僅僅做了初步的探討芥永,沒有形成完整的閉環(huán)篡殷,
往往是做了一定的優(yōu)化滿足了需求就結(jié)束整個(gè)過程了。這對于自我的成長是很不好的埋涧。比如一個(gè)API了解到百分之70板辽,沒有到100.
2. 已有項(xiàng)目知識面深度不夠:項(xiàng)目中使用到了某些API,第一反應(yīng)是先去看Demo棘催,完成需求劲弦,事實(shí)上例如僅僅是一個(gè)簡單視頻播放,可能調(diào)用API很簡單就可以做到醇坝,但是中間包含的卻很多邑跪,從網(wǎng)絡(luò)協(xié)議,到視頻解封裝呼猪,編解碼画畅,渲染。音頻編解碼播放郑叠。
雖然每個(gè)環(huán)節(jié)都有去學(xué)習(xí)夜赵,也都知道流程,但是這是不夠乡革。要深入進(jìn)去寇僧。即使自己的項(xiàng)目沒有這塊實(shí)踐需求摊腋。也要自我驅(qū)動(dòng)去做。
3.自我總結(jié)欠缺:以前都是渾渾噩噩的快樂開發(fā)嘁傀,也自學(xué)了不少兴蒸。每個(gè)項(xiàng)目,或者每個(gè)自我學(xué)習(xí)的過程走一段细办,都應(yīng)該站在更高點(diǎn)去總結(jié)一下橙凳。
例如項(xiàng)目,要站在產(chǎn)品角度笑撞,自我學(xué)習(xí)岛啸,要站在整體框架角度。否則學(xué)習(xí)到的東西一段時(shí)間不用就忘記了茴肥。高度也不夠坚踩。沒有完全消化透。感覺什么都懂一些瓤狐,但是什么都差一點(diǎn)火候
怎么改善提高
多寫B(tài)log分享瞬铸,東西會做,和能寫出來是兩個(gè)層面础锐。即使網(wǎng)上已經(jīng)有很多實(shí)現(xiàn)了嗓节。消化好之后,用自己的思路表達(dá)出來皆警,也有很大提高
遇到問題拦宣,無論是項(xiàng)目還是自己實(shí)踐,都要多問幾個(gè)為什么耀怜,不能淺嘗輒止恢着,站在產(chǎn)品角度。從原理層面理解問題财破,最重要是給出解決問題方案掰派。demo不等于工程。
階段性總結(jié)知識點(diǎn)左痢。古語: 學(xué)而時(shí)習(xí)之靡羡。
反思了很多:也清楚認(rèn)識到自己的一些優(yōu)點(diǎn),有技術(shù)熱情俊性,愛好學(xué)習(xí)略步。很好的邏輯思維。溝通能力定页。相信只要堅(jiān)持努力趟薄。一定能獲得好的結(jié)果。也給自己打打氣典徊。共勉之杭煎。
作者:AceDong
鏈接:https://juejin.im/post/5b3c40f4e51d45191a0d0aae
來源:掘金
著作權(quán)歸作者所有恩够。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處羡铲。