美文网首页iOS精品文章-面试iOS面试题iOS-面试题
iOS->论如何优雅简洁并突出重点来回答面试题

iOS->论如何优雅简洁并突出重点来回答面试题

作者: iOS笔记_小张 | 来源:发表于2016-04-30 03:08 被阅读454次
    无论是身处于职场的我们还是处于苦逼学习储备知识的孩子们都明白一个道理,想拿到高新还得靠装逼.那么面试就是你装逼不二之选的机会了,我们都知道进一家公司难,但进去一切又都简单了,面试无疑是最重要的一个环节,那么我们该如何优雅简洁的针对面试题去做出突出重点性的回答呢,我举出下列的面试题例子

    • +load和+initialize的区别是什么?
    1.调用时刻:
    load:类加载进内存调用
    initialize:当第一次使用类或者子类就会调用
    2.调用次数:
    load只会调用一次
    initialize:不确定,具体根据子类和具体调用情况
    比如有个类,它有一个子类,第一次使用子类,父类的initialize调用2次
    
    这样的回答算是很全面的了,且言简意赅,如果面试官还想问你深入一点他会接着问题继续深问下去,又或者你非常了解这个面试题,那么你可以之后再补充深入说一点,但一定要有把握才行,尽量不要出错,出错是非常严重的事情,之前的美好印象会瞬间消失->之前的美好印象会瞬间消失->之前的美好印象会瞬间消失(我说了三遍)

    • UITabBarController控制器中view的内部结构
    1.存放子控制器的view:
    2.UITabBar(标签栏): 49
    ->补充:与导航控制器结构大同小异,都有自己的一个View
    这个View里面有两个View(专门存放子控制器的view和导航栏(NavgationBar))
    
    • 简述你对协议的理解?
    1.为什么使用协议: 思想:当有些事情,自己不想做,交给别人,就搞个协议.实例:Appdelegate
    2.什么时候使用协议: 高级:延展到封装自己框架(自定义类),常常通过协议给外界提供接口(协议)
    ->补充:协议不是代理者,代理者也不是协议的一部分,他们是有区别的
    (初学者很多都把协议和代理者混为一谈,代理者只是类的一个属性属性属性)
    
    • UICollectionView使用步骤?
    1.一定要初始化布局 
    2.设置数据源,展示 代理.处理cell点击
    3.cell必须通过注册 
    4.cell必须要自定义 
    
    • category和extension的区别
    1.是什么?
    category:分类,可以取名
    extension:扩展,类目,匿名
    2.作用?
    category:可以扩展方法,不能添加属性
    extension:可以添加属性,也可以声明方法
    3.用法(区别)?
    category通常用于给系统类 扩充方法
    extension通常用于自定义类
    
    • runtime实现的机制是什么,有哪些用法? 一般用于干嘛?
    ->运行时机制(注意不要答消息机制!!!运行时包括了消息机制),有调用方法,
    ->一开始不确定哪个对象去调用,等运行的时候才会找到相应对象去调用方法.
    1.遍历类中所有属性和方法,可以自己写一套字典转模型工具类(比如MJExtention)
    2.动态给分类添加属性,需求:当想把一个属性保存系统的类中
    3.交换方法,系统方法达不到我们需求,想给系统的方法扩充一些功能
    4.动态添加方法
    
    • 什么时候会发生EXC BAD ACCESS异常?
    1.解释EXC BAD ACCESS:野指针错误
    2.怎么才会导致这个错误:访问不该访问的对象
    3.避免这种:当一个对象被销毁,记得清空指针
    
    • 怎么研究新的API
    1.百度 iOS10API
    2.WWDC和苹果官方文档 英文能力很好 毅力
    3.在新xcode中创建项目,在旧的xcode去打开,发现很多错误,碰见一些感兴趣 查一查
    4.查看别人blog,关注一些牛人微博,猫神,新的技术 及时更新 关注: 简书
    
    • 你是怎么理解bounds的
    1.frame: 控件可视范围 相当于 父控件
    2.bounds: 也是指的是范围 指的是 控件可视范围 在 内容中 区域 . 控件可视范围相对于内容
    3.内容:每个控件都有自己内容,而且是无限大,而且这个控件的所有子控件都是相对于内容
    4.bounds:以自己内容为原点  可视层原点(0,0)与内容层原点(0,0)重叠
    
    • 数据传值的几种方式
    1.顺传:直接定义属性传值
    2.逆传:代理,block (大神是懂block的,所以,亲们...想装逼就去研究block)
    3.通知传值:当谁也拿不到谁的事情,可以采取使用通知传值
    
    • KVC底层怎么实现的
    1.根据key转换成对应set方法,去对象中找到有没有对应的set方法
    2.根据key去查找有没有对应成员属性,不带下划线
    3.根据key去查找有没有带下划线的成员属性
    4.直接报找不到对应key错误
    ->补充: 所以在通常开发中,一般会保证模型的属性名根字典一一对应,
    当然我们一种解决方式,可以重写报错的方法,目的,把报错方法实现给干掉,
    就不会报错,这样就可以不用蓝模型中属性与字典一一对应.
    
    • KVO底层怎么实现的 监听某个对象的属性改变
    ->比如Person的name属性改变
    1.生成Person一个派生类(子类) Person_KVO
    2.在这个子类中重写setName方法 1.给成员属性赋值 2.通知观察者调用observeValueForKeyPath
    3.改变person对象isa 改成Person_KVO
    
    • 简述项目开发的步骤
    ->独立开发
    1.需求文档:描述下应用功能
    2.查看原型图:描述app每个界面 和 怎么与用户交互
    3.根据原型图搭建基本项目结构,开始按模块去开发
    4.界面搭建完,再去查看接口文档,请求数据,然后展示
    ->补充: 当你做项目的时候,碰见一些什么问题. 简历中有一些项目,每个项目列举两个比较难题
    获取全局导航条的时候,最好不要使用appearance,应该去使用appearanceWhenInContain
    
    ->迭代开发
    1.根据组长,项目经理提供excel去做,这里就有每月的任务
    2.需要去寻找找到对应的类做事情,1.根据类名,去猜 2.通过断点去调试,一层一层去寻找
    
    • 如何做一个新的模块
    1.根据原型图,划分结构
    2.搭建界面
    3.参照接口文档,请求数据,展示数据
    4.调整界面细节,提高用户体验
    5.处理界面业务逻辑(功能)
    

    相关文章

      网友评论

      • J_Knight_:楼主写的不错~ 不过我有一个问题,在最后一段“如何做一个新的模块”里面,第四条和第五条的顺序我觉得可以换一下。我个人的习惯是确保了功能完善了后才会微调UI
      • 晨阳聊电影:已收藏,挺好的~正好要面试!
      • xxttw:给力

      本文标题:iOS->论如何优雅简洁并突出重点来回答面试题

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