美文网首页
YHM-iOS面试题

YHM-iOS面试题

作者: 行走在北方 | 来源:发表于2019-06-22 17:31 被阅读0次

    1、假如Controller太臃肿,如何优化
    1.将网络请求抽象到单独的类中
    方便在基类中处理公共逻辑;
    方便在基类中处理缓存逻辑,以及其它一些公共逻辑;
    方便做对象的持久化。
    2.将界面的封装抽象到专门的类中
    构造专门的 UIView 的子类,来负责这些控件的拼装。这是最彻底和优雅的方式,不过稍微麻烦一些的是,你需要把这些控件的事件回调先接管,再都一一暴露回 Controller。
    3.构造 ViewModel
    借鉴MVVM。具体做法就是将 ViewController 给 View 传递数据这个过程,抽象成构造 ViewModel 的过程。
    4.专门构造存储类
    专门来处理本地数据的存取。
    5.整合常量

    作者:iOS猿_员
    链接:https://www.jianshu.com/p/80090864f325
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
    2、讲讲队OC的runtime的理解,为什么说OC是动态运行时语言
    runtime是一套比较底层的纯C语言API, 属于1个C语言库, 包含了很多底层的C语言API。
    在我们平时编写的OC代码中, 程序运行过程时, 其实最终都是转成了runtime的C语言代码, runtime算是OC的幕后工作者 。
    动态。 主要是将数据类型的确定由编译时,推迟到了运行时。
    3、isa指针的作用
    isa:是一个Class 类型的指针. 每个实例对象有个isa的指针,他指向对象的类,而Class里也有个isa的指针, 指向meteClass(元类)。元类保存了类方法的列表。当类方法被调用时,先会从本身查找类方法的实现,如果没有,元类会向他父类查找该方法。同时注意的是:元类(meteClass)也是类,它也是对象。元类也有isa指针,它的isa指针最终指向的是一个根元类(root meteClass).根元类的isa指针指向本身,这样形成了一个封闭的内循环。
    作者:natewang
    链接:https://www.jianshu.com/p/05fecee74e97

    4、讲讲你开发中遇到的crash,怎么快速发现,怎么解决

    1、数组越界导致的崩溃。-[__NSArrayI objectAtIndex:]: index 100 beyond bounds [0 .. 99]'
    2、数据集合类型,如字典、数组中插入元素时,插入空指针nil。
    3、调用当前对象类中不存在的方法导致崩溃。
    '-[AppDelegate button1]: unrecognized selector sent to instance 0x8c764c0'
    4、数据接收时,服务器返回数据不规范,如字典或数组元素中存在null,且客户端没做处理导致的崩溃。
    5、内存管理不当,向野指针发送消息导致的崩溃。
    6、一些masonry布局有问题
    一般报错为:EXC_BAD_ACCESS

    作者:SuperBoy_Timmy
    链接:https://www.jianshu.com/p/adca91242113
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

    5、讲讲对block的认识,block的修饰语是什么,为什么有的需要用weak有的不需要
    Block 是一个里面存储了指向定义 block 时的代码块的函数指针,以及block外部上下文变量信息的结构体。
    简单来说就是:带有自动变量的匿名函数。
    用 weak 修饰的Block 存放在栈区,属于 StackBlock
    注意:Block 引用普通外部变量,都是在栈区创建的,只是用 strong、copy 修饰的 Block 会把它从栈区拷贝到堆区一份,而 weak 修饰的 Block 不会;
    6、讲讲你对APP架构的理解
    https://www.jianshu.com/p/0ea6b72ea1a3
    7、请简述你在iOS开发过程中遇见最大的技术问题,难点是什么,怎么解决的
    皆出自网络,学习使用,如果有问题请私聊

    相关文章

      网友评论

          本文标题:YHM-iOS面试题

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