sunnyxx的直播,边看边做笔记。个人觉得比较有用的一些部分内容记录了下来,感兴趣的同学可去阳神直播地址观看全部内容。
阳神直播地址:http://m.quzhiboapp.com/#!/intro/115
1、关于runtime
不要吹牛逼说runtime用的多么熟练,多么精通。要想吹牛请举个栗子:运用在ViewController上运用runtime进行一些埋点操作,在进入或出去的时候进行一些打点记录,利用AOP可以减少重写率
2、面试套路
最近工作经历中,做的什么App,拿出来耍一耍,询问面试者负责的哪部分[考察前一份工作的难度]
让面试者找个熟悉的业务,描述下大概的设计结构、UI层级、控件的使用、布局、交互效果等[考察几本业务能力、熟练程度、质量]
3)考察几个基础的问题,如内存管理、多线程,若答的不错,顺着引申几个深入的问题。
4)从简历中声称熟练或掌握的技术中找几个深聊下[考察对技术的深挖能力、探索能力和原理性的掌握]
5)若答的一般,让面试者找自己研究过的,或者有新的的东西,你会什么咱们问什么。
6)若前面回答的非常不错,考虑更考验深度的问题
7)顺带看看沟通是否顺畅
3、面试题
1)@property 能使用哪些关键字、作用是什么;下面这4种写法的区别?
@property (nonatomic, strong) NSArray *array0;
@property (nonatomic, copy) NSArray *array1;
@property (nonatomic, strong) NSMutableArray *array2;
@property (nonatomic, copy) NSMutableArray *array3;
2)下边对象分别都在什么时候释放
- (void)ARCProblem{
id obj0 = @"sunnyxx";
__weak id obj1 = obj0;
__strong id obj2 = [NSObject new];
__weak id obj3 = [NSObject new];
{
id obj4 = [NSObject new];
}
__autoreleasing id obj5 = [NSObject new];
__unsafe_unretained id obj6 = self;
}
- 如何解决下面代码的问题
- (void)blockRetainCycleProblem{
self.block = ^{
NSLog(@"%@",@[self]);
};
}
4)下面的 self 用不用weak,为什么
- (void)blockRetainCycleProblemExt{
[UIView animateWithDuration:1 animations:^{
self.view.frame = CGRectMake(1, 2, 3, 4);
}];
//那这个呢
[UIView animateWithDuration:1 delay:1000 options:0 animations:^{
self.view.frame = CGRectMake(4, 1, 2, 3);
} completion:nil];
}
5)对下列代码规范进行矫正
typedef enum {
UserSex_Man,
UserSex_Womain
}UserSex;
@interface UserModel : NSObject
@property(nonatomic, strong) NSString *name;
@property(assign, nonatomic) int age;
@property (nonatomic, assign) UserSex sex;
-(id)initUserModelWithUserName: (NSString*)name withAge:(int)age;
-(void)doLogIn;
@end
6、知识点扩展
1)对MVC和MVVM的理解真的到位么。为什么说MVVM并不是把VC中部分代码放到Model中,这样做只是拆代码并不是架构方面的变化,MVVM模式中 视图与ViewModel之间的绑定如何实现。
2)Stack 和Heap 分别的使用,如何管理?
3)ARC是如何实现的?
4)Autorelease对象何时释放
5)AutoreleasePool 是如何实现的?
6)理解Class 与 对象模型
7)理解RunLoop
8)深入理解消息机制