一套iOS底層試卷-我想和你分享

考試介紹

最近一直在帶大師班,學習有一段時間了帶著以下三個目的進行了一場測驗.收益頗多.這里也紀錄下來

?? 考試檢測大家最近的學習

?? 敲響警鐘,希望大家能夠端正學習態(tài)度、及時查漏補缺

?? 根據(jù)大家在這階段學習的情況調(diào)整下階段講課的速度和深度

正??荚?分為四種題型. 總分 200分 (不要問我為什么不是100分,誒...就是玩!!!!??)

  • 1、選擇題 (每題5分, 共10道 50分)

  • 2、判斷題 (每題5分, 共6道 30分)

  • 3、簡單題 (每題10分 共10道 100分)

  • 4、拓展?jié)M分題 (20分)

下面我就貼出題目吧,如果你有時間的,不妨也拿筆本子測試一下,看看能做多少分,在文章留言我會第一時間發(fā)你答案! 或者加我微信: KC_Cooci

一、選擇題(每題5分) ?? 有單選有多選哦??

    1. 在LP64下,一個指針的有多少個字節(jié) 分值5分
  • A: 4

  • B: 8

  • C: 16

  • D: 64

    1. 一個實例對象的內(nèi)存結(jié)構(gòu)存在哪些元素 分值5分
  • A:成員變量

  • B: supClass

  • C: cache_t

  • D: bit

    1. 下面 sizeof(struct3)大小等于 分值5分
struct LGStruct1 {
    char b;
    int c;
    double a;
    short d;
}struct1;

struct LGStruct2 {
    double a;
    int b;
    char c;
    short d;
}struct2;


struct LGStruct3 {
    double a;
    int b;
    char c;
    struct LGStruct1 str1;
    short d;
    int e;
    struct LGStruct2 str2;
}struct3;
  • A: 48

  • B: 56

  • C: 64

  • D: 72

    1. 下列代碼: re1 re2 re3 re4 re5 re6 re7 re8輸出結(jié)果 分值5分
BOOL re1 = [(id)[NSObject class] isKindOfClass:[NSObject class]];     
BOOL re2 = [(id)[NSObject class] isMemberOfClass:[NSObject class]];   
BOOL re3 = [(id)[LGPerson class] isKindOfClass:[LGPerson class]];     
BOOL re4 = [(id)[LGPerson class] isMemberOfClass:[LGPerson class]];  
NSLog(@" re1 :%hhd\n re2 :%hhd\n re3 :%hhd\n re4 :%hhd\n",re1,re2,re3,re4);

BOOL re5 = [(id)[NSObject alloc] isKindOfClass:[NSObject class]];      
BOOL re6 = [(id)[NSObject alloc] isMemberOfClass:[NSObject class]];    
BOOL re7 = [(id)[LGPerson alloc] isKindOfClass:[LGPerson class]];     
BOOL re8 = [(id)[LGPerson alloc] isMemberOfClass:[LGPerson class]];   
NSLog(@" re5 :%hhd\n re6 :%hhd\n re7 :%hhd\n re8 :%hhd\n",re5,re6,re7,re8);
  • A: 1011 1111

  • B: 1100 1011

  • C: 1000 1111

  • D: 1101 1111

    1. (x + 7) & ~7 這個算法是幾字節(jié)對齊 分值5分
  • A: 7

  • B: 8

  • C: 14

  • D: 16

    1. 判斷下列數(shù)據(jù)結(jié)構(gòu)大小 分值5分
union kc_t {
    uintptr_t bits;
    struct {
        int a;
        char b;
    };
}
  • A: 8

  • B: 12

  • C: 13

  • D: 16

    1. 元類的 isa 指向誰, 根元類的父類是誰 分值5分
  • A: 自己 , 根元類

  • B: 自己 , NSObject

  • C: 根元類 , 根元類

  • D: 根元類 , NSObject

    1. 查找方法緩存的時候發(fā)現(xiàn)是亂序的, 為什么? 哈希沖突怎么解決的 分值5分
  • A: 哈希函數(shù)原因 , 不解決

  • B: 哈希函數(shù)原因 , 再哈希

  • C: 他存他的我也布吉島 , 再哈希

  • D: 他亂由他亂,清風過山崗 , 不解決

    1. 消息的流程是 分值5分
  • A: 先從緩存快速查找

  • B: 慢速遞歸查找 methodlist (自己的和父類的,直到父類為nil)

  • C: 動態(tài)方法決議

  • D: 消息轉(zhuǎn)發(fā)流程

    1. 類方法動態(tài)方法決議為什么在后面還要實現(xiàn) resolveInstanceMethod 分值5分
  • A: 類方法存在元類(以對象方法形式存在), 元類的父類最終是 NSObject 所以我們可以通過resolveInstanceMethod 防止 NSObject 中實現(xiàn)了對象方法!

  • B: 因為在oc的底層最終還是對象方法存在

  • C: 類方法存在元類以對象方法形式存在.

  • D: 咸吃蘿卜,淡操心! 蘋果瞎寫的 不用管

二、判斷題 (每題5分)

    1. 光憑我們的對象地址,無法確認對象是否存在關(guān)聯(lián)對象 分值5分
    1. int c[4] = {1,2,3,4}; int *d = c; c[2] = *(d+2) 分值5分
    1. @interface LGPerson : NSObject{ UIButton *btn } 其中 btn 是實例變量 分值5分
    1. NSObject 除外 元類的父類 = 父類的元類 分值5分
    1. 對象的地址就是內(nèi)存元素的首地址 分值5分
    1. 類也是對象 分值5分

三、簡單題 (每題 10分 合計 100分)

請把它當成一場面試,認真對待 希望大家耐心 切忌浮躁 (和諧學習 不急不躁)

  • 17、怎么將上層OC代碼還原成 C++代碼 分值10分

  • 18、怎么打開匯編查看流程,有什么好處 ? 分值10分

  • 19、x/4gxp/x 以及 p *$0 代表什么意思 分值10分

  • 20、類方法存在哪里? 為什么要這么設(shè)計? 分值10分

  • 21、方法慢速查找過程中的二分查找流程,請用偽代碼實現(xiàn) 分值10分

  • 22、ISA_MASK = 0x00007ffffffffff8ULL 那么這個 ISA_MASK 的算法意義是什么? 分值10分

  • 23、類的結(jié)構(gòu)里面為什么會有 rwro 以及 rwe ? 分值10分

  • 24、cache 在什么時候開始擴容 , 為什么? 分值10分

  • 25、objc_msgSend 為什么用匯編寫 , objc_msgSend 是如何遞歸找到imp? 分值10分

  • 26、一個類的類方法沒有實現(xiàn)為什么可以調(diào)用 NSObject 同名對象方法 分值10分

四、拓展?jié)M分題 (20分

  1. 提交一篇大師班學習期間,你寫的最好的一篇博客 分值20分

五、總結(jié)

考試的題目偏向底層, 也比較貼合現(xiàn)在iOS的面試市場! 內(nèi)容有深有淺,還可以繼續(xù)挖坑 (??)

聲明: 內(nèi)容只是為了促進學習,并不是為行業(yè)增加內(nèi)卷.希望各位靚仔靚女 不要把這些題目作為面試素材為難求職者.答案可以直接微信我: KC_Cooci

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容