https://www.jianshu.com/p/61fad83c8a3f
https://www.jianshu.com/p/781595503c61
监测 线上app https://www.cnblogs.com/dsxniubility/p/5493117.html
1. http1.0 http1.1 http2.0 区别?
2. AFNetworking 3.0区别?
3.监听卡顿
4. +load +initialize
5. leeCode答案
3.ARC
http://luoxianming.cn/2017/05/06/arc/
ARC
还对内存调用函数进行了优化,即ARC
相关的函数不通过Objective-C
的消息派发机制,而是直接调用底层的C
函数。而且ARC
是在编译器自动添加引用计数函数调用,而不是运行时判断。综上所示,因为这些原因,所以ARC
性能要优于手动引用计数。
2.多线程 多读单写?
1.DISPATCH_QUEUE_SERIAL 串行队列,单读单写
2.DISPATCH_QUEUE_CONCURRENT 并发队列
static dispatch_queue_t _concurrentQueue = dispatch_queue_create("com.person.syncQueue", DISPATCH_QUEUE_CONCURRENT);
- (void)setName:(NSString *)name {
dispatch_barrier_async(_concurrentQueue, ^{
_name = [name copy];
});
}
- (NSString *)name {
__block NSString *tempName;
dispatch_sync(_concurrentQueue, ^{
tempName = _name;
});
return tempName;
}
在队列中,barrier块必须单独执行,不能与其他block并行。这只对并发队列有意义,并发队列如果发现接下来要执行的block是个barrier block,那么就一直要等到当前所有并发的block都执行完毕,才会单独执行这个barrier block代码块,等到这个barrier block执行完毕,再继续正常处理其他并发block。在上面的代码中,setter方法中使用了barrier block以后,对象的读取操作依然是可以并发执行的,但是写入操作就必须单独执行了。
3.子线程里创建的对象什么时候释放?子线程的autoreleasepool释放时机?
每一个线程创建的时候就会有一个autorelease pool的创建,并且在线程退出的时候,清空整个autorelease pool。
4.判断二叉树是否是搜索二叉树(要求非递归)?
5.weak指针的hash表,是所有对象销毁的时候都会去访问这个表吗?
6.tcp如何解决数据传输安全?
1. 停止等待协议
每发送完一个分组,就停止发送,等待对方确认,收到确认后再发送下一个分组。
2. 连续ARQ协议
利用滑动窗口,位于滑动窗口内的所有分组都可以连续的发送出去,而不需要逐个等待对方的确认。
7. 1...n个数,两个线程打印,线程1打印1 3 5...,线程2打印2 4 6...,2在1后面?
10.如何hook某个实例的方法?
/// 在交换方法之前要先判断将要替换的方法是否存在
Bool isExist = class_addMethod (classA, originalSelector, method_getImplementation (swizzlingMethod), method_getTypeEncoding (swizzlingMethod));
/// 实现方法交换if (isExist) {
class_replaceMethod (classA, swizzledMethod, method_getImplementation (swizzlingMethod), method_getTypeEncode (swizzlingMethod));
} else {
method_exchangeImplementations (originMethod, swizzlingMethod);
}
11.tableView优化,启动优化,ipa瘦身?
12.如何检测卡顿,线上包,结合runloop?
13.自动布局,A B C垂直排列,根据数据源不同B可能隐藏,怎么排列?
自动布局 https://www.jianshu.com/p/72162d58b7ca
Masonry install/uninstall https://www.jianshu.com/p/b6bd3e805a82
14.项目中遇到的难点?
15.iOS工程加固
https://juejin.cn/post/6931178491991818254?utm_source=gold_browser_extension
1.http请求优化
2.app启动优化
3.友盟/诸葛IO 统计设计框架(缓存 数据库线程)
4.算法,1到n中间缺一个数字,尽快找出