面試題



一攒射。送分題

1.冒泡排序


二。拓展題

1.內(nèi)存管理 側(cè)重點(diǎn)是mrc下的內(nèi)存管理機(jī)制

MRC,即Manual Reference Counting,在MRC下,我們根據(jù)對(duì)象的引用計(jì)數(shù)器來(lái)進(jìn)行內(nèi)存管理的.每個(gè)對(duì)象剛被創(chuàng)建的時(shí)候,默認(rèn)的引用計(jì)數(shù)器為1,當(dāng)引用計(jì)數(shù)器為0的時(shí)候,該對(duì)象就被銷毀.我們可以把retain,alloc,new,copy看做是對(duì)引用計(jì)數(shù)+1操作,需要在適當(dāng)?shù)奈恢谜{(diào)用release或者autorelease使其-1保證沒有內(nèi)存泄漏. 內(nèi)存管理的原則,誰(shuí)創(chuàng)建,誰(shuí)release;誰(shuí)retain,誰(shuí)release.

2.多線程 側(cè)重點(diǎn)是gcd中同步異步還有queue的類型 dispatch_group
在線程中做線程安全用到的方式 同步鎖等等

一、術(shù)語(yǔ):同步、異步、并發(fā)耕餐、串行
1、同步和異步?jīng)Q定了要不要開啟新的線程
同步:在當(dāng)前線程執(zhí)行,不開啟新線程
dispatch_sync辟狈,同步操作肠缔,派發(fā)到任何隊(duì)列,都不會(huì)開啟新線程哼转。
異步:在新的線程中執(zhí)行任務(wù)明未,具備開啟新線程的能力
dispatch_async,異步操作壹蔓,會(huì)創(chuàng)建一個(gè)線程亚隅。如果派發(fā)到主線程中,則會(huì)在主線程中執(zhí)行庶溶。
2煮纵、并發(fā)和串行決定了任務(wù)的執(zhí)行方式
并發(fā)隊(duì)列 :多個(gè)任務(wù)并發(fā)(同時(shí))執(zhí)行
串行隊(duì)列 :一個(gè)任務(wù)執(zhí)行完畢后,再執(zhí)行下一個(gè)任務(wù)
特殊隊(duì)列主隊(duì)列 : 用來(lái)執(zhí)行主線程上的操作任務(wù)

3.runloop 側(cè)重點(diǎn)是runloop的幾種類型以及與NSTimer的結(jié)合

4.跟音視頻的結(jié)合偏螺,如何實(shí)現(xiàn)一個(gè)視頻播放進(jìn)度精準(zhǔn)的播放時(shí)間顯示行疏?

  1. 視頻時(shí)間戳
    pts = inc++ *(1000/fps); 其中inc是一個(gè)靜態(tài)的,初始值為0套像,每次打完時(shí)間戳inc加1.
    在ffmpeg酿联,中的代碼
    pkt.pts= m_nVideoTimeStamp++ * (m_VCtx->time_base.num * 1000 / m_VCtx->time_base.den)
  1. 音頻時(shí)間戳
    pts = inc++ * (frame_size * 1000 / sample_rate)
    在ffmpeg中的代碼為
    pkt.pts= m_nAudioTimeStamp++ * (m_ACtx->frame_size * 1000 / m_ACtx->sample_rate);

5.如何實(shí)現(xiàn)一個(gè)具有緩存上限、緩存清除的內(nèi)存緩存模型

內(nèi)存中緩存
內(nèi)存中緩存時(shí)夺巩,使用一個(gè)NSMutabledictionary存儲(chǔ)key-value值贞让,
當(dāng),存緩存時(shí)柳譬,使用 setObject:forKey的方法存對(duì)象喳张,讀取時(shí)使用
objectForKey:讀取對(duì)象
磁盤中緩存
內(nèi)存中存儲(chǔ)了一個(gè)key值的value之后,需要在磁盤中保存此份對(duì)象美澳。首先將該對(duì)象通過(guò)歸檔轉(zhuǎn)變成一個(gè)NSData销部,然后根據(jù)關(guān)鍵字創(chuàng)建磁盤中的文件,將該數(shù)據(jù)NSData寫入該文件中即可制跟。
對(duì)于在NSMutableiDictionary中未曾讀到對(duì)象時(shí)舅桩,可以根據(jù)俄key索引本地磁盤,如果存在該文件雨膨,那么將該文件通過(guò)解檔還原成對(duì)象擂涛,同時(shí)在NSMutabledictionary中存儲(chǔ)一次該對(duì)象即可。

