課堂模擬面試試題

1、列舉一下 Cocoa/Cocoa Touch 中常見的幾種多線程方案的實(shí)現(xiàn),并談?wù)劧嗑€程安全的幾種解決辦法以及多線程安全怎么控制?多線程

A:

方案

| 方案 | 語言 | 線程生命周期</br>是否需要手動(dòng)管理 | 簡介 |
| :-: | :-: | :-: | :-: |
| pthread | C | 需要 | 通用的API</br>跨平臺(tái)/可移植 </br>使用難度大 |
| NSThread | OC | 需要 | 面向?qū)ο?lt;/br>可直接操作線程對(duì)象 |
| GCD | C | 不需要 | 充分利用CPU的多個(gè)核心</br>旨在代替NSThread |
| NSOperation | OC | 不需要 | 基于GCD </br>更加面向?qū)ο?</br>Apple 推薦使用|

線程安全

1> 只在主線程刷新訪問UI
2> 如果要防止資源搶奪,得用synchronized進(jìn)行加鎖保護(hù)
3> 如果異步操作要保證線程安全等問題, 盡量使用GCD(因?yàn)镚CD中有些函數(shù)默認(rèn)就是安全的)

2析校、什么情況下會(huì)發(fā)生內(nèi)存泄漏和內(nèi)存溢出?內(nèi)存管理

A:

當(dāng)程序在申請(qǐng)內(nèi)存后,沒有釋放已申請(qǐng)的內(nèi)存空間(例如一個(gè)對(duì)象或者變量使用完成后沒有釋放,這個(gè)對(duì)象一直占用著內(nèi)存),一次內(nèi)存泄露危害可以忽略,但內(nèi)存泄露堆積后果很嚴(yán)重,無論多少內(nèi)存,遲早會(huì)被占光.內(nèi)存泄露會(huì)最終會(huì)導(dǎo)致內(nèi)存溢出,導(dǎo)致程序崩潰,嚴(yán)重的可能無法上架 App Store.
當(dāng)程序在申請(qǐng)內(nèi)存時(shí),沒有足夠的內(nèi)存空間供其使用,出現(xiàn)out of memory;比如申請(qǐng)了一個(gè)int,但給它存了long才能存下的數(shù),那就是內(nèi)存溢出.

3婶熬、我們說的 Objective-C 是動(dòng)態(tài)運(yùn)行時(shí)語言,你是怎么理解這句話的?Foundation框架

A:

主要是將數(shù)據(jù)類型的確定由編譯時(shí),推遲到了運(yùn)行時(shí).
這個(gè)問題其實(shí)淺涉及到兩個(gè)概念,運(yùn)行時(shí)多態(tài).

簡單來說:
運(yùn)行時(shí)機(jī)制使我們直到運(yùn)行時(shí)才去決定一個(gè)對(duì)象的類別,以及調(diào)用該類別對(duì)象指定方法.
不同對(duì)象以自己的方式響應(yīng)相同的消息,這個(gè)能力叫做多態(tài).
意思就是假設(shè)動(dòng)物類(Animal)都擁有一個(gè)相同的對(duì)象方法 - eat; 那人類(Person)是屬于動(dòng)物的,狗(Dog)也屬于動(dòng)物,當(dāng)他們都繼承了 Animal 這個(gè)類后,各自實(shí)現(xiàn)各自的 - eat,但是調(diào)用時(shí)我們只需調(diào)用各自的 - eat 方法.也就是不同的對(duì)象以自己的方式響應(yīng)了相同的消息.因此也可以說,運(yùn)行時(shí)機(jī)制是多態(tài)的基礎(chǔ).

4雄可、簡單說一下 App的啟動(dòng)過程,(從 main 文件開始說起)Application

A:

程序啟動(dòng)分為兩類:

1.有storyboard
2.沒有storyboard

1.main函數(shù)
2.UIApplicationMain

  • 創(chuàng)建UIApplication對(duì)象
  • 創(chuàng)建UIApplication的delegate對(duì)象

3.根據(jù)Info.plist獲得最主要storyboard的文件名,加載最主要的storyboard有storyboard

  • 創(chuàng)建UIWindow
  • 創(chuàng)建和設(shè)置UIWindow的rootViewController
  • 顯示窗口

3.delegate對(duì)象開始處理(監(jiān)聽)系統(tǒng)事件沒有storyboard

  • 程序啟動(dòng)完畢的時(shí)候, 就會(huì)調(diào)用代理的
    application:didFinishLaunchingWithOptions:方法
  • application:didFinishLaunchingWithOptions:中創(chuàng)建UIWindow
  • 創(chuàng)建和設(shè)置UIWindow的rootViewController
  • 顯示窗口(方法makeKeyAndVisable)

程序正常退出時(shí),UIApplicationMain函數(shù)才會(huì)返回.

5、UIView 和 CALayer 之間的關(guān)系?

A:

UIView顯示在屏幕上歸功于CALayer,通過調(diào)用drawRect方法來渲染自身的內(nèi)容,調(diào)節(jié)CALayer屬性可以調(diào)整UIView的外觀,UIView繼承自UIResponder,CALayer不可以響應(yīng)用戶事件.
UIView是iOS系統(tǒng)中界面元素的基礎(chǔ),所有的界面元素都繼承自它.它內(nèi)部是由Core Animation來實(shí)現(xiàn)的,它真正的繪圖部分,是由一個(gè)叫CALayer(Core Animation Layer)的類來管理.UIView本身,更像是一個(gè)CALayer的管理器,訪問它的根繪圖和坐標(biāo)有關(guān)的屬性,如frame,bounds等,實(shí)際上內(nèi)部都是訪問它所在CALayer的相關(guān)屬性.
UIView有個(gè)layer屬性,可以返回它的主CALayer實(shí)例,UIView有一個(gè)layerClass方法,返回主layer所使用的類,UIView的子類可以通過重載這個(gè)方法,來讓UIView使用不同的CALayer來顯示.

