如何面试一个iOS工程师

0x1 我们的考察重点是什么?

对于一个客户端开发工程师我们需要考察的关键能力可以抽象为5个方面。基础能力、专项能力、架构能力、系统分析能力、价值产出能力。

对于一个客户开发工程师,基础能力都有什么呢?
我的定义是,能够支撑这个工程师完成90%开发工作所需要具备的能力。

什么是专项能力呢?
音视频处理、性能优化、网络通信、工程效能、疑难问题排查这些都算。
一个工程师是否有专线领域的积累,往往可以看出这个人是否有技术追求、是否有技术深度积累的意识。另外,一个团队也需要具备各种专项能力的人,去解决不同的难题。

架构能力不是面试架构师才要考察的能力吗?
当然不是。处理很复杂的系统,需要架构能力。设计一个简单的模块也需要架构的能力。例如设计一个监控模块、智能图片加载模块、UI组件库。一个大公司的部门设计、组织架构如何安排相当于复杂系统的架构设计。一个项目组如何安排每一个角色的工作职责、协作方式、监督机制、激励与惩罚机制就相当于是一个小模块的架构设计。

只有具备了系统分析能力,才能对系统内各功能模块进行合理的设计和安排。
在实际工作里,你不仅需要考虑技术层面的问题,你还需要考虑业务发展对架构的要求、有多少资源可以用,项目成本和价值产出比的情况等综合因素。而且你还需要考虑这些因素会不断的变化。系统性、综合性的分析能力这个时候就显得十分重要。
另外,我认为这也是人类和人工智能最大的区别。人类的大脑实际上在处理复杂问题、综合性问题的能力是远远强与现在的人工智能的。

最后是价值产出能力。对于一个工程师,价值的产出有许多维度和层次,下面我介绍最常见的3种。
第一层,完成项目组布置的日常工作。
第二层,通过分析,找到目前项目组存在的问题,主动产出解决这些问题的方案,并推动这些方案的执行。
第三层,可以根据业务的现状和发展方,能规划出技术团队各阶段需要储备的基础建设、架构的发展、人员的培养方向,并针对这些规划制定高效、可执行的方案。

不同公司在不同的阶段,对于一个客户端研发工程师的要求都是不一样的。我们需要针对项目组当前的实际需要和未来的发展趋势、着重对其中几项关键点进行考察。

0x2 面试的方法论

面试时我们需要更真实的反馈,我们需要使用STAR(行为面试方法),多问情景问题、开发性问题,挖掘候选者实际情景处理问题的细节,来考察他的能力。
STAR的方法有4个关键词,situation(情景)、task(任务)、action(行动)、result(结果)。
根据这4个关键词逐层深入问问题。

1做这个项目前有什么困难?
2你是怎么做的?
3为什么这样做?
4结果怎么样?
5再做一次,有什么地方可以改进?

0x3 基础能力考察

c语言、oc、swift
开发环境、工具
UI
网络层
多线程
设计模式
….

这些都是一个iOS开发工程师需要具备的基础能力。基础能力是首要考察点,如果这部分能力有严重的欠缺,说明候选者是不够专业的。
对于基础能力的考察,要尽量考察得全面。准备好各项考察点的问题,其中同一个考察点,要准备好3个层次的问题,这样可以更好地定位候选者每个知识点的掌握的深度。

  • tableView的delegate、datasource各自复杂哪些事情?
  • 有什么办法让tableView变得更加流畅?
  • 如果要自己写一个tableView,介绍一下思路。有哪些关键点要注意的?

附上一个iOS技术树

0x4 进阶能力考察

进阶能力包括前面提到的专线能力、架构能力、系统分析能力、表达能力。这部分能力的考察首先应该结合候选者过往开发的商业项目、开源项目。挖掘对方过往项目里的亮点,使用STAR方法去评估对方各项进阶能力。

  • 有没有别的方法?
  • 遇到什么困难,怎么解决?
  • 怎么保障性能/安全性?
  • 实际效果怎么样?怎么体现?

0x5 程序员通用技能

  • sql
  • 正则
  • 数据结构
  • 基础算法
  • 网络编程

程序员一些通用的技能也是需要考察的。通过这部分内容的考察,可以看出候选者的计算机基础水平掌握的程度。

一些非科班出生的候选者,往往这部分知识会掌握得较差一些。但他们是否有意识地去补充这部分知识,是很容易问出来。

0x6 潜力

什么程序员有潜力?

我的定义是,在未来可以遇见的3到5年内,进步的空间比同级别的人要大,进步的速度相对要更快。

很多人可以觉得年轻就有潜力,其实未必。我们应该细化到候选人身上的一些基能力、性格、思维、习惯。下面我列举一些,有潜力的考察点。

  • 英语水平
  • 学习习惯
  • 工作习惯
  • 耐操性
  • 总结能力
  • 说服力
  • 表现能力
  • 管理意识
  • 共情能力
Blacktea wechat
ex. subscribe to my blog by scanning my public wechat account
记录生活于感悟,您的支持将鼓励我继续创作!