美文网首页
2018 iOS面试题目总结

2018 iOS面试题目总结

作者: 有缘人2830 | 来源:发表于2018-03-16 10:09 被阅读38次

    一、未分类面试题目

    1.如何更好的处理缓存问题?

    2.多接口请求是如何处理?

    3.NSCash 和 NSDictionary区别?

    4.分类和扩展区别? 分类里面可以添加属性? 分类和原类如果方法冲突了,是怎么样的?

    回输出分类中的数据,覆盖原类的方法。

    5.如何解决调用一个没有的方法,而不报错?

    问题就是在一个类中有一个实例方法,在.h文件中声明了,可是.m文件中没有实现,这样写虽然编译器不会报错

    可是如果在一个类中调用了这个实例方法,就会报错,要如何解决?

    二、SDWebImage:

    1.读SDWebImage 如何保证同一时间请求相同URL时,如何处理的?

    2.如何判断一个url失效了?

    3.AFNetworking和SDWeb里面的图片缓存有啥却别?

    SDWebImage 中的图片缓存 在memory上使用的是 NSCache,在disk 是则用到的是 NSFileManager。AFNetWorking 的图片缓存,在在memory上使用的是 NSCache,没有磁盘缓存。

    UIImageView+AFNetworking 的图片缓存,并没有本地磁盘缓存,且网络请求图片中并未使用NSURLCache,来进行网络请求缓存。只是使用了NSCache 在memory上进行缓存。由于只是在memory上缓存了,所以当app从内存中退出后,重新打开app,每次都会重新对图片进行网络请求。

     SDWebImage 的图片缓存,不仅使用了NSCache 在memory上进行缓存,而且还使用了NSFileManager在本地磁盘上进行缓存。同时在 使用NSURLConnection 时,使用了NSURLCache进行网络请求缓存(这样有什么好处?1: 当一次图片请求因某种原因中途断开,下次请求时,可以直接从NSURLCache获取之前请求的一部分数据,接着请求余下的数据即可。2:当缓存策略不同时,比如:每次都请求,不缓存。那么这时候,只要第一次进行了NSURLConnection,以后都可以直接从NSURLCache 获取数据。)
    

    由此,可知:SDWebImage 在图片缓存上比UIImageView+AFNetworking 有着明显的优势,如果对于一款app在图片上的性能优化,推荐使用 SDWebImage 来替代其他框架。这样可以节省用户很多的流量。

    三、masonry布局

    1. mas 布局scrollview

    2.mas布局,B控件相对于某一个控件A,如果A还没显示出来会怎样呢

    3.两个label横着布局,怎样让第一个label 字体适应,不显示点点点

    四、多线程:

    1. NSLog(@"1");

    dispatch_async(dispatch_get_main_queue(), ^{

    NSLog(@"2");

    });

    NSLog(@"3");

    结果:132

    NSLog(@"1"); dispatch_sync(dispatch_get_main_queue(), ^{ NSLog(@"2"); }); NSLog(@"3");

    结果:1

    结论:线程死锁,因为同步任务有一个特点就是添加即立即执行,此时主队列还有3没有执行,主线程又会因为同步任务等待主队列调度任务,主队列等待分配同步任务,而同步任务之前,主队列还有任务没有执行,这种相互等待就会造成线程死锁,主线程的死锁结果是UI卡死

    2. (1) dispatch_async(dispatch_get_main_queue(), ^{

    NSLog(@"异步");

    });

    (2) dispatch_sync(dispatch_get_main_queue(), ^{

    NSLog(@"同步");

    });

    (2)会造成死锁 dispatch_sync 是同步线程执行代码 要阻塞当前线程,如果当前线程是主线程,首先被阻塞,然后执行hello输出,问题是代码的参数是dispatch_get_main_queue() 它会获取主线程然后在主线程执行 hello输出 主线程本来就被阻塞 所以造成了互锁。

    五、数据存储

    1. NSUserDefaults偶尔/有时候保存数据会失败/失效

    如果你是遇到和我此处类似的,改动数据后,就退出程序了,即在NSUserDefaults还没来得及synchronize之前就退出程序,就需要手动调用synchronize去保存数据了。

    相关文章

      网友评论

          本文标题:2018 iOS面试题目总结

          本文链接:https://www.haomeiwen.com/subject/pfvcixtx.html