6、談?wù)勀鉯OS開發(fā)中用到的設(shè)計(jì)模式設(shè)計(jì)模式

A:

常用的有四種:

1.單例模式(singleton)

  • UIApplication
  • UIScreen
  • NSNotificationCenter
  • NSFileManager
  • NSUserDefaults

2.工廠模式(factory method)
3.委托模式/代理模式(delegate)

  • AppDelegate

4.觀察者模式(observer)

  • KVO
  • 通知
8欧瘪、說說你平常是怎么使用第三方API的?框架

A:

  • 例如百度、高德匙赞、騰訊等大公司的Open API
  • github上別人發(fā)布的框架
  • 商業(yè)開發(fā)中需要注意License的授權(quán)范圍,一般如果是MIT佛掖、Apache、BSD等這些License是可以隨意使用涌庭、修改芥被、重構(gòu)、再發(fā)布等都是沒有問題的,需要注意的是GNU等一系列的License,這個(gè)License的框架,在商業(yè)開發(fā)中進(jìn)行使用的話,若沒有遵守協(xié)議內(nèi)容,可能會(huì)有被起訴的風(fēng)險(xiǎn).
  • 參考框架的README.md和example
  • 自己寫demo進(jìn)行測試
9坐榆、列舉一下熟悉的 iOS 第三方庫框架

A:

AFNetworking拴魄、ASIHTTPRequest、SDWebImage、YYWebImage匹中、MJExtension蚀狰、Masonry、SVProgressHUD等

10职员、開發(fā)過程中所使用到的查找和排序算法算法

A:

查找:
靜態(tài)查找

索引、順序表查找跛溉、有序表查找(折半查找)焊切、靜態(tài)樹

動(dòng)態(tài)查找

平衡二叉樹、二叉排序樹芳室、哈希表

排序

希爾专肪、快速、快速堪侯、選擇嚎尤、堆、歸并伍宦、基數(shù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末芽死,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子次洼,更是在濱河造成了極大的恐慌关贵,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卖毁,死亡現(xiàn)場離奇詭異揖曾,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)亥啦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門炭剪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人翔脱,你說我怎么就攤上這事奴拦。” “怎么了届吁?”我有些...
    開封第一講書人閱讀 165,830評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵粱坤,是天一觀的道長。 經(jīng)常有香客問我瓷产,道長站玄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評(píng)論 1 295
  • 正文 為了忘掉前任濒旦,我火速辦了婚禮株旷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己晾剖,他們只是感情好锉矢,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評(píng)論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著齿尽,像睡著了一般沽损。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上循头,一...
    開封第一講書人閱讀 51,754評(píng)論 1 307
  • 那天绵估,我揣著相機(jī)與錄音,去河邊找鬼卡骂。 笑死国裳,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的全跨。 我是一名探鬼主播缝左,決...
    沈念sama閱讀 40,464評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼浓若!你這毒婦竟也來了渺杉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤挪钓,失蹤者是張志新(化名)和其女友劉穎少办,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體诵原,經(jīng)...
    沈念sama閱讀 45,847評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡英妓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了绍赛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蔓纠。...
    茶點(diǎn)故事閱讀 40,137評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖吗蚌,靈堂內(nèi)的尸體忽然破棺而出腿倚,到底是詐尸還是另有隱情,我是刑警寧澤蚯妇,帶...
    沈念sama閱讀 35,819評(píng)論 5 346
  • 正文 年R本政府宣布敷燎,位于F島的核電站,受9級(jí)特大地震影響箩言,放射性物質(zhì)發(fā)生泄漏硬贯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評(píng)論 3 331
  • 文/蒙蒙 一陨收、第九天 我趴在偏房一處隱蔽的房頂上張望饭豹。 院中可真熱鬧鸵赖,春花似錦、人聲如沸拄衰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽翘悉。三九已至茫打,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間妖混,已是汗流浹背老赤。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留源葫,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,409評(píng)論 3 373
  • 正文 我出身青樓砖瞧,卻偏偏與公主長得像息堂,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子块促,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評(píng)論 2 355

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

  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,152評(píng)論 30 470
  • 1荣堰,NSObject中description屬性的意義,它可以重寫嗎?答案:每當(dāng) NSLog(@"")函數(shù)中出現(xiàn) ...
    eightzg閱讀 4,146評(píng)論 2 19
  • 1.Difference between shallow copy and deep copy? 淺復(fù)制和深復(fù)制的...
    用心在飛閱讀 992評(píng)論 0 9
  • 1. 父類實(shí)現(xiàn)深拷貝時(shí)竭翠,子類如何實(shí)現(xiàn)深度拷貝振坚。父類沒有實(shí)現(xiàn)深拷貝時(shí),子類如何實(shí)現(xiàn)深度拷貝斋扰。 1.1 深拷貝同淺拷貝...
    iYeso閱讀 1,893評(píng)論 0 13
  • 一渡八、深復(fù)制和淺復(fù)制的區(qū)別? 1传货、淺復(fù)制:只是復(fù)制了指向?qū)ο蟮闹羔樖瑚ⅲ磧蓚€(gè)指針指向同一塊內(nèi)存單元!而不復(fù)制指向?qū)ο蟮?..
    iOS_Alex閱讀 1,378評(píng)論 1 27