1、ARC和MRC管理内存有什么不同,iOS中内存管理的原理
2、assign和weak的区别,解释一下strong、copy关键词的作用
3、简述一下retain cycle的例子以及如何避免引用循环,顺便设计一下可避免引用循环的timer
4、列举一下iOS中加锁方式,他们的区别是什么
5、在iOS中实现多线程有几种方式?并解释每种方式的优缺点
6、什么是KVC、KVO?KVO实现的原理是什么?
7、如何优化UITableView?列举一下UITableView的优化点。
8、一次完整的http请求都经过哪些环节?并简述https的工作流程
9、你使用过哪些第三方类库?是做什么的?
10、举例说明CocoaTouch中使用过的设计模式?
11、#define DOUBLE(x) x+x int i = 5 * DOUBLE(5) i是多少?
12、layoutSubviews、layoutIfNeeded、setNeedsLayout、setNeedsDisplay、drawRect、sizeThatFits、sizeToFit这些方法的调用时机
13、Category、block底层原理
14、autorelease原理及时机
15、runtime、runloop(这两个居然忘写了😓)
16、gcd全家桶
17、今天看block的内容学习,突然想到一个问题,如下:
```
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
Person *p = [[Person alloc] init];
__weak Person *weakP = p;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)),dispatch_get_main_queue(), ^{ NSLog(@"1-------%@", p); dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)),dispatch_get_main_queue(), ^{ NSLog(@"2-------%@", weakP); });
});
NSLog(@"touchesBegan:withEvent:");
}
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
Person *p = [[Person alloc] init]; __weak Person *weakP = p; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)),dispatch_get_main_queue(), ^{ NSLog(@"1-------%@", weakP); dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)),dispatch_get_main_queue(), ^{ NSLog(@"2-------%@", p); });
});
NSLog(@"touchesBegan:withEvent:");
}
```
猜一猜输出结果是什么样的,想想原因
18、今天(20181029)想到一个问题,int i=10; i++ + i++ + ++i=?这个等于多少呢?不同的编译器会不会不同?想一想
网友评论