最近在准备ms,发现了一些比较尖锐的问题,可能平时开发注意不要,本身也会可是就是不能清晰的表达出来,问题比较宽泛再此作个总结(下面附部分答案,答案为本身理解结合百度,可能有些不标准欢迎各位提出意见)。问题持续更新,答案也持续更新。欢迎投稿。这些都会了我以为找工做应该没问题了。这些知识是一些简单的点,真正面试的时候确定会有比这儿更深的层次,这只是引出一个问题的点。仍是须要多学习面试
iOS底层
- KVO的实现原理,KVC是什么,他是如何实现的
- 请简单介绍一下Runtime,以及它的原理和应用(消息发送机制,动态解析。应用防止崩溃)
- 什么是block?(堆block,栈block,全局block)
- weak的实现原理。
- 通知和代理的区别。
- 说说你读过的第三方库工做流程。
- oc类的本质是什么?他的结构是什么,他是如何初始化的。
- Swift类的初始化发生了什么
架构
- 谈谈MVC,MVVM,MVP的三种架构各自的优缺点。
设计模式
- 适配器
- 装饰器
- 迭代器
- 工厂模式,抽象工厂,简单工厂模式的区别
- 对象池(可选)
- 适配器
- 代理
- 单例的优缺点
...算法
网络相关
- 什么是http,它与https的区别
- tcp和udp的区别,介绍一下三次握手,四次挥手,为啥链接要三次,断开要四次挥手
- alamofire或者AFN的证书认证。
线程
- 何时会形成线程死锁
- Runloop是什么以及它的工做流程
- NSOperation和GCD的区别。
- 线程与进程的区别。
数据结构与算法
- 链表是什么,如何肯定链表有环
- 如何用队列实现一个栈,或者用栈实现一个队列。
- 二分法查找的实现流程
- 说说你知道的排序算法的实现以及他们的时间复杂度,以及稳定性。