2019最全的iOS面试题及答案

最全的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面试题及答案)