美文网首页
关于iOS面试要注意的问题(自留)

关于iOS面试要注意的问题(自留)

作者: 彭小先生 | 来源:发表于2018-05-09 14:46 被阅读0次

本文是对观看sunnyxx(孙源)大神直播写的记录,加强自己的记忆,也希望对同行们有所帮助

关于简历方面

1、项目描述过于简单宽泛

项目规模?你在其中的职责?详细介绍使用的技术栈?遇到的挑战以及如和解决的?

2、专业技能千篇一律

在列举技术名词的时候最好写出用这个技术干了什么。比如“熟练运用 objc runtime,曾使用它做了ViewController 进入和退出时的AOP埋点”

3、格式、拼写、细节

Object-C//这个我相信没人知道是啥写全时最好的 Objective-C
Foudation//拼写错误
ios/IOS/Ios//iOS这样更好
AFNetWorking//networking是一个单词不需要驼峰
xcode/Xcode//第二个肯定更正确

4、需要提供更多的信息来体现你的特别
Blog GitHup
技术探索
对技术的个人理解以及做过什么有意思的事

5、谦虚、真实

写最真实的简历,这个还是很重要的吧

面试套路

这一块也是根据面试官不同而又差异性。列举几个

1、最近的工作经历,做了什么App,拿出来玩一玩。询问面试者负责的是哪一部分。
2、找面试者最熟悉的业务。描述大概的设计结构,UI层级,交互效果,布局等(考察基本业务能力,熟练程度,质量)
3、考察基础问题。如内存基础,多线程等。答的可以会深挖。
4、很厉害了了就会问一些高级的问题,涉及到底层原理这些。

建议:

  • 不会的问题可以猜一下,不要陷入无限的思考和一本正经的胡说八道。也可以当场请求面试官,学一下。
  • 保持沟通顺畅
  • 保持谦虚,不要装x

几个iOS面试题

//@property能使用哪些关键字及作用是什么
//下面四种写法有什么区别?
@property(nonatomic, strong)NSArray *array0;
@property(nonatomic, copy)  NSArray *array1;
@property(nonatomic, strong)NSMutableArray *array2;
@property(nonatomic, copy)  NSMutableArray *array3;
//可使用的关键字:
strong:强引用,增加对象的引用计数。会引起外界对象改变导致自己也会改变
copy:复制对象,防止外界对象改变对自己进行改变
weak:弱引用。对象消失后会将指针指向nil
assign:简单赋值。一般用于基础类型数据
//区别:
第一种跟第二种的写法,一般采用第二种。因为如果外界的对象对属性赋值后,如果使用strong修饰那么属性值也会更该,相反copy修饰不会。
第三种跟第四种写法也是采用第三种。因为可变对象用copy修饰后会变为不可变对象,这时再写不可变方法就会crash。
基本内存管理
//下面对象分别都在什么时候释放
- (void)ARCProblem {
id obj0 = @"sunnuyxx";
__weak id obj1 = obj0;
id obj2 = [NSObject new];
__weak id obj3 = [NSObject new];
{
    id obj4 = [NSObject new];
}
__autoreleasing id obj5 = [NSObject new];
__unsafe_unretained id obj6 = self; 
}
//解答
obj0:一直在,常量区
obj1:不会释放跟0有关
obj2:用完obj2就会释放
obj3:本行结束之后就没了
obj4:在区域结束时结束
obj5:自动释放池
obj6:该修饰词不会做任何操作,不知道什么时候释放
 UIViewcontroller
