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