iOS開發(fā)面試高頻題游添,面試不再懵逼

對(duì)于要面試iOS開發(fā)的同學(xué)系草,可能已經(jīng)看了很多的面試題。但是網(wǎng)上很多的面試題有些很全唆涝,但是沒有重點(diǎn)悄但,有些又太少。今天小編給大家整理了一些比較重要和經(jīng)常問的面試題石抡,總共20個(gè)檐嚣,半小時(shí)之內(nèi)就可以看完。

1. Object-c的類可以多重繼承么?可以實(shí)現(xiàn)多個(gè)接口么?Category是什么?重寫一個(gè)類的方式用繼承好還是分類好?為什么?

答: Object-c的類不可以多重繼承;可以實(shí)現(xiàn)多個(gè)接口啰扛,通過實(shí)現(xiàn)多個(gè)接口可以完成C++的多重繼承;Category是類別嚎京,一般情況用分類好,用Category去重寫類的方法隐解,僅對(duì)本Category有效鞍帝,不會(huì)影響到其他類與原有類的關(guān)系。

2. #import 跟#include 又什么區(qū)別煞茫,@class呢, #import<> 跟 #import””又什么區(qū)別?

答:#import是Objective-C導(dǎo)入頭文件的關(guān)鍵字帕涌,#include是C/C++導(dǎo)入頭文件的關(guān)鍵字,使用#import頭文件會(huì)自動(dòng)只導(dǎo)入一次,不會(huì)重復(fù)導(dǎo)入续徽,相當(dāng)于#include和#pragma once;@class告訴編譯器某個(gè)類的聲明蚓曼,當(dāng)執(zhí)行時(shí),才去查看類的實(shí)現(xiàn)文件钦扭,可以解決頭文件的相互包含;#import<>用來包含系統(tǒng)的頭文件纫版,#import””用來包含用戶頭文件。

3. 屬性readwrite客情,readonly其弊,assign,retain膀斋,copy梭伐,nonatomic 各是什么作用,在那種情況下用?

答:

1). readwrite 是可讀可寫特性;需要生成getter方法和setter方法時(shí)

2). readonly 是只讀特性 只會(huì)生成getter方法 不會(huì)生成setter方法 ;不希望屬性在類外改變

3). assign 是賦值特性仰担,setter方法將傳入?yún)?shù)賦值給實(shí)例變量;僅設(shè)置變量時(shí);

4). retain 表示持有特性糊识,setter方法將傳入?yún)?shù)先保留,再賦值惰匙,傳入?yún)?shù)的retaincount會(huì)+1;

5). copy 表示賦值特性技掏,setter方法將傳入對(duì)象復(fù)制一份;需要完全一份新的變量時(shí)。

6).nonatomic 非原子操作项鬼,決定編譯器生成的setter getter是否是原子操作,atomic表示多線程安全劲阎,一般使用nonatomic

4.對(duì)于語句NSString*obj = [[NSData alloc] init]; obj在編譯時(shí)和運(yùn)行時(shí)分別時(shí)什么類型的對(duì)象?

答: 編譯時(shí)是NSString的類型;運(yùn)行時(shí)是NSData類型的對(duì)象

5.常見的object-c的數(shù)據(jù)類型有那些绘盟, 和C的基本數(shù)據(jù)類型有什么區(qū)別?如:NSInteger和int

答:object-c的數(shù)據(jù)類型有NSString,NSNumber,NSArray龄毡,NSMutableArray吠卷,NSData等等,這些都是class沦零,創(chuàng)建后便是對(duì)象祭隔,而C語言的基本數(shù)據(jù)類型int,只是一定字節(jié)的內(nèi)存空間路操,用于存放數(shù)值;NSInteger是基本數(shù)據(jù)類型疾渴,并不是NSNumber的子類,當(dāng)然也不是NSObject的子類屯仗。NSInteger是基本數(shù)據(jù)類型Int或者Long的別名(NSInteger的定義typedef long NSInteger)搞坝,它的區(qū)別在于,NSInteger會(huì)根據(jù)系統(tǒng)是32位還是64位來決定是本身是int還是Long魁袜。

6.id 聲明的對(duì)象有什么特性?

答:Id 聲明的對(duì)象具有運(yùn)行時(shí)的特性桩撮,即可以指向任意類型的objcetive-c的對(duì)象;

7. 原子(atomic)跟非原子(non-atomic)屬性有什么區(qū)別?

答:

1). atomic提供多線程安全。是防止在寫未完成的時(shí)候被另外一個(gè)線程讀取峰弹,造成數(shù)據(jù)錯(cuò)誤

