面試總結(jié)

面試題

技術(shù)

基礎(chǔ)

  1. 為什么說Objective-C是一門動態(tài)的語言?

    Objective-C 運行時機制是在運行的時候才決定一個對象的類型,消息機制是在運行的時候通過發(fā)送消息來調(diào)用函數(shù),也正因為運行時機制把編譯時的工作轉(zhuǎn)到運行時實現(xiàn)OC的動態(tài)特性。

  2. 講一下MVC和MVVM,MVP?

    MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,Model 呈現(xiàn)數(shù)據(jù),View 呈現(xiàn)用戶界面,而 View Controller 調(diào)節(jié)它兩者之間的交互。

    • 視圖(View):構(gòu)建UI的類;例如:按鈕,標(biāo)簽,進度條等。
    • 模型(Model):視圖類所需要的數(shù)據(jù);例如:表格需要顯示的文字。
    • 控制器(Controller):連接視圖類和模型類,任務(wù)是使數(shù)據(jù)顯示在屏幕上。

    MVVM全名是Model View View-Model,ViewModel將表示邏輯從 Controller 移出放到一個新的對象里,即 View Model。就是那些將 Model 數(shù)據(jù)轉(zhuǎn)換為 View 可以呈現(xiàn)的東西的事情,例如將一個 NSDate 轉(zhuǎn)換為一個格式化過的 NSString。

    MVP全名是Model-view-presenter,是使用者界面設(shè)計模式的一種。

    • Model 定義使用者界面所需要被顯示的數(shù)據(jù)模型,一個模型包含著相關(guān)的業(yè)務(wù)邏輯。
    • View 視圖為呈現(xiàn)使用者界面的終端,用以表現(xiàn)來自 Model 的數(shù)據(jù),和使用者命令路由再經(jīng)過 Presenter 對事件處理后的數(shù)據(jù)。
    • Presenter 包含著元件的事件處理,負責(zé)檢索 Model 取得數(shù)據(jù),和將取得的數(shù)據(jù)經(jīng)過格式轉(zhuǎn)換與 View 進行溝通。
    • MVP 設(shè)計模式通常會再加上 Controller 做為整體應(yīng)用程序的后端程序工作。
  1. 為什么代理要用weak?代理的delegate和dataSource有什么區(qū)別?block和代理的區(qū)別?
  1. 屬性的實質(zhì)是什么?包括哪幾個部分?屬性默認的關(guān)鍵字都有哪些?@dynamic關(guān)鍵字和@synthesize關(guān)鍵字是用來做什么的?

    • @property 的本質(zhì)是: @property = ivar + getter + setter;

    • 包括哪幾個部分: iavr ; getter ; setter;``(實例變量 + 存取方法)

    • 屬性默認的關(guān)鍵字都有哪些 atomic readwrite assign

    • @dynamic關(guān)鍵字和@synthesize關(guān)鍵字是用來做什么的?

      • 1)@property有兩個對應(yīng)的詞,一個是@synthesize,一個是@dynamic。如果@synthesize和@dynamic都沒寫,那么默認的就是@syntheszie var = _var;
      • @synthesize的語義是如果你沒有手動實現(xiàn)setter方法和getter方法,那么編譯器會自動為你加上這兩個方法。
      • @dynamic告訴編譯器:屬性的setter與getter方法由用戶自己實現(xiàn),不自動生成。
  2. 屬性的默認關(guān)鍵字是什么?

    atomic readwrite assign

  3. *NSString為什么要用copy關(guān)鍵字,如果用strong會有什么問題?(注意:這里沒有說用strong就一定不行。使用copy和strong是看情況而定的) *

    • 因為NString,NSArray,NSDictionary都有自己對應(yīng)的子類:NSMutableString,NSMutableArray,NSMutableDictionary,而父類指針可以指向子類對象,使用copy可以讓本對象不受外界(子對象)影響,無論給我傳入的是一個可變對象還是一個不可變對象,都能保證自身持有的是一個不可變副本。
    • 使用strong時,如果這個屬性指向一個可變對象,修改可變對象時,這個屬性值也會被修改。
    • 引用借鑒:http://www.lxweimin.com/p/1e1a6f9c26f8
  1. 如何令自己所寫的對象具有拷貝功能?

若想令自己所寫的對象具有拷貝功能,則需實現(xiàn) NSCopying 協(xié)議。如果自定義的對象分為可變版本與不可變版本,那么就要同時實現(xiàn) NSCopying 與 NSMutableCopying 協(xié)議。

具體步驟:

