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