868d29af3558761452bc1cef418a9533
iOS 面试中,应对涉及底层的问题

1. 前话:对于各位研究生同学来说,不管导师同不同意你去实习,面试后的你一定会有所收获
2. 如果你想看到全部文章,可以给我发邮件 feelings0811@wutnews.net 我会立刻回复你

三月初的时候,正是大家找实习的时间节点。实验室的同学和师兄弟们已经在群里转发了很多内推的消息,随后我也开始认真用Sketch 设计自己的简历,做完后,我很荣幸的拿到了腾讯的提前批的面试资格,对待面试还是要认真。因为怕通不过,所以我也一并投递了阿里和网易的iOS 客户端研发岗位。

大概一个月后我接到了阿里第一次电面,由于之前准备了腾讯的面试在网上搜了一下所谓的“iOS 面试必备”文章,说实话真有点像以前初高中临场考试前的概念复习。在接到阿里三面后,有了一些想写的东西,也算给后来的师弟师妹们一点个人经验和自己对前两年的开发过程的回忆吧。

最重的是写给那些可能会时常感到困惑,迷茫或者瓶颈期的iOS 开发者
这篇文章分为两个部分

  1. 面试部分(Part A)
  2. 个人感悟(Part B)

Part A

个人面试的背景和准备
  • 小菜研究生一个
  • 有一个从2014开发和维护的的App 项目 (掌上理工大)
  • 开源了一个star 数很少的前端转原生的框架 (TokenHybrid) 使用代码探究并成功解决了自己提出的需求问题
  • 做了几个外包
  • 面试前看了一下网上所谓的“iOS 面试必备清单”之类

老实说看这些清单真有点像高中临考前的概念复习,机械式的应对教课书般的提问,毕竟要过面试,多准备一分,心里也便多舒坦一分。

阿里第一次电面

第一次电面的内容记得不是很清楚了,只记得大致问了我NSOperationGCD 的特点,还有一些简单的问题,基本上我都答出来了。

阿里第二次电面

这次电面明显比第一次要严格吧。
因为我在简历中写了我2013 年开始学着做“掌上理工大”,然后我还不是科班出身的,可能对我的成长过程和项目经验比较感兴趣。

  1. 让我说明自己是如何克服iOS 开发过程中的困难,并且成长为一名独立应用开发者的。
  2. 然后还具体问了我TokenHybrid 实现细节,因为涉及到现在很火的概念:Native和原生的交互
    我说了实现细节后,面试官指出我把HTML,CSS 的解析,JS 的接口设计等方面runtime 做的工作放在了Objetive-C 上面,也就是客户端,这样想要让这个库普及是需要很大的精力去做的。让我试着把runtime 的工作放在前端,这样就可以天然的有很大的优势,使用很多现成的JS库了。

注:这里说的runtimeObjetive-C 里面的runtime 不同

阿里第三次电面

这次电面很突然,导师正在给我们开会,但我是还是出去接了。
也是因为这次电面才让我有想写感悟的冲动。

  1. 问有没有研究过runloop 是怎么实现的,如何做到不占用资源,自己如何实现一个简单的runloop
  2. 问我CFString__bridge 可以桥接到NSString 是如何实现的
  3. 问我GCDNSOperation 有什么区别,不是表层的区别
top Created with Sketch.