收录的iOS⾯试技术点,可能没那么多时间来总结答案,有什么需要讨论的地⽅欢迎⼤家底部留⾔。主要记录⼀下⼤⼚技术点,希望能帮助到正在⾯试或者将要⾯试的伙伴吧。
GCD
1. GCD、NSOperation区别, 功能⽅法区别.
2. gcd queue 的区别
3. group 如何实现barrier类似的功能?
4. GCD group 如何实现同步的? (还能⽤什么实现?)
5. 执⾏⼀个 NSThread 任务, 如何在执⾏过程中让他终⽌?
6. iOS NSOperation 是如何终⽌/取消任务的?
煎口蘑的做法
7. 多线程,异步执⾏(async)⼀个performSelector 会执⾏么?如果加上 afterDelay呢?
8. GCD 实现 NSOperationQueue
男人早射什么原因9. DispatchQoS的作⽤
KVC、KVO
1. 结构体的字节对齐和OC对象的字节对齐?
2. instance(实例对象)、class(类对象)、meta-class(元类对象)分别储存了什么信息?为什么要设计元类?
3. KVO的具体实现流程?访问成员变量(类似lf->age)会触发KVO嘛?KVC会触发KVO嘛?KVO的两个核⼼调⽤⽅法是?
4. KVC的原理?getter 和 tter 的搜索策略是什么?KVC 有什么实际的应⽤?
ISA、类结构
1. isa 指针是什么?⾥⾯有哪些特殊的位数?什么是TaggedPointer的优化?
2. isa指针⾥⾯都存了什么,32和64位分别讲⼀下
3. OC 是否⽀持重载? 为什么?
4. IMP、SEL Method 都表⽰什么意思? 与 _cmd 相关
5. class 的底层结构是什么样的?
6. method_t ⾥包含什么?
7. super 关键字的本质是什么?
8. OC的消息机制有⼏步?
消息转发
二年级班主任工作计划1. 如何防⽌类似 unrecognized lector 的错误?_objc_msgForward能⼲什么?
2. runtime 有哪些应⽤?⽅法替换(method - Swizzling)有什么缺点?如何安全的进⾏⽅法替换?
3. person有个+test⽅法,实现输出persion test,student继承persion,头⽂件定义-test⽅法,但没实现,student *obj=new student
[obj test] 结果是啥?
4. 介绍下 Swizzle 的步骤? 具体到⽅法名.
5. Swizzle 时, 我不想替换⽗类, 只想替换⼦类,怎么办?
6. Swizzle 的优缺点? 缺点会导致什么问题?
7. ⽅法交换和分类同时去hook同⼀个⽅法,结果会怎么样? 具体交换的是什么?交换时是如何处理传参数? 如果使⽤NSInvocation 的话, 是否能
夏桑菊颗粒的功效与作用
处理⽅法有返回值的场景?具体怎么处理的?
引⽤计数、weak、autoreleapool
1. 引⽤计数怎么实现的?weak怎么实现的?sideTable的 底层结构是怎么样的? weak指针做了什么操作?
2. 对象的 relea 是怎么处理的?女儿谷
3. 堆和栈的区别是什么?
4. 栈、堆分别是否会被线程所共享?
5. 内存空间中除了堆和栈还有什么内容?
6. weak 如何把 对象重制为 nil
游戏角色名称大全7. assign、strong 区别, 是否能⽤assign修饰 NSObject?
8. AutoReleaPool(⾃动释放池) 的底层实现是什么?他怎么实现及时释放的?⼦线程的释放时机是怎么样的?
内存检测、OOM
1. ARC下哪些情况会造成内存泄漏
2. 内存泄漏如何检测?
3. -OOM (Out Of Memory) 类型的 crash介绍下, 怎么检测, 怎么处理?
4. dealloc __weak会有什么问题
分类、扩展、关联对象
1. Catagory 和 extension 分别的使⽤场合和特点是什么?
2. Catagory 的实现原理是什么?Catagory 有哪些⽤处?Catagory 有什么局限?
好兄弟讲义气
3. Class 和 他的 Catagory 同名⽅法的调⽤顺序是什么?Catagory A 和 Catagory B 同名⽅法的调⽤顺序是如何?如果想要不按照系统顺序
执⾏要怎么做?
4. +load 和 +initialize 的调⽤时机和顺序?两者区别是什么?
5. Catagory 有 +load ⽅法么?+load 是什么时候调⽤的?能继承么?会覆盖Class 的 +load 么?
6. Catagory关联对象(AssociateObject)的底层实现是什么?
7. ⽅法如果写了多个分类、会执⾏哪⼀个?执⾏逻辑是什么样?
8. 关联对象 weak 底层原理
NSMutableArray扩展
1. [mutablearry alloc]init 和 [nsmublearray array]有什么区别
2. 结构体中为什么不能使⽤oc对象
3. 我们在开发中使⽤⽂件的.mm是基于什么原因?
凉拌苦菊的做法
4. string和NSString的区别
5. mutablearray是怎么实现的,mutablearray申请内存空间⼲什么⽤,做增删操作的时候内存空间是怎么改变的,可以⽤别的⽅法实现吗?Timer、锁
1. 你知道 iOS 有哪些锁?性能分别怎么样?
2. NSTimer、CADisplayLink、dispatch_source_t 的优劣
3. ⾃旋锁和互斥锁怎么选择?
4. NSNotificationCenter 跨线程及底层结构是怎样的?
5. 读写锁思路、⼿写⼀下
6. atomic与@synchroize原理
TCP/IP协议族
1. HTTP、HTTPS 区别?