面试流程
作为一名拥有两年经验的iOS开发者,在2023年收到阿里P5面试邀请并完成了三轮面试,这是一次非常荣幸的经历。以下记录的面试过程主要是为了让大家了解面试中可能会出现的问题,以便查缺补漏。
请注意,每个面试都是独一无二的,而扎实的基础知识始终是最重要的。如果您正在准备校招或者中级开发的面试,这份记录可能会对您有所帮助。但对于P6及以上级别的高级开发人员,建议慎重参考。
第一轮面试
- 基础性考察,线上面试,筛选出基础扎实、逻辑思维清晰、解决问题能力强的iOS开发人员,为后续领导面试节省时间
- 询问关于iOS开发基础的问题,包括但不限于算法、计算机网络、设计模式、操作系统以及组成原理相关的知识
第二轮面试
- 具体用人部门的领导面试,线上面试,进一步考察候选人在实际项目中的应用能力和适应性,需要候选人准备好相关项目经验
- 根据候选人的项目经历进行提问,了解候选人在实际项目中的角色、工作内容以及所承担的责任。此外,面试官也会询问候选人对于项目的难点和优点的看法,以及对于架构设计的优缺点的评价
第三轮面试
- 主管领导面试,线下面试。这一轮面试将深入考察候选人在技术上的能力和经验,需要注意部分英文表达的准确性
- 根据候选人的具体情况进行面试,对技术细节进行深入探讨,并考察候选人对于技术知识点的深入程度
面试问题汇总
你可以根据这些问题对自己掌握的知识进行查缺补漏,进一步提升自己的技术能力
iOS开发知识
- 对于OC的动态性,你有什么样的理解?
- 什么是离屏渲染?它产生的原因是什么?
- 在什么场景下使用关联对象?
- 有哪些与动画卡顿相关的问题?
- 你知道哪些线程保活的方式?
- 你使用过哪些锁?能具体介绍一下吗?
- 多种计时器的使用有哪些问题?
- 如何检测
Bug和崩溃,包括线上版本? - 你有哪些使用
KVC和KVO的经验? - 除了加锁,多线程安全问题有哪些方法?
- 什么是
runtime?你如何理解它?它有什么用处? - 什么是
runloop?你如何理解它?它有什么用处? - 你有使用
CoreData的经验吗?你可以分享一下你的使用体验和注意事项吗? - 你知道哪些性能优化的方法?你能具体介绍实现原理吗?
- 如何检测卡顿?你能具体介绍实现原理吗?
- 内存占用过高的检测方法是什么?你能具体介绍实现原理吗?
- 你使用过
openGL、openCV、metal吗?你可以分享一下你的使用体验和注意事项吗? - 根据你的项目经历,可以分享一下你项目中的难点和优点,以及架构设计的优缺点吗?
- 你知道哪些第三方框架?你有看过哪些源码?它们使用了哪些技术?它们有什么优缺点?它们的架构设计是怎么样的?
- 多线程有哪些实现方式?
GCD和NSOperation的优缺点是什么?你可以详细介绍一下GCD的使用吗? - 如果有五个任务需要先无序执行,然后再执行一个任务,你有什么方法可以保证先后顺序?
计算机知识
- 介绍常用的设计模式,如中介者模式、外观模式、
MVC模式和MVVM模式 CPU如何调用GPU?GET和POST请求有什么区别?HTTP的各个版本有什么区别?HTTP协议和TCP协议有什么区别?- 内存缓存策略有哪些?(例如:
LRU策略)NSCache使用什么缓存策略? - 图片格式有哪些?有什么区别?
- 如何计算一个像素点的大小以及一张图片的大小?
- 编写一个排序/链表算法,计算相关的时间复杂度
HTTP协议各个版本的区别HTTP协议和TCP/UDP协议的区别
其他
- 对团队提出过什么技术建议或者产品建议
Swift和Flutter的使用经验- 如何学习iOS开发,学习途径和方式
- 你有阅读过哪些相关的iOS开发书籍
总结
这次面试过程记录主要是为了凸显面试中出现的问题,以便查缺补漏。具体答案需要根据具体情况自己回答,每个面试都是独一无二的,扎实的基础知识才是最重要的。