美文网首页
iOS面试准备

iOS面试准备

作者: a6750108cb56 | 来源:发表于2018-07-16 17:30 被阅读17次

面试准备

  1. runloop理解

    • runloop其实是一个函数,内部是do-while循环。
    • 它接受两种不同类型的源来处理事件
      • 输入源提供异步事件
      • 计时器源提供同步事件
    • 苹果用runloop 实现了5种不同的功能;
    1. APP默认mode,通常主的线程在这个mode下执行
    2. 界面追踪mode,用于 scrollview 追踪触摸滑动,保证界面滑动时不受其他mode影响
    3. 启动时mode
    4. 接受系统事件mode
    5. 占位mode
  2. 除了UIKit 和 Foundation 这两个常用的系统框架外,还有那些其他的系统框架?

    • cocoa touch :UIkit
    • cocoa serveice:foundation
    • media:媒体层
    • coce os:系统层
    • 用到的比如有 healthkit、gameKit、clound、ML、AR。
  3. 直接继承于UIView 的子类有哪些?

    • 最底层的一个UIWindow
    • button、switch、textField、segment 都是继承自uicontroller
    • label、scrollview、imageview、uitabbar
  4. ios 与 c ,c++ 混编, 遇到过什么 问题?

  5. .NSUserdefaults 对setObject 的 object有大小限制吗?读取时是将整个userDefaults读取,还是只读取某个数据?

    • 没有
    • 它本质是一个plist文件,查找的时候回遍历一遍,所以存大数据不妥
  6. .程序启动时,Appdelegate 会调用什么回调方法?

    • 启动会调用didfinishlunchingwithoptions 方法
    • 锁屏、电话、短信 会调用willresignactive方法
    • become nactive 是当程序全新启动时调用的
    • DidEnterBackground : 进入后台
    • WillEnterForeground: 从后台进入前台,如果不是在后台则不走这个方法
  7. 如何读取一个2g文件的其中一段,例如读取第100-200字节的数据?

    • 如果是确定的多少到多少 ,可以把大文件分成一个一个的小文件进行操作
    • 虚拟内存映射,读取到硬盘中,跟内存读取速度差不多
  8. GCD

    • GCD可以指定串行还是并行、也可以指定优先级
    • 通过block来处理回调
    • 防止形成死锁,比如说在串行线程回调里又写了一个同步线程
  9. block

    • 本质上是一个匿名函数
    • 使用时注意使用copy,函数体内注意循环引用,修改函数体内的参数需要使用 __block 修饰
  10. KVC

    • 建值编码,简化了Model的处理
    • 可以访问SDK中 .h 中的成员变量
    • 正常访问一个对象的值都需要get或set方法,但是KVC支持在运行时动态的改变对象的属性值。
  11. KVO

    • 依靠运行时动态创建该类的子类,然后重写被观察的setter方法,setter方法监听方法是否被调用来发起通知
  12. runtime

    • oc 的动态机制和面向对象的基础
  13. 网络通讯机制

  14. struct和class的区别

    • 成员的默认访问权限,struct是public,class是private
  15. 观察者模式

    • 本质上是发布-订阅,用于对不同对象之间的解耦
    • 用途有两个:1:将改变发送给所有对象,但是不知道这些对象的具体类型;代表有notification
    • 2:改变发生在同一个对象中,要改变其他的与之相关的对象且不知道对象有多少个;代表有kvo
  16. 在一个https连接的网站里,输入账号密码点击登录后,到服务器返回这个请求前,中间经历了什么?

    1. 客户端发起请求,将数据传给服务器
    2. 服务器分析是否发送密钥给客户端
    3. 发送密钥给客户端
    4. 客户端拿到密钥对信息进行加密
    5. 客户端发送加密信息
    6. 服务端返回加密信息
    7. 客户端解密信息
    8. 客户端显示信息
  17. 在一个app中间有一个button,在你手触摸屏幕点击后,到这个button收到点击事件,中间发生了什么?

    1. 设备将touch得到的UItouch 和 UIEvent 对象打包,放到Application事件队列
    2. Application 从事件队列中取出触摸事件传递给UIWindow
    3. UIWindow调用hitTest:withEvent:方法找到touch事件所在view

runloop中的体现

1. runloop被唤醒
2. 处理输入源异步事件
3. runloop进入休眠

相关文章

  • iOS面试准备之思维导图

    iOS面试准备之思维导图

  • iOS面试准备

    面试准备 runloop理解runloop其实是一个函数,内部是do-while循环。它接受两种不同类型的源来处理...

  • iOS面试准备

     具备扎实的C/C++、Objective-C编程基础,熟练掌握Swift,对OOD/OOP有深刻的理解,并具有...

  • iOS面试准备

    1.Cocoa框架: Cocoa是OS X和iOS操作系统的程序的运行环境。 是什么因素使一个程序成为Cocoa程...

  • iOS面试准备

    堆与栈的区别 http://my.oschina.net/jilin/blog/402054 atomic与non...

  • iOS面试准备

    1、YYModel在Swift中的使用与OC中有没有什么不同?(此问题为小众问题) 不同:1)、无法将 Model...

  • 阿里腾讯头条美团等iOS面试总结

    阿里iOS面试总结 头条iOS面试总结 腾讯iOS面试总结 百度iOS面试总结 美团iOS面试总结

  • iOS 面试准备题

    现在又想再写一波面试题,作为自己工作的总结. static NSString * const str = @"s...

  • iOS面试前准备

    iOS是一个庞大的平台,涵盖2711个类,644个协议和125个框架。在准备iOS采访时,绝对检查所有API文档的...

  • iOS面试准备资料

    OC篇: 阿里、字节 一套高效的iOS面试题解答(完结):https://www.jianshu.com/p/c1...

网友评论

      本文标题:iOS面试准备

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