关于面试:
你准备的时候就要知道,面试官会疯狂挑战你,你要能够清晰表达自己做的事情.
题目1. 函数指针和Block区别?
1.函数指针是一个指针,Block是一个对象
2.Block会获取运行环境,产生循环引用
题目2.C++中的多态和OC中多态实现有什么不同?OC调用C++ 的方式有哪些?
1.OC是弱类型的,在运行时才确定对象的类型,父类指针指向子类的对象,根据对象的真实类型去消息发送,动态方法解析,消息转发阶段
2.C++是强类型,父类的指针指向子类的对象,通过Virtual来实现多态,虚函数的实现原理是虚表,这个虚表里面存储着最终需要调用的虚函数地址,不是虚函数直接按照汇编的调用地址去调用
子类继承的父类有虚函数,子类对象的内存会增加4个字节,前4个字节存放虚函数表地址,子类如果没有重写父类的虚函数,那么子类虚函数表存储的就是父类的那个虚函数地址,调用时具体去哪个虚表里面找,就看指向的哪个对象
题目3.子视图超出父控件,如何让超出父控件的部分继续响应事件?
1.判断触摸点在哪个子控件上,在父控件的hitTest()直接返回子控件
题目4:OC中有哪些异常类型,如果自己做crash统计需要注意什么?
题目5:分类和继承有什么区别?
整理中
题目6:UITableView的性能优化?
思路:使用Instrucment检测哪些操作影响Cell的快速返回,发现瓶颈
1.重用cell,header,footer,对于header和footer,重用场景是tableView设置成分组时
2.那些还没有显示的cell不要进行数据绑定,可以在tableView:willDisplayCell:forRowAtIndexPath:中绑定数据
3.不要通过初始化cell的数据时通过计算获取高度,这样每秒钟会掉15~20帧,写一个类方法,把数据源和宽度传进去,计算cell的高度,把高度缓存起来
4.当Cell里面有很多子视图,通过写约束使用autolayout时,更多的子视图需要去布局,更多的约束需要计算,会花费更多的时间,会影响Cell的返回
5.减少或者不要用透明的叠加的视图
6.把耗时的操作放到异步线程中执行,在子线程加载网络图片,处理圆角,,clipsToBounds is slow,把处理好的image在主线程赋值给UIImageView
题目7. 你在项目中用到的动画有哪些?讲讲你对CoreAnimation的理解?
题目8. 利用关联对象给分类添加属性时,关联对象需不需要释放
题目 9. Const修饰函数,目的是什么? Static的作用是什么?
题目10. Replace 和exchange 的区别?不用runtime中的exchange,还有什么方法能达到hook的效果?
题目11.分类,类,代理有相同方法调用时的执行顺序?
题目12 .dispatch_group的底层实现是什么?参照GCD源码
题目13.日志的写文件操作,怎么防止丢最后一条日志?
题目14.你阅读哪些源码,讲讲他们的实现原理?CocoaAsyncSocket?
runtime,runloop?
题目15.Nsoperation和gcd的区别?
题目16.
NSDictionary的实现?
题目17.
OC中提供哪些可扩展的方式?
题目18.保证单例只创建一次,需要加锁
- (id)sharedInstance
{
static __weak ASingletonClass *instance;
ASingletonClass *strongInstance = instance;
@synchronized(self) {
if (strongInstance == nil) {
strongInstance = [[[self class] alloc] init];
instance = strongInstance;
}
}
return strongInstance;
}
题目19.displaylink和timer的区别?
题目20.runloop的理解,几种模式优先级排序
题目21.页面直接卡死,导致无法获取到FPS,怎么解决这个问题,为什么有时候FPS很高,但还是有卡的感觉,获取FPS后,发现卡顿,如何尽可能找到准确的调用栈
题目22.UIViewController的生命周期,如果loadView没有加载view,会在ViewDidLoad中加载调用LoadView,造成死循环

HTTP 和 HTTPS 的区别以及 HTTPS 中的 TLS和 SSL 细节。
SSL 中的对称加密和非对称加密。
DLNA 的 SSDP 发现流程。
ObjC 问题集:NSObject 结构;isa 指针结构;引用计数相关;block 类型、特点及循环引用注意点。
聊了下之前的项目经验;
聊了下 Sepicat 中的一些动画实现;
ASDK 渲染大致原理;RunLoop 各个 Mode 差异;
SDWebImage 中关于 Download 部分的实现;
设计一个异步加载图片缓存库及其优化:这里主要讲了一遍 SDWebImage 的完整流程,画了整个黑板,并且说了一下可以在 Cache 部分把 YYCache 的思路拿过来进行优化;
完整讲了一遍 fishhook 的原理,可以详细看之前写的两篇 fishhook 源码解析;
NSAutoreleasePool 的原理,链表结构及自动释放原理。
项目经验和独立 APP 开发的目的;
大概是如何模拟 Tweet 中缓存上次浏览的 Cell 并上拉刷新,也问了一些图片预加载、数据库 DB 如何根据这种场景来设计等问题。
网友评论