3effddce2d7f8368cb6baf75832f9f7f
上机面试,问你怕不怕

大家可能已经经历了一些公司的面试流程,一般国内公司的面试分笔试、一面二面、HR面几个流程。而有个别公司,会设置上机面试环节,譬如脸萌科技。虽然这个环节不多见,但是如果在这个环节表现突出的面试者,一般都能为自己的面试情况加分,从而获得更好的offer。这次我为大家介绍一些上机面试的技巧,希望对大家有帮助

上机面试考察什么

为什么有些公司会重视机试呢?从现在国内的应聘环境来看,面经越来越多,能考察的题目范围变化一直不大,相当于说留给面试官可以考察应试者的命题范围其实基本是固定的。如果做了针对性的准备的话,通过面试的概率是比较大的。这就容易招进来那种夸夸其谈,但可能代码写不好的人。机试就是一个非常好的分辨“水货”的办法。

我们举个例子,面试时一般会问到runtime的基础知识,大部分的面试者都能答上一两个点,譬如消息转发机制Method Swizzling反射等等。对于面试官而言,这些知识点属于看过面经就能答出的点,很难做真假判断,所以增加runtime相关的机试题,就能做进一步区分了。譬如如下的机试题

  • 请你设计一个方案,能够针对NSMutabledArray的容易crash的方法增加保护,如objectAtIndex、addObject等

这道题考察的点有

  • 越界判断
  • 传参校验
  • Class Clusters(类簇):直接针对NSMutabledArray做Method Swizzling是没用的
  • Method Swizzling实战:具体实现、触发时机、方法交换时的校验等

如何对待上机面试

一般而言,上机面试无非考察以下几个技能点

  • 代码风格
  • 逻辑思维流畅程度
  • 设计模式
  • 编码速度

因此我们在准备上机面试的时候,也可以从以上几点着手准备。

代码风格

关于Objective-C的代码风格,最著名的莫过于Google Objective-C Style Guide,但是请不要忽视,苹果官方也有一份Coding Guidelines for Cocoa(比较旧,2013年版),所以在编码之前的时候,最好先跟面试官解释一下你平常比较熟悉的编码规范,免得引起误解。

对于Swift而言,官方有一份API Design Guidelines,Linkedin也有一份Swift Style Guide可以作为参考,不过因为Swift3Swift4会并存一段时间,所以在选择Swift作为编码语言的时候,也需要注意说明选择Swift3或者Swift4的原因

逻辑能力

有一些上机面试题目是算法类型的,譬如进制转换、字符串查找、最大连续子序列之和等问题,有一些上机面试题目是应用类型的,譬如实现一个跑马灯控件、实现一个手势密码解锁功能、实现一个下拉刷新控件等问题。总体而言,不管是哪一类的问题,都有几个限制条件

  • 时间紧,一般30分钟到60分钟的面试时间
  • 代码量较大,一般预计是100行到700行不等
  • 除非提前背诵,不然不是一下子能够写出来的题目

以上的种种外部因素,加上临场心态影响,很可能就会让面试者处于过度焦虑的状态中,从而影响了发挥。其实我们在平常工作当中都知道,敲代码只是体力活,更多的时候需要花精力在需求的探索、算法的设计、问题的分解等任务上。所以上机面试也如同一次接需求干活的过程,如果你体现的状态是一接到需求就开干,一开干就跑偏,调试时间大于编码时间的话,那确实非常的减分。因此,预期花时间在代码细节中挣扎的话,还不如把时间都投入到流程图中,将思路在纸上过一遍,然后再敲代码,这样返工的概率将会大大降低了

top Created with Sketch.