畢業(yè)好幾年了,上周發(fā)送了簡(jiǎn)歷給騰訊,參加了騰訊面試束亏。具體部門(mén)這邊就不說(shuō)了。這次面試還是收獲到了很多阵具。
一面電話面試:
面試官主要是針對(duì)iOS相關(guān)的基礎(chǔ)問(wèn)題碍遍。
先簡(jiǎn)單自我介紹一下自己
對(duì)mrc和arc的理解 此處詳解
談?wù)剬?duì)自動(dòng)釋放池的理解 此處詳解
自動(dòng)釋放池在mrc和arc區(qū)別 此處詳解
多層自動(dòng)釋放池嵌套的對(duì)象在哪一層釋放 此處詳解
對(duì)于block,理解阳液,mrc和arc下有什么區(qū)別怕敬,使用注意事項(xiàng) 此處詳解
對(duì)于深拷貝和淺拷貝的理解 此處詳解
對(duì)于strong weak,atomic等等理解
weak原理
如果屬性完全不加修飾詞入weak帘皿,atomic东跪,系統(tǒng)會(huì)怎么處理
簡(jiǎn)述下block的實(shí)現(xiàn)
描述下IM系統(tǒng)如何保證消息不丟
IM數(shù)據(jù)庫(kù)如何設(shè)計(jì)表
C++引用和指針有什么區(qū)別
Http協(xié)議30x的錯(cuò)誤是什么
談?wù)勀愣畆unloop得理解:由淺入深
談?wù)剬?duì)多線程理解:由淺入深
談?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是在屬性沒(méi)有寫(xiě)的情況下系統(tǒng)默認(rèn)的。Block的底層實(shí)現(xiàn)也表達(dá)的不夠準(zhǔn)確桑驱。
一面之后過(guò)了幾天竭恬,給了二面通知。
二面視頻面試:
這次面試官相對(duì)于一面熬的,更加側(cè)重于過(guò)往項(xiàng)目痊硕。
1.開(kāi)頭都是簡(jiǎn)短的自我介紹 2.聊一聊過(guò)往項(xiàng)目中你覺(jué)得收獲最大的一個(gè)模塊。
突然遇到這個(gè)問(wèn)題押框,心理是有點(diǎn)懵逼的呀岔绸,我不禁反想了一下,過(guò)去這些個(gè)項(xiàng)目橡伞,零零散散收獲了不少知識(shí)和經(jīng)驗(yàn)盒揉,可是具體到哪一個(gè)模塊,完整的思考還是沒(méi)有過(guò)的兑徘。
答: 就說(shuō)了上個(gè)項(xiàng)目做類(lèi)似朋友圈的優(yōu)化思路刚盈,談到了空間換時(shí)間,緩存挂脑,渲染相關(guān)的技術(shù)點(diǎn)藕漱。
不得不驚嘆騰訊的面試官的邏輯條理,很快抓住了問(wèn)題的本質(zhì)崭闲。
需求痛點(diǎn):界面卡頓肋联,體驗(yàn)不好 解決方案:探索的思路-》解決方案。
該模塊引申到的新話題還涉及到了增量更新镀脂,內(nèi)存緩存牺蹄,本地緩存。
細(xì)節(jié)上還談到了富文本繪制薄翅,Coretext框架的使用沙兰,哎,說(shuō)來(lái)慚愧翘魄,上次使用coretext已經(jīng)是兩年前鼎天,連框架的核心API都已經(jīng)不記得了。再加上項(xiàng)目中使用的是YYLabel的開(kāi)源框架暑竟。最后只能憑借印象大概說(shuō)了下繪制的流程斋射,其實(shí)面試官都是由淺入深的育勺,如果這邊回答的不夠深入。那么后面也就不會(huì)有更深入的探討了罗岖。
3.上個(gè)項(xiàng)目中存在視頻裁剪涧至,錄制等功能。 面試官對(duì)這塊有些興趣桑包,就聊到了視頻裁剪的實(shí)現(xiàn)南蓬,因?yàn)槲覀冺?xiàng)目中使用了ffmpeg做的裁剪功能。包括視頻下載哑了,數(shù)據(jù)裁剪封裝赘方,引申聊到了邊預(yù)覽邊裁剪,因?yàn)槲抑暗捻?xiàng)目并沒(méi)有做到預(yù)覽裁剪這塊弱左。也就沒(méi)有深入聊下去了窄陡。期間簡(jiǎn)單談到了rstp協(xié)議,和HLS拆火,rtmp等協(xié)議的對(duì)比跳夭,信令協(xié)議。雖然之前都有看過(guò)協(xié)議的大致實(shí)現(xiàn)和預(yù)覽榜掌,但是實(shí)際使用的是SDK优妙,沒(méi)有實(shí)踐加持。這部分知識(shí)是很容易忘記的憎账。大致聊了下總體差別。
4.項(xiàng)目中有用到過(guò)DLNA投屏協(xié)議 說(shuō)來(lái)又是慚愧卡辰,自己完整做過(guò)的項(xiàng)目胞皱,過(guò)去了兩年,居然連流程九妈,協(xié)議都只是零零散散的記起來(lái)了反砌,很勉強(qiáng)的說(shuō)出了大概實(shí)現(xiàn)流程。知道最后才記起來(lái)是soap協(xié)議萌朱。當(dāng)初為了做這個(gè)可是研究了整整兩周的宴树。面試官應(yīng)該也實(shí)現(xiàn)過(guò)這個(gè)需求,提到了視頻盒子斷線如何檢測(cè)做處理晶疼,什么原因?qū)е碌木票帷S捎谥拔覀兊漠a(chǎn)品需求比較簡(jiǎn)單,沒(méi)有特別完善翠霍。這里我也只能說(shuō)了大概锭吨。
5.項(xiàng)目做過(guò)視頻播放需求,使用的AVPlayer框架(重點(diǎn)聊) 面試官問(wèn)到寒匙,AVPlayer怎么監(jiān)聽(tīng)視頻緩沖狀態(tài)的零如,有哪幾種狀態(tài)。說(shuō)來(lái)又是慚愧,我只記得是KVO監(jiān)聽(tīng)的考蕾。具體的API已經(jīng)記不清了祸憋。 接著面試官問(wèn)到這個(gè)需求遇到過(guò)哪些坑,怎么解決的肖卧。 這個(gè)還真的有夺衍,首先是回調(diào)播放進(jìn)度在拖動(dòng)時(shí)候錯(cuò)亂,加載某些小視頻的適配喜命,首幀出圖很慢沟沙。KVO的模式不靈活。緩沖進(jìn)度不受我們控制壁榕。短視頻可能直接迅速緩沖到底矛紫。 還是之前的思路 需求痛點(diǎn)有了 解決方案:探索的思路-》解決方案。 不得不說(shuō)之前做的產(chǎn)品牌里,都是需求驅(qū)動(dòng)颊咬,解決了需求,很多時(shí)候就沒(méi)有極客精神牡辽,在深入的去探討喳篇。這塊真的是差!
發(fā)散問(wèn)到了:如果網(wǎng)絡(luò)不好态辛,首幀出圖之后麸澜,如何優(yōu)化后續(xù)播放不卡頓 當(dāng)時(shí)已經(jīng)一臉懵逼了:就提到了可以適當(dāng)加大緩沖區(qū),等到足夠的I幀數(shù)據(jù)再開(kāi)始播放奏黑。
甚至連常規(guī)的碼率切換思路都沒(méi)想到炊邦。作為做音視頻相關(guān)產(chǎn)品的我太不應(yīng)該了。
6.項(xiàng)目聊完了之后熟史,又追問(wèn)了iOS的一些基礎(chǔ)問(wèn)題馁害,屬性和成員變量區(qū)別,strong蹂匹,atomic關(guān)鍵字碘菜,怎么理解runloop,runloop有幾種狀態(tài)等等限寞。
7.最后給出了一個(gè)非常有意思的算法題
有15個(gè)瓶子忍啸,其中最多有一瓶有毒,現(xiàn)在有四只老鼠昆烁,喝了有毒的水之后吊骤,第二天就會(huì)死。如何在第二天就可以判斷出哪個(gè)瓶子有毒 答:開(kāi)始我想到的是常規(guī)思路二分法静尼,717白粉,和面試官說(shuō)了传泊,發(fā)現(xiàn)四只老鼠根本不夠,面試官友好的提示從老鼠面去想鸭巴,這時(shí)候很快想到了一個(gè)老鼠有死和不死眷细,也就0和1兩個(gè)狀態(tài),四只老鼠有16個(gè)組合鹃祖,正好是足夠的溪椎。但是怎么分配瓶子,還沒(méi)想好恬口,演算了一會(huì)兒校读,因?yàn)槊嬖嚬龠@邊時(shí)間有限,就說(shuō)思路是正確的祖能。下面有興趣在看怎么分哈歉秫。面試就到此結(jié)束了。
二面持續(xù)了大約一個(gè)小時(shí)多一點(diǎn)养铸。 二面自己感覺(jué)了很多欠缺雁芙,不夠深入。
面試總結(jié)
騰訊的面試官都非常的友好钞螟,邏輯性非常強(qiáng)兔甘。綜合素質(zhì)很高。面試過(guò)程中雖然針對(duì)的都是技術(shù)問(wèn)題鳞滨,但是考察的包含了邏輯思維和產(chǎn)品思維以及溝通能力等綜合素質(zhì)洞焙。特別是二面。
認(rèn)識(shí)到了自己的不足:
1.不夠極客精神:還是需求驅(qū)動(dòng)太援,之前的項(xiàng)目很多設(shè)計(jì)優(yōu)化因?yàn)閷?duì)產(chǎn)品的需求沒(méi)有那么高精度闽晦,遇到痛點(diǎn)的時(shí)候:僅僅做了初步的探討,沒(méi)有形成完整的閉環(huán)
往往是做了一定的優(yōu)化滿(mǎn)足了需求就結(jié)束整個(gè)過(guò)程了提岔。這對(duì)于自我的成長(zhǎng)是很不好的。比如一個(gè)API了解到百分之70笋敞,沒(méi)有到100.
2. 已有項(xiàng)目知識(shí)面深度不夠:項(xiàng)目中使用到了某些API碱蒙,第一反應(yīng)是先去看Demo,完成需求夯巷,事實(shí)上例如僅僅是一個(gè)簡(jiǎn)單視頻播放赛惩,可能調(diào)用API很簡(jiǎn)單就可以做到,但是中間包含的卻很多趁餐,從網(wǎng)絡(luò)協(xié)議喷兼,到視頻解封裝,編解碼后雷,渲染季惯。音頻編解碼播放吠各。
雖然每個(gè)環(huán)節(jié)都有去學(xué)習(xí),也都知道流程勉抓,但是這是不夠贾漏。要深入進(jìn)去。即使自己的項(xiàng)目沒(méi)有這塊實(shí)踐需求藕筋。也要自我驅(qū)動(dòng)去做纵散。
3.自我總結(jié)欠缺:以前都是渾渾噩噩的快樂(lè)開(kāi)發(fā),也自學(xué)了不少隐圾。每個(gè)項(xiàng)目伍掀,或者每個(gè)自我學(xué)習(xí)的過(guò)程走一段,都應(yīng)該站在更高點(diǎn)去總結(jié)一下暇藏。
例如項(xiàng)目蜜笤,要站在產(chǎn)品角度,自我學(xué)習(xí)叨咖,要站在整體框架角度瘩例。否則學(xué)習(xí)到的東西一段時(shí)間不用就忘記了。高度也不夠甸各。沒(méi)有完全消化透垛贤。感覺(jué)什么都懂一些,但是什么都差一點(diǎn)火候
??????歡迎大家加入群組(IT_大前端技術(shù)交流群)趣倾,技術(shù)交流群