
候选人分享了在小米iOS客户端开发岗位的面试内容,全程四轮,侧重iOS基础、OC/Swift语法和APP性能优化,最终成功拿到offer。
第一轮面试问题:
1.自我介绍+简历提问(重点询问iOS项目中的UI开发、适配方案)。
2.OC中的ARC和MRC的区别?ARC的底层实现原理是什么?
3.OC中的协议和分类的作用?分类能添加属性吗?如何实现?
4.iOS中的视图控制器生命周期?viewDidLoad和viewWillAppear的区别?
5.iOS中的网络请求框架有哪些?AFNetworking的底层实现原理?
6.智力题:有3个苹果,分给2个人,每人至少分1个,有多少种分法?
7.问面试官问题(团队业务模块、Swift使用比例)。
第二轮面试问题:
1.自我介绍(重点突出iOS项目经验、性能优化相关经历)。
2.iOS内存优化的方法有哪些?如何检测内存泄漏?Instruments的使用方法?
3.iOS UI优化的思路?如何减少TableView的卡顿?
4.代码题:用Swift手写一个TableView的自定义单元格,实现数据渲染。
5.iOS中的多线程方案有哪些?GCD和NSOperation的区别?
6.小米APP中,如何实现跨APP跳转?结合iOS系统特性说明。
第三轮面试问题(HR):
1.详细介绍一个核心iOS项目,深挖项目中遇到的适配问题、解决方案及个人贡献。
2.智力题:一杯水A先喝1/2,B喝剩下的1/2,A继续再喝剩下的1/2,以此类推,最后A喝了多少,B喝了多少?
3.为什么选择小米iOS客户端开发岗位?对小米的生态产品有什么了解?
4.介绍你熟悉的一个iOS框架,追问其核心原理和应用场景。
第四轮面试问题(业务负责人):
1.自我介绍和相关实习/项目经验,重点说明项目如何贴合小米生态业务需求。
2.结合小米手机系统场景,如何设计一个高可用的系统设置页面?需要考虑哪些适配场景?
3.聊聊你对SwiftUI的理解,SwiftUI相比UIKit有哪些优势和不足?
4.常规沟通:了解过往的团队协作能力、问题解决能力,告知offer发放流程。

夜雨聆风