ios kvo 要引入_騰訊社招iOS面試記錄

畢業好幾年了,上周發送了簡歷給騰訊,參加了騰訊面試。具體部門這邊就不說了。這次面試還是收獲到了很多。
一面電話面試:
面試官主要是針對iOS相關的基礎問題。
先簡單自我介紹一下自己
對mrc和arc的理解
談談對自動釋放池的理解
自動釋放池在mrc和arc區別
多層自動釋放池嵌套的對象在哪一層釋放
對于block,理解,mrc和arc下有什么區別,使用注意事項
對于深拷貝和淺拷貝的理解
對于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.

已有項目知識面深度不夠:項目中使用到了某些API,第一反應是先去看Demo,完成需求,事實上例如僅僅是一個簡單視頻播放,可能調用API很簡單就可以做到,但是中間包含的卻很多,從網絡協議,到視頻解封裝,編解碼,渲染。音頻編解碼播放。

雖然每個環節都有去學習,也都知道流程,但是這是不夠。要深入進去。即使自己的項目沒有這塊實踐需求。也要自我驅動去做。
3.自我總結欠缺:以前都是渾渾噩噩的快樂開發,也自學了不少。每個項目,或者每個自我學習的過程走一段,都應該站在更高點去總結一下。
例如項目,要站在產品角度,自我學習,要站在整體框架角度。否則學習到的東西一段時間不用就忘記了。高度也不夠。沒有完全消化透。感覺什么都懂一些,但是什么都差一點火候
怎么改善提高
多寫Blog分享,東西會做,和能寫出來是兩個層面。即使網上已經有很多實現了。消化好之后,用自己的思路表達出來,也有很大提高
遇到問題,無論是項目還是自己實踐,都要多問幾個為什么,不能淺嘗輒止,站在產品角度。從原理層面理解問題,最重要是給出解決問題方案。demo不等于工程。
階段性總結知識點。古語: 學而時習之。
反思了很多:也清楚認識到自己的一些優點,有技術熱情,愛好學習。很好的邏輯思維。溝通能力。相信只要堅持努力。一定能獲得好的結果。也給自己打打氣。共勉之。
本文為第三方轉載。
原文鏈接:

騰訊社招iOS面試記錄?mp.weixin.qq.com
6179e02ee1eb3081b279ac3e8e07671f.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/531859.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/531859.shtml
英文地址,請注明出處:http://en.pswp.cn/news/531859.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

動態設置html字號,動態設置html的font-size值 (適配文字大小)

