iOS 面试题

奇异之兵IP属地: 福建
字数 593

面试过程:

计算机的工程能力是第一部分,也就是说至少能写代码。

第二部分就是计算机基础,UI网络数据库多线程。

第三部分看团队,例如搞直播相关的团队需要音视频的相关的特长。

第四部分看项目经验,来佐证你之前说的都是真的懂。


1、怎么检测画面流畅?

2、CALayer 和 UIView 的父类是什么?他们之间的关系?

CALayer:NSObject

UIView:UIResponder

3、切圆角有几种方法?分别是什么?

4、UITableView性能优化有哪些?

5、KVC/KVO

(1)定义 ;(2)KVO.

6、自动释放池原理

7、面试题

8、SEL和IMP是什么?

9、GCD四种队列,两种函数和六种组合分别是哪些?

答:

四种队列:

dispatch_queue_t mainQueue = dispatch_get_main_queue();//主队列(串行队列)

dispatch_queue_t concu = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);//全局并行队列

dispatch_queue_t queueSerial = dispatch_queue_create("je", DISPATCH_QUEUE_SERIAL);//创建串行队列

dispatch_queue_t queueConcu = dispatch_queue_create("jr2", DISPATCH_QUEUE_CONCURRENT);//创建并行队列(一般使用系统带的全局并行队列即可)

六种组合:

 //1>同步执行+串行队(不会开辟子线程)

   dispatch_sync(queueSerial, ^{

       [NSThread sleepForTimeInterval:2];

       NSLog(@"1111%@", [NSThread currentThread]);

   });

   dispatch_sync(queueSerial, ^{

       [NSThread sleepForTimeInterval:2];

       NSLog(@"2222%@", [NSThread currentThread]);

   });        

//2>同步执行+并行队列(不会开辟子线程)

   dispatch_sync(queueConcu, ^{

       [NSThread sleepForTimeInterval:2];

       NSLog(@"3333%@", [NSThread currentThread]);

   });

   dispatch_sync(queueConcu, ^{

       [NSThread sleepForTimeInterval:2];

       NSLog(@"4444%@", [NSThread currentThread]);

   });            

//3、异步执行+串行队列(开启一条子线程,且顺序执行)   dispatch_async(queueSerial, ^{

        [NSThread sleepForTimeInterval:2];

       NSLog(@"5555%@", [NSThread currentThread]);

   });    

dispatch_async(queueSerial, ^{

       [NSThread sleepForTimeInterval:2];

        NSLog(@"6666%@", [NSThread currentThread]);

    });        

//4、异步执行+并行队列(开启多条子线程,且并发执行)    dispatch_async(queueConcu, ^{

       [NSThread sleepForTimeInterval:2];

        NSLog(@"5555%@", [NSThread currentThread]);

    });

    dispatch_async(queueConcu, ^{

       [NSThread sleepForTimeInterval:2];

       NSLog(@"6666%@", [NSThread currentThread]);

    });        

//5、异步执行+全局并行队列(开启多条子线程,且并发执行)    dispatch_async(concu, ^{

       [NSThread sleepForTimeInterval:2];

       NSLog(@"5555%@", [NSThread currentThread]);

   });

  dispatch_async(concu, ^{

       [NSThread sleepForTimeInterval:2];

        NSLog(@"6666%@", [NSThread currentThread]);

    });       

 //6、(在主线程中)同步执行+main队列(死锁):NSLog添加到了主队列的最后,NSLog的执行需要等待主队列执行完之后执行,而主队列又在等NSLog执行完(注意与情况3的比较)

  dispatch_sync(mainQueue, ^{

       [NSThread sleepForTimeInterval:2];

        NSLog(@"5555%@", [NSThread currentThread]);

    });

    dispatch_sync(mainQueue, ^{

        [NSThread sleepForTimeInterval:2];

        NSLog(@"6666%@", [NSThread currentThread]);

    });


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
0人点赞
总资产1共写了1.2W字获得4个赞共1个粉丝

推荐阅读更多精彩内容

  • 史上最全的iOS面试题及答案 iOS面试小贴士———————————————回答好下面的足够了----------...
    Style_伟阅读 2,393评论 0 35
  • 在这篇文章中,我将为你整理一下 iOS 开发中几种多线程方案,以及其使用方法和注意事项。当然也会给出几种多线程的案...
    张战威ican阅读 612评论 0 0
  • 1.设计模式是什么? 你知道哪些设计模式,并简要叙述? 设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类...
    司马DE晴空阅读 1,316评论 0 7
  • NSThread 第一种:通过NSThread的对象方法 NSThread *thread = [[NSThrea...
    攻城狮GG阅读 842评论 0 3
  • 对于门店经营,各位老板可谓是勇于尝试各种各样的方式。但是有一种方法千万不要尝试。那就是给客户建微信群。 微信群已经...
    长啸玉书房阅读 454评论 0 0