时长:1小时18分钟
1. 自我介绍:约5分钟
2. 开放性问答
2.1 你如何与团队成员之间进行高效沟通?
2.2 每个人都负责一个模块,那最后进行汇总组装的时候,如何进行测试?
3. iOS基础
3.1 MVC是指什么?
3.2 如何改进MVC的缺点?(引入MVVM)
3.3 既然引入了MVVM,那我为什么不在MVC中让Model引用View,或者View引用Model从而进行优化?(不可以,违反了单一职责原则,且加剧了耦合度)
3.4 为什么选择SQLite作为项目的持久化方法而不选择其他的?
3.5 对于一个触摸事件,iOS是如何识别并且执行具体逻辑的?(runLoop + 响应者链)
3.6 你在进行性能优化的时候,如何进行监测?(Xcode的instruments工具)
3.7 你刚刚说对TableView进行了优化,那在用户看来,为什么就会觉得卡顿?(屏幕刷新率、Vsync信号以及runLoop)
3.8 你使用过cocoaPods,那cocoaPods是完成哪些工作的?(管理第三方库、实现组件的管理)
3.9 如何使用cocoaPods管理组件化?
3.10 组件与平常使用的第三方库有什么区别?
4. 计算机网络
4.1 刚刚提到了socket通信,那么对于服务器来说,socket通信有哪些具体的步骤?
4.2 TCP三次握手的过程?
4.3 TCP四次挥手的过程?
5. 手撕——整数转换为罗马数字,leetcode 12,并分析时间复杂度。
6. 反问
6.1 您团队负责iOS开发的哪些工作?
6.2 对于目前iOS就业困难的现状,以及前端和跨端技术给iOS带来的冲击,您有哪些看法?