需聲明該類遵從 NSCopying 協(xié)議
實現(xiàn) NSCopying 協(xié)議。該協(xié)議只有一個方法:
- (id)copyWithZone:(NSZone *)zone;
注意:一提到讓自己的類用 copy 修飾符,我們總是想覆寫copy方法,其實真正需要實現(xiàn)的卻是 “copyWithZone” 方法。
  1. 可變集合類 和 不可變集合類的 copy 和 mutablecopy有什么區(qū)別?如果是集合是內(nèi)容復(fù)制的話,集合里面的元素也是內(nèi)容復(fù)制么?

    • [immutableObject copy]是淺拷貝
    • [immutableObject mutableCopy]是深拷貝
    • [mutableObject copy]是深拷貝
    • [mutableObject mutableCopy]是深拷貝

    集合對象的深拷貝只是對象本身,而集合對象的元素還是地址的拷貝,即單層深拷貝

  2. 為什么IBOutlet修飾的UIView也適用weak關(guān)鍵字?

    通過加載xib得到的用戶界面,在加載時就已經(jīng)是view hierarchy(視圖層次)的一部分了,后者中的指向都是strong的,因此IBOut指向的對象不該再被hold一次,從而不需要在viewDidUnload方法里再將IBOut指向的對象置為nil.

  3. nonatomic和atomic的區(qū)別?atomic是絕對的線程安全么?為什么?如果不是,那應(yīng)該如何實現(xiàn)?

    atomic和nonatomic區(qū)別用來決定編譯器生成的getter和setter是否為原子操作。atomic提供多線程安全,是描述該變量是否支持多線程的同步訪問,如果選擇了atomic 那么就是說,系統(tǒng)會自動的創(chuàng)建lock鎖,鎖定變量。nonatomic禁止多線程,變量保護,提高性能。
    * atomic:默認是有該屬性的,這個屬性是為了保證程序在多線程情況下,編譯器會自動生成一些互斥加鎖代碼,避免該變量的讀寫不同步問題。
    * nonatomic:如果該對象無需考慮多線程的情況,請加入這個屬性,這樣會讓編譯器少生成一些互斥加鎖代碼,可以提高效率。
    * 不過atomic可并不能保證線程安全,atomic只是對setter和getter方法加鎖;要想實現(xiàn)真正的線程安全,需要對對象進行加鎖,讀取操作結(jié)束的時候再開放給其他線程訪問。

  1. UICollectionView自定義layout如何實現(xiàn)?

    自定義UICollectionViewLayout重寫以下方法:

    - (void)prepareLayout
    準(zhǔn)備方法被自動調(diào)用,以保證layout實例的正確。
    
    - (CGSize)collectionViewContentSize
    返回collectionView的內(nèi)容的尺寸
    
    - (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect
     1.返回rect中的所有的元素的布局屬性
     2.返回的是包含UICollectionViewLayoutAttributes的NSArray
     3.UICollectionViewLayoutAttributes可以是cell,追加視圖或裝飾視圖的信息,
     通過不同的UICollectionViewLayoutAttributes初始化方法可以得到不同類型的UICollectionViewLayoutAttributes:
     1)layoutAttributesForCellWithIndexPath:
     2)layoutAttributesForSupplementaryViewOfKind:withIndexPath:
     3)layoutAttributesForDecorationViewOfKind:withIndexPath:
    
    - (UICollectionViewLayoutAttributes )layoutAttributesForItemAtIndexPath:(NSIndexPath )indexPath
    返回對應(yīng)于indexPath的位置的cell的布局屬性
    
    - (UICollectionViewLayoutAttributes )layoutAttributesForSupplementaryViewOfKind:    (NSString )kind 
    atIndexPath:(NSIndexPath *)indexPath
    返回對應(yīng)于indexPath的位置的追加視圖的布局屬性,如果沒有追加視圖可不重載
    
    - (UICollectionViewLayoutAttributes * )layoutAttributesForDecorationViewOfKind: (NSString)decorationViewKind
    atIndexPath:(NSIndexPath )indexPath
    返回對應(yīng)于indexPath的位置的裝飾視圖的布局屬性,如果沒有裝飾視圖可不重載
    
    - (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds
    當(dāng)邊界發(fā)生改變時,是否應(yīng)該刷新布局。如果YES則在邊界變化(一般是scroll到其他地方)時,將重新計算    需要的布局信息。
    

    選自:UICollectionViewLayout布局詳解

  2. 3241

  3. 32424

  4. 34dsfsd

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,702評論 6 534
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,615評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,606評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,044評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 71,826評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,227評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,307評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,447評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,992評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,807評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,001評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,550評論 5 361
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,243評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,667評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,930評論 1 287
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,709評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 47,996評論 2 374

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

  • 一、深復(fù)制和淺復(fù)制的區(qū)別? 1、淺復(fù)制:只是復(fù)制了指向?qū)ο蟮闹羔槪磧蓚€指針指向同一塊內(nèi)存單元!而不復(fù)制指向?qū)ο蟮?..
    iOS_Alex閱讀 1,404評論 1 27
  • 整理一些常見的Android面試題(針對于2~3年開發(fā)經(jīng)驗中所遇到的問題) synchronized鎖靜態(tài)方法和非...
    appzy閱讀 2,341評論 4 18
  • 今日話題:你希望跟你共事的人什么特質(zhì),為什么?1.負責(zé),也就是有責(zé)任心,團隊合作精神2.執(zhí)行力,不是直說不做的隱形人
    小惠_f2b8閱讀 149評論 0 0
  • 小時候 豆豆是別人手里的零食 對面而立的我 只有羨慕的份兒 小時候 豆豆是別人地里的莊稼 看了又看 卻與我無關(guān) 長...
    韓小冰閱讀 333評論 14 10
  • 【目錄】更多精彩等你喲 【第六章】蜘蛛精愛上魚鱗 同樣是在這一天,蕭圣回到臥室那個時候,他把上了鎖的抽屜打開,拿出...
    小北貝傲雪閱讀 614評論 0 6