6.導(dǎo)致內(nèi)存crash的問題都有哪些類型

一.訪問了一個(gè)已經(jīng)被釋放的對(duì)象
二聊记、訪問數(shù)組類對(duì)象越界或插入了空對(duì)象
三撒妈、訪問了不存在的方法
四、字節(jié)對(duì)齊
五甥雕、堆棧溢出
六踩身、多線程并發(fā)操作

7.如何獲取當(dāng)前設(shè)備的幀率

CADisplayLink是一個(gè)定時(shí)器,是一個(gè)刷新頻率和屏幕刷新率相同的定時(shí)器社露。
我們可以通過(guò)這個(gè)來(lái)計(jì)算當(dāng)前幀數(shù)

8.如何監(jiān)測(cè)當(dāng)前頁(yè)面的卡頓

主要思路:通過(guò)監(jiān)測(cè)Runloop的kCFRunLoopAfterWaiting挟阻,用一個(gè)子線程去檢查,一次循環(huán)是否時(shí)間太長(zhǎng)峭弟。其中主要涉及到了runloop的原理附鸽。關(guān)于整個(gè)原理:深入理解RunLoop講解的比較仔細(xì)。



三瞒瘸。技術(shù)題

1.Runtime里面坷备,isa指針的指向問題?

IMP指針是指向?qū)崿F(xiàn)函數(shù)的指針,通過(guò)SEL取得IMP,objc_msgSend來(lái)執(zhí)行實(shí)現(xiàn)方法

2.Runtime里面SEL和IMP的區(qū)別是什么情臭?

3.UITableView性能優(yōu)化省撑,尤其是滑動(dòng)時(shí)赌蔑,引申出GPU與CPU的一些討論。

SEL:類成員的方法指針竟秫,不同于C中的函數(shù)指針娃惯,SEL只是一個(gè)編號(hào)。
IMP: 函數(shù)指針肥败,指向我們定義的函數(shù)

4.UIView與CALayer的區(qū)別趾浅?

1.首先UIView可以響應(yīng)事件,Layer不可以.
2.View和CALayer的Frame映射及View如何創(chuàng)建CALayer.
3.UIView主要是對(duì)顯示內(nèi)容的管理而 CALayer 主要側(cè)重顯示內(nèi)容的繪制馒稍。
4.在做 iOS 動(dòng)畫的時(shí)候皿哨,修改非 RootLayer的屬性(譬如位置、背景色等)會(huì)默認(rèn)產(chǎn)生隱式動(dòng)畫纽谒,而修改UIView則不會(huì)证膨。

5.RunLoop的幾種Mode,子線程有runloop么佛舱?

3種

6.多線程的同步機(jī)制椎例,GCD除了信號(hào)量,還有哪種同步機(jī)制请祖。引申出dispatch_barrier_async订歪。

我們使用GCD的時(shí)候如何讓線程同步,目前我能想到的就三種
1.dispatch_group
2.dispatch_barrier
3.dispatch_semaphore

dispatch_group_async(group, queue, ^{   
            NSLog(@"%i",i);   
            sleep(2);   
// 每次發(fā)送信號(hào)則semaphore會(huì)+1肆捕,
            dispatch_semaphore_signal(semaphore);   
        });   

7.NSTimer在不同runloop里面的作用刷晋?

NSTimer添加到Runloop中,但是不運(yùn)行
在iOS多線程中慎陵,每一個(gè)線程都有一個(gè)Runloop眼虱,但是只有主線程的Runloop默認(rèn)是打開的,其他子線程也就是我們創(chuàng)建的線程的Runloop默認(rèn)是關(guān)閉的席纽,需要我們手動(dòng)運(yùn)行捏悬。
我們可以通過(guò)[NSRunLoop currentRunLoop]來(lái)獲得當(dāng)前線程的Runloop,并且調(diào)用[runloop addTimer:timer forMode:NSDefaultRunLoopMode]方法將定時(shí)器添加到Runloop中润梯,最后一定不要忘記調(diào)用Runloop的run方法將當(dāng)前Runloop開啟过牙,否則NSTimer永遠(yuǎn)也不會(huì)運(yùn)行。