//这样写会发生什么?
- (void)viewDidLoad{
      [super viewDidLoad];
      self.view = nil;
}
//很可能发生递归,不是很确定。大家可以自己测试一下
关于UITableViewDataSource 和UITableViewDelegate的主要方法还有调用顺序。
这个我们自己测试一下就好了。
block内存管理
//如何解决下面代码问题
-(void)blockRetainCycleProblem{
self.block = ^{
      NSLog(@"%@",@[self]);
  };
}//循环引用。block跟self相互持有,如果这里不是self的block就不会出问题
//解决方法
-(void)blockRetainCycleProblem{
__ weak  typeof(self) weakSelf = self;
self.block = ^{
      NSLog(@"%@",@[weakSelf]);
  };
}//这是我经常写的方法
-(void)blockRetainCycleProblem{
__ weak  typeof(self) weakSelf = self;
self.block = ^{
     __ strong  typeof(weakSelf) strongSelf = weakSelf;
    NSLog(@"%@",@[strongSelf]);
  };
}//第二种
-(void)blockRetainCycleProblem
{
__ weak  typeof(self) weakSelf = self;
self.block = ^{
     __ strong  typeof(weakSelf) strongSelf = weakSelf;
     if(strongSelf)
    {
       NSLog(@"%@",@[weakSelf]);
    }
  };
}//第三种
第一种:是我经常写的方法,这里出问题了如果self释放了,weakSelf指向nil,数组里面放nil也一样会crash。
第二种:接一下的时候很可能weakSelf已经置为nil,一样会crash。
第三种:做一次判断是否nil,完善了写法。
block内存管理扩展
- (void)blockRetainCycleProblemExt
{
//下面的self用不用weak?
  [UIView animateWithDuration:1 animations:^{
    self.view.frame = CGRectMake(1,2,3,4);
  }];
  //那这个呢?
  [UIView animateWithDuration:1 delay:100000 optios:0 animations:^{
    self.view.frame = CGRectMake(1,2,3,4);
  } completion:nil];
}
//解答 :
类方法。这里面的block是瞬间执行的。
理解应用架构
//对 MVC 和 MVVM 的理解真的到位么
深入理解内存管理
1、Stack 和 Heap 分别的使用,如何管理?
2、ARC 是如何实现的?
3、Autorelease 对象如何释放?
4、AutoreleasePool 是如何实现的?
理解 Class 和对象模型
理解 RunLoop
深入理解消息机制
//从写下 [ obj foo]这行代码直到运行时 foo 被调用,
//尽量详细的描述,中间都发生了什么?
掌握:objc_msgSend 的关键调用,后续如何通过 selector 从 isa 找到 IMP,若运行时没找到 foo 会如何?
精通:编译器如何编译成 objc_msgSend、 消息 cache 机制、消息转发机制、 objc_msgSend 的各个版本、objc_msgSend 的实现、跳板机制等等
魔法数字
//64位,下面魔法数字会输出什么,为什么?
- (void)magicNumberProblem
{
    NSLog(@"%@",11529223390768879413UL);//Tagged Pointer
}
另辟蹊径的 block 调用
//如果禁止直接调用:block();
//那能否找到2个以上另辟蹊径的方式让 block 被调用?
void (^block)(void) = ^{
    NSLog(@"block get called");
};
block();//禁止调用
//解决:
让别人帮你调用 传入block
[UIView animateWithDuration:0 animation:block];//这里的bolck立马调用
dispatch_async(dispatch_get_main_queue(), block);
[[NSBlockOperation blockOperationWithBlock:block] start];

谈谈iOS进阶

漫长的知识点积累

  • 看书
  • 看博客
  • 实战总结
  • 刨根问底
    联想、理解,有自己的思考、对技术的主见

总结

看完直播后感觉基础好差。积累的还是不够多,接下来就这针对这些问题好好的研究研究了。

相关文章

  • 关于iOS面试要注意的问题(自留)

    本文是对观看sunnyxx(孙源)大神直播写的记录,加强自己的记忆,也希望对同行们有所帮助 关于简历方面 1、项目...

  • runtime的总结

    这段时间招人,也自己出去面试了几家,发现现在iOS出去面试,关于runtime是个必问的问题,确实在iOS的开发中...

  • 丁香园iOS电话面试问题总结

    丁香园iOS电话面试问题总结 丁香园iOS电话面试问题总结

  • iOS-OC对象原理_isKindOfClass&isMembe

    前言 在iOS面试中,经常会被问到关于isKindOfClass和isMemberOfClass相关的问题,比如下...

  • iOS 10适配

    随着iOS10的发布,App的适配成为大家迫切需要解决的问题,下面总结了一些关于iOS10适配需要注意的问题。 1...

  • iOS 面试收录

    收录前言:网上收录iOS 面试中可能会遇到的问题 iOS面试题-面试常问问题(一) include、#import...

  • iOS程序员面试,绝对会遇到这些问题!

    iOS程序员面试,绝对会遇到这些问题! iOS程序员面试,绝对会遇到这些问题!

  • MVC的实际使用

    这里就不在多说ios关于架构方面的其他问题了,有关MVP、MVVM等的问题请看我的另一篇文章ios面试题目总结。 ...

  • iOS 开发面试通关指南:67 个必知问题!

    iOS 开发面试通关指南:67 个必知问题!iOS 开发面试通关指南:67 个必知问题!

  • iOS好文整理

    大神: iOS_吴白iOS大全_破船之家sunnyxx 架构,多线程,源码 面试 ----iOS 面试常见问题最全...

网友评论

      本文标题:关于iOS面试要注意的问题(自留)

      本文链接:https://www.haomeiwen.com/subject/pxumrftx.html