2). non-atomic:在自己管理內(nèi)存的環(huán)境中店量,解析的訪問器保留并自動(dòng)釋放返回的值,如果指定了 nonatomic 鞠呈,那么訪問器只是簡單地返回這個(gè)值垫桂。

8. 內(nèi)存管理的幾條原則時(shí)什么?按照默認(rèn)法則.那些關(guān)鍵字生成的對(duì)象需要手動(dòng)釋放?在和property結(jié)合的時(shí)候怎樣有效的避免內(nèi)存泄露?

答:誰申請(qǐng),誰釋放

遵循Cocoa Touch的使用原則;

內(nèi)存管理主要要避免“過早釋放”和“內(nèi)存泄漏”粟按,對(duì)于“過早釋放”需要注意@property設(shè)置特性時(shí)诬滩,一定要用對(duì)特性關(guān)鍵字,對(duì)于“內(nèi)存泄漏”灭将,一定要申請(qǐng)了要負(fù)責(zé)釋放疼鸟,要細(xì)心。

關(guān)鍵字alloc 或new 生成的對(duì)象需要手動(dòng)釋放;

設(shè)置正確的property屬性庙曙,對(duì)于retain需要在合適的地方釋放空镜,

9.如何對(duì)iOS設(shè)備進(jìn)行性能測試?

答: Profile-> Instruments ->Time Profiler

10. Object C中創(chuàng)建線程的方法是什么?如果在主線程中執(zhí)行代碼,方法是什么?如果想延時(shí)執(zhí)行代碼捌朴、方法又是什么?

答:線程創(chuàng)建有三種方法:使用NSThread創(chuàng)建吴攒、使用GCD的dispatch、使用子類化的NSOperation,然后將其加入NSOperationQueue;在主線程執(zhí)行代碼砂蔽,方法是performSelectorOnMainThread洼怔,如果想延時(shí)執(zhí)行代碼可以用performSelector:onThread:withObject:waitUntilDone:

11 淺復(fù)制和深復(fù)制的區(qū)別?

答:淺層復(fù)制:只復(fù)制指向?qū)ο蟮闹羔槪粡?fù)制引用對(duì)象本身左驾。

深層復(fù)制:復(fù)制引用對(duì)象本身镣隶。

意思就是說我有個(gè)A對(duì)象极谊,復(fù)制一份后得到A_copy對(duì)象后,對(duì)于淺復(fù)制來說安岂,A和A_copy指向的是同一個(gè)內(nèi)存資源轻猖,復(fù)制的只不過是是一個(gè)指針,對(duì)象本身資源

還是只有一份域那,那如果我們對(duì)A_copy執(zhí)行了修改操作,那么發(fā)現(xiàn)A引用的對(duì)象同樣被修改咙边,這其實(shí)違背了我們復(fù)制拷貝的一個(gè)思想。深復(fù)制就好理解了,內(nèi)存中存在了

兩份獨(dú)立對(duì)象本身次员。

用網(wǎng)上一哥們通俗的話將就是:

淺復(fù)制好比你和你的影子败许,你完蛋,你的影子也完蛋

深復(fù)制好比你和你的克隆人翠肘,你完蛋檐束,你的克隆人還活著。

12. 類別的作用?繼承和類別在實(shí)現(xiàn)中有何區(qū)別?

答:category 可以在不獲悉束倍,不改變?cè)瓉泶a的情況下往里面添加新的方法被丧,只能添加,不能刪除修改绪妹,并且如果類別和原來類中的方法產(chǎn)生名稱沖突甥桂,則類別將覆蓋原來的方法,因?yàn)轭悇e具有更高的優(yōu)先級(jí)邮旷。

類別主要有3個(gè)作用:

1).將類的實(shí)現(xiàn)分散到多個(gè)不同文件或多個(gè)不同框架中黄选。

2).創(chuàng)建對(duì)私有方法的前向引用。

3).向?qū)ο筇砑臃钦絽f(xié)議婶肩。

繼承可以增加办陷,修改或者刪除方法,并且可以增加屬性律歼。

13. 類別和類擴(kuò)展的區(qū)別民镜。

答:category和extensions的不同在于 后者可以添加屬性。另外后者添加的方法是必須要實(shí)現(xiàn)的险毁。

extensions可以認(rèn)為是一個(gè)私有的Category制圈。

14. 代理的作用?

答:代理的目的是改變或傳遞控制鏈。允許一個(gè)類在某些特定時(shí)刻通知到其他類畔况,而不需要獲取到那些類的指針鲸鹦。可以減少框架復(fù)雜度跷跪。

另外一點(diǎn)馋嗜,代理可以理解為java中的回調(diào)監(jiān)聽機(jī)制的一種類似。