8.觸摸事件響應(yīng)鏈和UIResponder

在使用App過(guò)程中纺铭,需要響應(yīng)各種事件寇钉,在IOS中不是所有對(duì)象都可以響應(yīng)事件,只有繼承了UIResponder的對(duì)象才能接收并處理事件舶赔。我們稱之為“響應(yīng)者對(duì)象”扫倡,
UIApplication、UIViewController竟纳、UIView都繼承自UIResponder撵溃,因此它們都是響應(yīng)者對(duì)象疚鲤,都能夠接收并處理事件

9.autorelease pool是什么?簡(jiǎn)述原理

10.KVO的內(nèi)部實(shí)現(xiàn)征懈?

kvo石咬,全稱Key-Value Observing,它提供了一種方法,當(dāng)對(duì)象某個(gè)屬性發(fā)生改變時(shí)卖哎,允許監(jiān)聽該屬性值變化的對(duì)象可以接受到通知,然后通過(guò)kvo的方法響應(yīng)一些操作删性。
Objective-C 中有兩種使用鍵值觀察的方式:手動(dòng)或自動(dòng)亏娜,此外還支持注冊(cè)依賴鍵(即一個(gè)鍵依賴于其他鍵,其他鍵的變化也會(huì)作用到該鍵)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蹬挺,一起剝皮案震驚了整個(gè)濱河市维贺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌巴帮,老刑警劉巖溯泣,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異榕茧,居然都是意外死亡瓣俯,警方通過(guò)查閱死者的電腦和手機(jī)宿百,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人湾碎,你說(shuō)我怎么就攤上這事≡樱” “怎么了眠冈?”我有些...
    開封第一講書人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)缎讼。 經(jīng)常有香客問我收夸,道長(zhǎng),這世上最難降的妖魔是什么血崭? 我笑而不...
    開封第一講書人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任卧惜,我火速辦了婚禮,結(jié)果婚禮上功氨,老公的妹妹穿的比我還像新娘序苏。我一直安慰自己,他們只是感情好捷凄,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開白布忱详。 她就那樣靜靜地躺著,像睡著了一般跺涤。 火紅的嫁衣襯著肌膚如雪匈睁。 梳的紋絲不亂的頭發(fā)上监透,一...
    開封第一講書人閱讀 51,190評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音航唆,去河邊找鬼胀蛮。 笑死,一個(gè)胖子當(dāng)著我的面吹牛糯钙,可吹牛的內(nèi)容都是我干的粪狼。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼再榄,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼享潜!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起剑按,我...
    開封第一講書人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤疾就,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后艺蝴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吴趴,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了锣枝。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片厢拭。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖撇叁,靈堂內(nèi)的尸體忽然破棺而出供鸠,到底是詐尸還是另有隱情陨闹,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布寨闹,位于F島的核電站,受9級(jí)特大地震影響君账,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一闻牡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧罩润,春花似錦翼馆、人聲如沸割以。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至魔吐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間酬姆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工骨宠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留相满,地道東北人层亿。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓立美,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親建蹄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來(lái)就是把...
    Dove_iOS閱讀 27,139評(píng)論 30 470
  • ———————————————回答好下面的足夠了---------------------------------...
    恒愛DE問候閱讀 1,716評(píng)論 0 4
  • 史上最全的iOS面試題及答案 iOS面試小貼士———————————————回答好下面的足夠了----------...
    Style_偉閱讀 2,352評(píng)論 0 35
  • iOS面試小貼士 ———————————————回答好下面的足夠了------------------------...
    不言不愛閱讀 1,976評(píng)論 0 7
  • 多線程劲腿、特別是NSOperation 和 GCD 的內(nèi)部原理。運(yùn)行時(shí)機(jī)制的原理和運(yùn)用場(chǎng)景。SDWebImage的原...
    LZM輪回閱讀 2,007評(píng)論 0 12