9040ea699ba012f885ec61ab36ee85c7
内卷吧! iOS开发君

前序

前段时间因为课程需要 , 我出了一套iOS考试试卷 想着VIP大家做得非常不错. 带着分享的精神也开源了出来 一套iOS底层试卷-我想和你分享 结果反响巨大! 很多靓仔靓女纷纷私聊我....大致分为以下两种:

  • 1: Cooci 你这不是在加剧行业内卷???
  • 2: Cooci 你那套试卷真不错,有没有答案我好好学习一下

根据上面两种反馈,我索性又打算开源一套考试,就让内卷来得更猛烈一点吧!!! 😁😁😁

大师班第二次考试介绍

正常考试 分为四种题型. 总分 200分 (不要问我为什么不是100分,诶...就是玩!!!!😸)

  • 1、选择题 (每题5分, 共7道 35分)

  • 2、判断题 (每题5分, 共6道 30分)

  • 3、简单题 (每题12分 共10道 120分)

  • 4、拓展满分题 (15分)

考试范围: iOS底层常见面试题 - KVC - KVO - 多线程 - GCD - Block

下面我就贴出题目吧,如果你有时间的,不妨也拿笔本子测试一下,看看能做多少分,在文章留言我会第一时间发你答案!


一、选择题(每题5分)

  1. LGTeacher 继承于 LGPerson, 下面代码输出为什么 () 分值5分
LGTeacher *t = [[LGTeacher alloc] init];

- (instancetype)init{
    self = [super init];
    if (self) {
        NSLog(@"%@ - %@",[self class],[super class]);
    }
    return self;
}
  • A: LGTeacher - LGTeacher

  • B: LGTeacher - LGPerson

  • C: LGTeacher - NSObject

  • D: LGTeacher - 它爱输出啥就输出啥,我不清楚

  1. 下面代码能否正常执行以及输出 () 分值5分
@interface LGPerson : NSObject
@property (nonatomic, retain) NSString *kc_name;
- (void)saySomething;
@end

@implementation LGPerson
- (void)saySomething{ 
    NSLog(@"%s - %@",__func__,self.kc_name);
}
@end


- (void)viewDidLoad {
    [super viewDidLoad] ;

    Class cls = [LGPerson class];
    void  *kc = &cls;
    [(__bridge id)kc saySomething];
}
  • A: 能 - ViewController

  • B: 能 - null

  • C: 能 - ViewController: 0x7ff8d240ad30

  • D: 能不能自己运行一下不就知道,非要问我 - 它爱输出啥就输出啥,我不清楚

  1. 下面代码执行,控制台输出结果是什么 () 分值5分
NSObject *objc = [NSObject new];
NSLog(@"%ld",CFGetRetainCount((__bridge CFTypeRef)(objc)));

void(^block1)(void) = ^{
    NSLog(@"---%ld",CFGetRetainCount((__bridge CFTypeRef)(objc)));
};
block1();

void(^__weak block2)(void) = ^{
    NSLog(@"---%ld",CFGetRetainCount((__bridge CFTypeRef)(objc)));
};
block2();

void(^block3)(void) = [block2 copy];
block3();

__block NSObject *obj = [NSObject new];
void(^block4)(void) = ^{
    NSLog(@"---%ld",CFGetRetainCount((__bridge CFTypeRef)(obj)));
};
block4();
  • A: 1 2 2 2 2

  • B: 1 2 3 3 2

  • C: 1 3 3 4 1

  • D: 1 3 4 5 1

  1. 下面代码执行,控制台输出结果是什么 () 分值5分
- (void)MTDemo{
    while (self.num < 5) {
        dispatch_async(dispatch_get_global_queue(0, 0), ^{
            self.num++;
        });
    }
    NSLog(@"KC : %d",self.num);
}

- (void)KSDemo{

    for (int i= 0; i<10000; i++) {
        dispatch_async(dispatch_get_global_queue(0, 0), ^{
            self.num++;
        });
    }
    NSLog(@"Cooci : %d",self.num);
}
  • A: 0 , 10000

  • B: 0 , <10000

  • C: <=5 , <10000

  • D: >=5 , <10000

  1. 下面代码执行,控制台输出结果是什么 () 分值5分
- (void)textDemo2{
    dispatch_queue_t queue = dispatch_queue_create("cooci", DISPATCH_QUEUE_CONCURRENT);
    NSLog(@"1");
    dispatch_async(queue, ^{
        NSLog(@"2");
        dispatch_sync(queue, ^{
            NSLog(@"3");
        });
        NSLog(@"4");
    });
    NSLog(@"5");
}

- (void)textDemo1{

    dispatch_queue_t queue = dispatch_queue_create("cooci", NULL);
    NSLog(@"1");
    dispatch_async(queue, ^{
        NSLog(@"2");
        dispatch_sync(queue, ^{
            NSLog(@"3");
        });
        NSLog(@"4");
    });
    NSLog(@"5");
}
  • A: 1 5 2 3 4 , 1 5 2

  • B: 1 5 2 4 3 , 死锁奔溃

  • C: 1 5 2 3 4 , 死锁奔溃

  • D: 1 5 2 3 , 死锁奔溃

  1. 下面代码执行,控制台输出结果是什么 () 分值5分
top Created with Sketch.