2019最全的iOS面试题及答案

作者: iOS开发_小贤 | 来源:发表于2019-04-09 16:51 被阅读405次

    最全的iOS面试题及答案

    iOS面试小贴士

    ———————————————回答好下面的足够了-------------------------------------

    目录:

    基础
    1. 如何令⾃自⼰己所写的对象具有拷⻉贝功能?
    2. 说说你理理解weak属性?
    3. 题⽬目:Swift mutating关键字的使⽤用?
    4. UIView和 CALayer是什什么关系?
    5. 下⾯面的代码输出什什么?
    6. @synthesize 和 @dynamic 分别有什什么作⽤用?
    7. 动态绑定
    8. Category(类别)、 Extension(扩展)和继承的区别
    9. 为什什么代理理要⽤用weak?代理理的delegate和dataSource有什什么区别?block和代理理 的区别?
    10. id和NSObject*的区别
    11. 如何令⾃自⼰己所写的对象具有拷⻉贝功能?
    12. 使⽤用系统的某些block api(如UIView的block版本写动画时),是否也考虑引⽤用 循环问题?
    13. ⽤用@property声明的NSString(或NSArray,NSDictionary)经常使⽤用copy关键 字,为什什么?如果改⽤用strong关键字,可能造成什什么问题?
    14. UIView和 CALayer是什什么关系?
    15. static有什什么作⽤用?
    底层:
    1. main()之前的过程有哪些?
    2. KVO基本原理理?
    3. Swift 下的如何使⽤用 KVC?
    4. :Swift有哪些模式匹配?
    5. objc在向⼀一个对象发送消息时,发⽣生了了什什么?
    6. 静态库的原理理是什什么?你有没有⾃自⼰己写过静态编译库,遇到了了哪些问题?
    7. runloop是来做什什么的?runloop和线程有什什么关系?主线程默认开启了了runloop 么?⼦子线程呢?
    8. 不不⼿手动指定autoreleasepool的前提下,⼀一个autorealese对象在什什么时刻释放? (⽐比如在⼀一个vc的viewDidLoad中创建
    9. 不不⼿手动指定autoreleasepool的前提下,⼀一个autorealese对象在什什么时刻释放? (⽐比如在⼀一个vc的viewDidLoad中创建)
    10. OC完整的消息转发机制+代码实现【暴暴击】
    11. 以+ scheduledTimerWithTimeInterval...的⽅方式触发的timer,在滑动⻚页⾯面上的 列列表时,timer会暂定回调,为什什么?如何解决?
    12. 如何⼿手动触发⼀一个value的KVO
    13. 如何对定位和分析项⽬目中影响性能的地⽅方?以及如何进⾏行行性能优化?
    14. 串串⾏行行并⾏行行,异步同步的区别?
    15. 线程是什什么?进程是什什么?⼆二者有什什么区别和联系?
    16. RunLoop是什什么?
    17. 假设有⼀一个字符串串aabcad,请写⼀一段程序,去掉字符串串中不不相邻的重复字符 串串,即上述字符串串处理理之后的输出结果为:aabcd @autoclosure(⾃自动闭包)
    18. iOS app启动如何优化?
    19. swift⾯面试题:
    20. 怎样防⽌止反编译?
    21. UITableView性能优化,超实⽤用
      线程:
    22. 不不要阻塞主线程
    23. 谈谈你对多线程开发的理理解?ios中有⼏几种实现多线程的⽅方法?
    24. 进程和线程的区别?同步异步的区别?并⾏行行和并发的区别?
    25. ViewController⽣生命周期
    26. iOS 中的多线程
    27. 内存管理理的⼏几条原则时什什么?按照默认法则.那些关键字⽣生成的对象 需要⼿手动释放?在和property结合的时候怎样有效的避免内存泄露露? 谁申请,谁释放
    28. dispatch_barrier_async的作⽤用是什什么?
    29. 如何⽤用GCD同步若⼲干个异步调⽤用?(如根据若⼲干个url异步加载多张图⽚片,然后在 都下载完成后合成⼀一张整图)
    http:
    1. http与https的区别?
    2. 服务器器能否知道APNS推送后有没有到达客户端的⽅方法?
    app:
    1. 1.什什么⽅方式可以看到上架App的头⽂文件?
      2.阅读过哪些框架的源码?能说说它的架构⽅方式吗
    2. iOS iAP内购审核可能失败的问题

    IAP内购中虚拟货币导致审核⽆无法通过的问题?

    基础:

    1、如何令⾃自⼰己所写的对象具有拷⻉贝功能?
    如果想让⾃自⼰己的类具备copy⽅方法,并返回不不可边类型,必须遵循nscopying协议,并 且实现
    - (id)copyWithZone:(NSZone *)zone
    如果让自⼰己的类具备mutableCopy方法,并且放回可变类型,必须遵守NSMutableCopying并实现- (id)mutableCopyWithZone:(nullable NSZone *)zone注意:再此说的copy对应不不可边类型和mutableCopy对应不不可边类型⽅方法,都是遵从 系统规则⽽而已。如果你想实现⾃自⼰己的规则,也是可以的。

    2、 释放时,调⽤用clearDeallocating函数。clearDeallocating函数⾸首先根据对象地址 获取所有weak指针地址的数组,然后遍历这个数组把其中的数据设为nil后把这个entry从weak表中删除,后清理理对象的记录。

    追问的问题⼀:
    1.实现weak后,为什么对象释放后会自动为nil

    runtime?对注册的类, 会进⾏行行布局,对于?weak?对象会放⼊入⼀一个?hash?表中。 ⽤用?weak?指向的对象内存地址作为?key,当此对象的引⽤用计数为?0?的时候会? dealloc,假如?weak?指向的对象内存地址是?a?,那么就会以?a?为键, 在这个? weak?表中搜索,找到所有以?a?为键的?weak?对象,从⽽而设置为?nil?。

    由于太长只能写到这里 需要这份面试题的朋友可以到群里:763164022直接下载学习,群里不仅有面试资料还有群友在聊技术,群里全是iOS开发者,希望大家共同进步!

    image.png image.png
    image.png

    相关文章

      网友评论

        本文标题:2019最全的iOS面试题及答案

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