15. oc中可修改和不可以修改類型域庇。

答:可修改不可修改的集合類嵌戈。這個(gè)我個(gè)人簡單理解就是可動(dòng)態(tài)添加修改和不可動(dòng)態(tài)添加修改一樣覆积。

比如NSArray和NSMutableArray听皿。前者在初始化后的內(nèi)存控件就是固定不可變的熟呛,后者可以添加等,可以動(dòng)態(tài)申請(qǐng)新的內(nèi)存空間尉姨。

16. OC的垃圾回收機(jī)制?

答: OC2.0有Garbage collection庵朝,但是iOS平臺(tái)不提供。

一般我們了解的objective-c對(duì)于內(nèi)存管理都是手動(dòng)操作的又厉,但是也有自動(dòng)釋放池九府。

但是差了大部分資料,貌似不要和arc機(jī)制搞混就好了覆致。

17. 什么是延遲加載?

答:懶漢模式侄旬,只在用到的時(shí)候才去初始化。

也可以理解成延時(shí)加載煌妈。

我覺得最好也最簡單的一個(gè)列子就是tableView中圖片的加載顯示了儡羔。

一個(gè)延時(shí)載,避免內(nèi)存過高璧诵,一個(gè)異步加載汰蜘,避免線程堵塞。

18. 什么時(shí)候使用NSMutableArray之宿,什么時(shí)候使用NSArray?

答:當(dāng)數(shù)組在程序運(yùn)行時(shí)族操,需要不斷變化的,使用NSMutableArray比被,當(dāng)數(shù)組在初始化后色难,便不再改變的,使用NSArray等缀。需要指出的是枷莉,使用NSArray只表明的是該數(shù)組在運(yùn)行時(shí)不發(fā)生改變,即不能往NSAarry的數(shù)組里新增和刪除元素项滑,但不表明其數(shù)組內(nèi)的元素的內(nèi)容不能發(fā)生改變依沮。NSArray是線程安全的,NSMutableArray不是線程安全的枪狂,多線程使用到NSMutableArray需要注意危喉。

19. 類NSObject的那些方法經(jīng)常被使用?

答:NSObject是Objetive-C的基類,其由NSObject類及一系列協(xié)議構(gòu)成州疾。

其中類方法alloc辜限、class、 description 對(duì)象方法init严蓖、dealloc薄嫡、– performSelector:withObject:afterDelay:等經(jīng)常被使用

20. 在iPhone應(yīng)用中如何保存數(shù)據(jù)?

答:有以下幾種保存機(jī)制:

1).通過web服務(wù)氧急,保存在服務(wù)器上

2).通過NSCoder固化機(jī)制,將對(duì)象保存在文件中

3).通過SQlite或CoreData保存在文件數(shù)據(jù)庫中

面試前看看面試題雖然能助你一臂之力毫深,但是最重要的還是平時(shí)要扎扎實(shí)實(shí)的提升自己的技術(shù)能力吩坝。小麥祝大家都能夠找到一個(gè)好的工作,對(duì)得起自己的努力哑蔫。

注:文章來源于網(wǎng)絡(luò)钉寝,如有侵權(quán),請(qǐng)聯(lián)系小編刪除闸迷。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末嵌纲,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子腥沽,更是在濱河造成了極大的恐慌逮走,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件今阳,死亡現(xiàn)場離奇詭異师溅,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)酣栈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門险胰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人矿筝,你說我怎么就攤上這事起便。” “怎么了窖维?”我有些...
    開封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵榆综,是天一觀的道長。 經(jīng)常有香客問我铸史,道長鼻疮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任琳轿,我火速辦了婚禮判沟,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘崭篡。我一直安慰自己县习,他們只是感情好响蓉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開白布香璃。 她就那樣靜靜地躺著删窒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上斯入,一...
    開封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天砂碉,我揣著相機(jī)與錄音,去河邊找鬼刻两。 笑死增蹭,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的闹伪。 我是一名探鬼主播沪铭,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼壮池,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼偏瓤!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起椰憋,我...
    開封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤厅克,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后橙依,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體证舟,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年窗骑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了女责。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡创译,死狀恐怖抵知,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情软族,我是刑警寧澤刷喜,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站立砸,受9級(jí)特大地震影響掖疮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜颗祝,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一浊闪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧螺戳,春花似錦搁宾、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至凤藏,卻和暖如春奸忽,著一層夾襖步出監(jiān)牢的瞬間堕伪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來泰國打工栗菜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留欠雌,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓疙筹,卻偏偏與公主長得像富俄,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子而咆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

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