PC端(function () {function setRootFontSize() {let rem, rootWidth;let rootHtml document.documentElement;//限制展現頁面的最小寬度rootWidth rootHtml.clientWidth < 1366 ? 1366 : rootHtml.clientWidth;// 19.2 設計圖尺寸寬 / 100( 設計圖的rem 100 )rem roo…

一個小例子對多態簡單的理解

class Parent{int age;String name;public Parent(String name, int age){this.name name;this.age age;}public void writeWay(){System.out.println("毛筆!");}}class Child extends Parent{int age;String name;//這里只說為了說明一個問題&#xff0c;其實完全…

運行shell腳本時怎么知道jdk路徑_Shell寫腳本關于ssh執行jar包,需要刷新JDK路徑的問題...

比如腳本中下面這一段ssh $i "java -jar /applog/$PROJECT/$APPNAME --server.port$SERVER_PORT >/dev/null 2>&1 &"免密登錄linux服務器&#xff0c;執行jar包&#xff0c;通過ssh執行java程序&#xff0c;涉及到一個找不到JDK路徑的問題&#xff0c;…

html 中加號的表示方法,CSS的+(加號)選擇器怎么用

在CSS中“”符號選擇器用于選擇緊跟在指定元素之后但不在特定元素內部的元素。下面本篇文章就來具體介紹一下&#xff0c;希望對大家有所幫助。“”符號選擇器在CSS中“”符號選擇器被稱為相鄰兄弟選擇器&#xff0c;用于選取在同一父元素下的&#xff0c;緊跟指定元素之后的另…

poj 1724ROADS(bfs和dfs做法)

1 /*2 dfs比較好想&#xff0c;就是測試數據的問題&#xff0c;導致在遍歷邊的時候要倒著遍歷才過&#xff01;3 */4 #include<iostream> 5 #include<cstdio>6 #include<cstring>7 #include<vector>8 #include<algorithm>9 #define Max 0x3f3f3f…

華為新系統 鴻蒙,旗艦CPU+鴻蒙OS!華為Mate家族重磅新品來襲

我們常說安卓平板的生態跟蘋果iPad有很大差距&#xff0c;不論是應用質量還是原生系統支持&#xff0c;蘋果都做的更好一些。可能也是因為這個原因&#xff0c;因此安卓平板&#xff0c;尤其是旗艦級別的平板至今除了三星之外&#xff0c;也就只有華為在做。作為安卓陣營兩大廠…

mysql中用來取余數的函數是_MySQL常用函數-單行處理函數-字符串處理函數(更新中...)...

本篇文章用到的數據庫表/* SQLyog Ultimate v12.09 (64 bit) MySQL - 5.7.23-log : Database - myemployees ********************************************************************* *//*!40101 SET NAMES utf8 */;/*!40101 SET SQL_MODE*/;/*!40014 SET OLD_UNIQUE_CHECKSUN…

HDU 1024Max Sum Plus Plus(最大m字段和)

/* 動態轉移方程&#xff1a;dp[i][j]max(dp[i-1]a[i], max(dp[t][j-1])a[i]) (j-1<t<i) 表示的是前i個數j個字段和的最大值是多少&#xff01; */ 1 #include<iostream> 2 #include<cstdio>3 #include<cstring>4 #define N 10000 5 using nam…

html盒子模型頁面居中,【靜態頁面架構】CSS之盒子模型

CSS架構盒子模型&#xff1b;以內容區(顯示文本和圖像)內邊距(內容區至邊距的距離)邊距(內容區的邊界)外邊距(元素的邊框之間的距離)1.邊距&#xff1b;border屬性&#xff1b;簡寫屬性用來設置邊距的上(top)右(right)下(bottom)左(left)。寬度&#xff0c;顏色和樣式div{width…

最強動畫制作人書包_聲優訪談丨戀與制作人動畫中配聲優訪談——夏磊

親愛的制作人們&#xff1a;距離戀與制作人動畫上線還有6天&#xff01;今天的中配聲優訪談嘉賓是在動畫中為許墨獻聲的夏磊老師~固定布局 工具條上設置固定寬高背景可以設置被包含可以完美對齊背景圖和文字以及制作自…

(單例設計模式中)懶漢式與餓漢式在多線程中的不同

/*目的&#xff1a;分析一下單例設計模式中&#xff0c;懶漢式與餓漢式在多線程中的不同&#xff01;開發時我們一般選擇餓漢式&#xff0c;因為它簡單明了&#xff0c;多線程中不會出現安全問題&#xff01;而餓漢式需要我們自己處理程序中存在的安全隱患&#xff0c;但是餓漢…

shiro修改html不生效,shiro中anon配置不生效

再配置shiro的時候&#xff0c;如下代碼要注意&#xff1a;1、下述代碼中必須是LinkedHashMap 而不能是HashMap。2、anon定義必須在authc之前否則anon定義不生效Beanpublic ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager){ShiroFilterFactor…

codesys com庫_CoDeSys官方系統庫在線下載,替換國內下載服務器教程

歡迎加入工控分享技術服務社區推薦閱讀Codesys學習資料大全Codesys控制器關于CANopen總線的詳細應用說明當你軟件報以下錯誤&#xff0c;你可以直接下載&#xff0c;如果下載不成功&#xff0c;可以換個網絡試一試&#xff0c;或者進行下面的操作。由于國內網絡問題&#xff0c…

centos7恢復mysql數據庫_MySQL數據庫升級遷移填坑記

原庫&#xff1a;*.*.101.73/74 系統環境: Suse 12.4MySQL: 5.7.29新庫&#xff1a;*.*.110.46/47系統環境&#xff1a;CentOS7.7 64位MySQL版本: 5.7.30[一、數據庫升級遷移場景]因業務側在*.*.101.73/74 mysql數據庫服務器上部署了java應用程序、HadoopHbase數據庫等大數據…

so把asp頁面生成靜態的html,23、asp系列課程--server.URLEncode方法和server.HTMLEncode方法...

作者&#xff1a;楊凡來自&#xff1a;楊凡博客地址&#xff1a;blog.sina.com.cn/aboutshisanserver.URLEncode方法和server.HTMLEncode方法可以對字符串進行編碼。我們一個一個的說。server.URLEncode可以對字符串進行URL編碼轉換&#xff0c;語法格式為&#xff1a;server.u…

poj 1905Expanding Rods

1 /*2 二分 幾何3 弧長L&#xff0c; 圓半徑R&#xff0c; 弧度 q&#xff0c; LR*q;4 二分&#xff1a; 弧度&#xff08;0~PI&#xff09; 或者 高度&#xff08;L/2~L&#xff09; 5 */6 #include<cstdio> 7 #include<iostream>8 #include<cmath>9…

java中同步嵌套引起的死鎖事例代碼

/*目的&#xff1a;自己寫一個由于同步嵌套引起的死鎖&#xff01;思路&#xff1a;多個線程在執行時&#xff0c;某一時刻&#xff0c;0-Thread綁定了LockA鎖&#xff0c;1-Thread綁定了LockB鎖&#xff01;當0-Thread要去綁定LockB鎖時 和 1-Thread要去綁定LockA鎖時都不能綁…

下列關于html5表單的多樣輸入方式,IT兄弟連 HTML5教程 HTML5表單 多樣的輸入類型1...

原標題&#xff1a;IT兄弟連 HTML5教程 HTML5表單 多樣的輸入類型1HTML5擁有多個新的表單輸入類型&#xff0c;這些新特性提供了更好的輸入控制和驗證。并不是所有的主瀏覽器都支持新的input類型&#xff0c;不過我們可以在所有的主瀏覽器中使用它們&#xff0c;即使不被支持&a…

v7000更換電池步驟_ups電源運行中是否可以更換電池?應如何操作呢

ups電源在日常使用中除了日常維護工作之外&#xff0c;對于使用達到一定年限的時候&#xff0c;內部使用的ups蓄電池就需要更換了&#xff0c;很多人以為ups不間段電源在工作的時候是可以跟換電池。其實&#xff0c;這個具體就需要看ups電源設計的原理&#xff0c;不同廠家設計…

poj 2031Building a Space Station(幾何判斷+Kruskal最小生成樹)

1 /*2 最小生成樹 幾何判斷3 Kruskal 球心之間的距離 - 兩個球的半徑 < 0 則說明是覆蓋的&#xff01;此時的距離按照0計算 4 */5 #include<iostream>6 #include<cstdio>7 #include<cstring>8 #include<cmath>9 #include<algorithm>…