加载中…
正文 字体大小:

iOS面试总结

(2016-02-21 01:53:08)

前段时间辞职了,因为公司的气氛十分的压抑,而且公司没有一个合格的产品经理,没有明确的产品路线,完全是走一步看一步,几乎除了研发全是副总,而且每此投资人员一来公司,App肯定会有改动,当然有大有小,每次刚刚做好的东西瞬间就会改掉,有得时候一天会改七八次。在这样的没有明确目标的公司做一款产品,我丝毫感觉不到希望,对公司的理念完全失去了兴趣。在这个公司编程变成了一件枯燥的事情,这根本不是我想要的生活,我不想干了,重要的是失去了感觉和编程的乐趣。(真的是这样,乐趣的确很重要,乔布斯都这么说)。
知之者不如好之者,好之者不如乐之者。五千年前孔子已经道出了成功的境界之所在,当你成为一名乐之者的时候,事实上已经把工作当成了玩,就像玩游戏打怪升级一样,很有快感和成就感。当你沉浸在一件事情的时候,你就很容易吧这件事情做好,因为你的兴趣在这件事情上,你乐意去完成它,即便有困难,我想你也乐意去解决。
好的扯得有点远了,PS:哪位的公司愿意收留请私信我,下面我来贴出来我面试的时候遇到的面试题。

第1题
@implementation Son : Father
- (id)init{ self = [super init];
   if (self) {
      NSLog(@"%@", NSStringFromClass([self class]));  
      NSLog(@"%@", NSStringFromClass([super class]));
      NSLog(@"%@",NSStringFromClass(self.superclass));
   }
 return self;
}
@end
//打印结果就是
Son
Son
Father
我来告诉大家为什么
当 发送 class 消息 时不管是 self  还是 super 其消息主体依然是  self ,也就是说 self 和 super 指向的 是同一个对象。只是 查找方法的位置 区别,一个从本类,一个从本类的超类。
一般情况下  class 方法 只有在 根类 NSObject 中定义,极少情况有子类重写 class 方法,
所以  [self  class] 和 [super class] 都是在 根类中 找方法实现, 消息接收主体 又都是 a
如果重写可能会不一样。
自然都打印出  Son
第2题

UIView、UIWindow和CALayer的联系和区别

UIView负责渲染矩形区域内的内容,为矩形区域添加动画,相应区域的触摸事件,布局, 和管理一个或多个子视图,UIWindow是一个特殊的UIView,通常在一个程序中只有一个UIWindow,但可以手动创建多个添加到程序中
UIWindow主要起三个作用:
1、作为容器,包含程序所有要显示的视图
2、传递触摸消息到其他的UIView或其他对象
3、与UIViewController协同工作,完成设备方向旋转的支持
CALayer是绘制内容的,不处理事件响应,与UIView是相互依赖的,依赖于UIView来显示绘制内容,UIView依赖于CALayer来提供内容
第3题

通常引用一个类有两种办法:
一种是通过#import方式引入;另一种是通过@class引入;
这两种的方式的区别在于:

1、#import方式会包含被引用类的所有信息,包括被引用类的变量和方法;@class方式只是告诉编译器在A.h文件中 B *b 只是类的声明,具体这个类里有什么信息,这里不需要知道,等实现文件中真正要用到时,才会真正去查看B类中信息;

2、使用@class方式由于只需要只要被引用类(B类)的名称就可以了,而在实现类由于要用到被引用类中的实体变量和方法,所以需要使用#importl来包含被引用类的头文件;

3、通过上面2点也很容易知道在编译效率上,如果有上百个头文件都#import了同一 个文件,或者这些文件依次被#improt(A->B, B->C,C->D…),一旦最开始的头文件稍有改动,后面引用到这个文件的所有类都需要重新编译一遍,这样的效率也是可想而知的,而相对来 讲,使用@class方式就不会出现这种问题了;

由上可知,@class是放在interface中的,只是在引用一个类,将这个被引用类作为一个类型,在实现文件中,如果需要引用到被引用类的实体变量或者方法时,还需要使用#import方式引入被引用类。

第4题

OC中的属性修饰符,查看一下 博文 ,写的很清楚。

第5题
iOS面试总结


相信很多人都遇到了这个问题了吧!哈哈,没错我也遇到了,因为是纯看代码,没有Xcode进行实操,所以还是又辣么一点点小难度的。
其实个人感觉这段代码并没有什么太大的错误,只是考考你是不是处女座(换句话说就是考验你的代码规范)

iOS面试总结


这是我个人改的,可能每个人的变成习惯不一样,所以答案也不唯一,这道题的初衷大概就是的窥视面试者的编程规范。
这里给出原因,我参考的 博客

第6题

试着定义一个block

typedef void(^selectRowAtIndex)(NSInteger index);
@property (nonatomic, copy)selectRowAtIndex handle;
//其实这些代码要是用Xcode写出来的话我相信有点经验的都可以随手写出来,但是要是写在纸上还是很恶心的一件事,不是么?

反写block:写出下面代码的Block的定义。

[UIView transitionWithView:self.view  
                  duration:0.2  
                   options:UIViewAnimationOptionTransitionFlipFromLeft  
                animations:^{ [[blueViewController view] removeFromSuperview]; [[self view] insertSubview:yellowViewController.view atIndex:0]; }  
                completion:NULL]; 
答案:
typedef void(^animations) (void);
typedef void(^completion) (BOOL finished);
第7题

这里留个尾巴,之后的时间会继续补充。哈哈。

欢迎大牛补充和指点。
欢迎关注我的 微博 和 博客 。





本站系本网编辑转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本网联系,我们将在第一时间删除内容![声明]本站文章版权归原作者所有 内容为作者个人观点 本站只提供参考并不构成任何投资及应用建议。本站拥有对此声明的最终解释权



一、本站内收录的所有教程与资源均来自于互联网,其版权均归原作者及其网站所有,本站虽力求保存原有的版权信息,但由于诸多原因,可能导致无法确定其真实来源,请原作者原谅!如果您对本站教程与资源的归属存有异议,请立即通知优设,情况属实,我们会第一时间予以删除,并同时向您表示歉意!看着优设真诚的小眼神,绝对不是故意侵犯原作者版权的哦!如果您有优秀的作品,优设也会帮您在微博扩散推荐。 二、本站转载的教程与资源仅为资源共享、学习参考之目的,很难对其可用性、准确性或可靠性做出任何承诺与保证。本站无法对任何由于使用或无法使用本站提供的教程与资源所造成的损失负任何责任。 三、本站通过互联网转载的教程与资源,或是站内作者自己提供的教程与资源,版权均归原作者所有,未经原版权作者许可,任何人不得擅作他用!您可以复制、转载和传播本站的任何信息,但务必在转载时注明来源,尊重其知识产权,并自负版权等法律责任。
[视频] --
http://www.lexue163.com/v_595_hToCA3HRV4A3.html
iOS面试总结

0

阅读 评论 收藏 转载 喜欢 打印举报
已投稿到:
  • 评论加载中,请稍候...
发评论

       

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有