點(diǎn)贊再看矾睦,養(yǎng)成習(xí)慣,
白嫖不好规个,歡迎大家關(guān)注我面試小專欄 :?iOS中高級(jí)進(jìn)階之路?有我準(zhǔn)備的一線大廠面試資料和簡歷模板,歡迎Star姓建!
畢業(yè)好幾年了诞仓,上周發(fā)送了簡歷給騰訊,參加了騰訊面試速兔。具體部門這邊就不說了墅拭。這次面試還是收獲到了很多。
?一面電話面試:
面試官主要是針對(duì)iOS相關(guān)的基礎(chǔ)問題涣狗。
1.先簡單自我介紹一下自己
2.對(duì)mrc和arc的理解
3.談?wù)剬?duì)自動(dòng)釋放池的理解
4.自動(dòng)釋放池在mrc和arc區(qū)別
5.多層自動(dòng)釋放池嵌套的對(duì)象在哪一層釋放
6.對(duì)于block谍婉,理解舒憾,mrc和arc下有什么區(qū)別,使用注意事項(xiàng)
7.對(duì)于深拷貝和淺拷貝的理解
8.對(duì)于strong weak,atomic等等理解
9.weak原理
10.如果屬性完全不加修飾詞入weak探遵,atomic,系統(tǒng)會(huì)怎么處理
11.簡述下block的實(shí)現(xiàn)
12.描述下IM系統(tǒng)如何保證消息不丟
13.IM數(shù)據(jù)庫如何設(shè)計(jì)表
14.C++引用和指針有什么區(qū)別
15.Http協(xié)議30x的錯(cuò)誤是什么
16.談?wù)勀愣畆unloop得理解:由淺入深
17.談?wù)剬?duì)多線程理解:由淺入深
18.談?wù)刢ategory和extension區(qū)別藏雏,系統(tǒng)如何底層實(shí)現(xiàn)category
19.談?wù)勏⑥D(zhuǎn)發(fā)機(jī)制實(shí)現(xiàn)
20.談?wù)勈录憫?yīng)鏈掘殴,如何響應(yīng)view之外的事件
21.界面性能優(yōu)化
整個(gè)面試大約1個(gè)半小時(shí)最疆。整體上,回答的還算OK服爷,自動(dòng)釋放池這塊,不夠清楚底層實(shí)現(xiàn)笼踩。另外atomic是在屬性沒有寫的情況下系統(tǒng)默認(rèn)的挟冠。Block的底層實(shí)現(xiàn)也表達(dá)的不夠準(zhǔn)確于购。
一面之后過了幾天知染,給了二面通知止潘。
?二面視頻面試:
這次面試官相對(duì)于一面泥栖,更加側(cè)重于過往項(xiàng)目吧享。
1.開頭都是簡短的自我介紹 2.聊一聊過往項(xiàng)目中你覺得收獲最大的一個(gè)模塊殊鞭。
突然遇到這個(gè)問題操灿,心理是有點(diǎn)懵逼的呀庶喜,我不禁反想了一下斥扛,過去這些個(gè)項(xiàng)目匾灶,零零散散收獲了不少知識(shí)和經(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í)面試官都是由淺入深的菜枷,如果這邊回答的不夠深入。那么后面也就不會(huì)有更深入的探討了叁丧。
3.? ? ? 上個(gè)項(xiàng)目中存在視頻裁剪啤誊,錄制等功能。面試官對(duì)這塊有些興趣歹袁,就聊到了視頻裁剪的實(shí)現(xiàn)坷衍,因?yàn)槲覀冺?xiàng)目中使用了ffmpeg做的裁剪功能。包括視頻下載条舔,數(shù)據(jù)裁剪封裝枫耳,引申聊到了邊預(yù)覽邊裁? ? 剪,因?yàn)槲抑暗捻?xiàng)目并沒有做到預(yù)覽裁剪這塊孟抗。也就沒有深入聊下去了迁杨。期間簡單談到了rstp協(xié)議,和HLS凄硼,rtmp等協(xié)議的對(duì)比铅协,信令協(xié)議。雖然之前都有看過協(xié)議的大致實(shí)現(xiàn)和預(yù)覽摊沉,但是實(shí)際 使用的是SDK狐史,沒有實(shí)踐加持。這部分知識(shí)是很容易忘記的。大致聊了下總體差別骏全。
4.? ? ? ?項(xiàng)目中有用到過DLNA投屏協(xié)議說來又是慚愧苍柏,自己完整做過的項(xiàng)目,過去了兩年姜贡,居然連流程试吁,協(xié)議都只是零零散散的記起來了,很勉強(qiáng)的說出了大概實(shí)現(xiàn)流程楼咳。知道最后才記起來是soap協(xié)議熄捍。當(dāng)初為了做這個(gè)可是研究了整整兩周的。面試官應(yīng)該也實(shí)現(xiàn)過這個(gè)需求母怜,提到了視頻盒子斷線如何檢測(cè)做處理余耽,什么原因?qū)е碌摹S捎谥拔覀兊漠a(chǎn)品需求比較簡單苹熏,沒有特別完善宾添。這里我也只能說了大概。
5.? ? ? ? 項(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)在有四只老鼠,喝了有毒的水之后趋艘,第二天就會(huì)死疲恢。如何在第二天就可以判斷出哪個(gè)瓶子有毒答:開始我想到的是常規(guī)思路二分法,717瓷胧,和面試官說了显拳,發(fā)現(xiàn)四只老鼠根本不夠,面試官友好的提示從老鼠面去想搓萧,這時(shí)候很快想到了一個(gè)老鼠有死和不死杂数,也就0和1兩個(gè)狀態(tài),四只老鼠有16個(gè)組合瘸洛,正好是足夠的揍移。但是怎么分配瓶子,還沒想好反肋,演算了一會(huì)兒那伐,因?yàn)槊嬖嚬龠@邊時(shí)間有限,就說思路是正確的石蔗。下面有興趣在看怎么分哈喧锦。面試就到此結(jié)束了。
二面持續(xù)了大約一個(gè)小時(shí)多一點(diǎn)抓督。 二面自己感覺了很多欠缺燃少,不夠深入。
?面試總結(jié)
騰訊的面試官都非常的友好铃在,邏輯性非常強(qiáng)阵具。綜合素質(zhì)很高碍遍。面試過程中雖然針對(duì)的都是技術(shù)問題,但是考察的包含了邏輯思維和產(chǎn)品思維以及溝通能力等綜合素質(zhì)阳液。特別是二面怕敬。
認(rèn)識(shí)到了自己的不足:
1. 不夠極客精神:還是需求驅(qū)動(dòng),之前的項(xiàng)目很多設(shè)計(jì)優(yōu)化因?yàn)閷?duì)產(chǎn)品的需求沒有那么高精度帘皿,遇到痛點(diǎn)的時(shí)候:僅僅做了初步的探討东跪,沒有形成完整的閉環(huán),
往往是做了一定的優(yōu)化滿足了需求就結(jié)束整個(gè)過程了鹰溜。這對(duì)于自我的成長是很不好的虽填。比如一個(gè)API了解到百分之70,沒有到100.
2. 已有項(xiàng)目知識(shí)面深度不夠:項(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)火候
怎么改善提高
1.多寫B(tài)log分享,東西會(huì)做如孝,和能寫出來是兩個(gè)層面宪哩。即使網(wǎng)上已經(jīng)有很多實(shí)現(xiàn)了。消化好之后第晰,用自己的思路表達(dá)出來锁孟,也有很大提高
2.遇到問題,無論是項(xiàng)目還是自己實(shí)踐茁瘦,都要多問幾個(gè)為什么品抽,不能淺嘗輒止,站在產(chǎn)品角度腹躁。從原理層面理解問題,最重要是給出解決問題方案南蓬。demo不等于工程纺非。
3.階段性總結(jié)知識(shí)點(diǎn)。古語: 學(xué)而時(shí)習(xí)之赘方。
反思了很多:也清楚認(rèn)識(shí)到自己的一些優(yōu)點(diǎn)烧颖,有技術(shù)熱情,愛好學(xué)習(xí)窄陡。很好的邏輯思維炕淮。溝通能力。相信只要堅(jiān)持努力跳夭。一定能獲得好的結(jié)果涂圆。也給自己打打氣。共勉之币叹。
其他面經(jīng)
1.直擊2020——iOS 面試題大全(補(bǔ)充完整版)
2.“新”攜程润歉,阿里,騰訊iOS面試常見問題合集(附答案)
4.騰訊&阿里&美團(tuán)&快手&字節(jié)等10公司面經(jīng)
6.最新阿里騰訊頭條美團(tuán)等iOS面試總結(jié)