260baa9624082d5a8fb3c623fcf8775f
我是如何笔试一位前端工程师

俗话说,纸上得来终觉浅,绝知此事要躬行。笔试也是很多招聘流程的强流程之一。笔试会随应聘者的技能及工作经历来增加广度和深度。笔试不同于面试,一般笔试答案都是有 best practice,因此,较为容易评判我们的通过标准。

前端题目类型

前端题目类型,我一般涉及三个方面,前端理论、算法基础以及框架基础。

这些问题会给一定的压力下完成所有的题目,比如一个小时内完成。为什么严格设置一个初始时间,是为了考察应聘者在压力之下从审题到解答全面的能力。

前端理论

所谓前端基础, 涉及到语言(HTML、CSS 和 JS)、DOM、BOM 等。这部分的问题可考察的范围非常广,我较喜欢在异步流上出题,原因在于异步是前端工程师初学比较难以理解的一块内容,也可以考察代码风格。

我也偏爱考察对于数组、对象以及字符串操作类的方法,这些方法看上去像是算法,但实际上了解原生 API 的,使用到的都是较基本的 API 的组合,比如 map,reduce 的用法。

此外,对于 DOM,BOM,也是重点的方向,比如对于 history 的操作等,这些都是隐含在日常工作基础的内容。

算法基础

很多前端工程师会觉得算法有什么用,这些在实际开发中完全用不到的内容。这一点取决于你工作的深度,以及你对知识的运用。

我们每天都在接触不同的数据结构,比如队列与栈,我们的数据已经给我们提供了非常方便的 API,但并不意味着你不必了解其构造及实现。在实际场景下还是不少机会为去用到这些结构,比如缓存在 web app 中使用,不止后端涉及到缓存,前端也有缓存。那么,常用的缓存淘汰算法 LRU 实现对于你就会有用。

我常考察的数据结构是树和图。树结构在前端领域中使用极为广泛的一个结构,我们常使用的 Json 结构就是一个树结构,再比如淘宝上的类目,全国省市县,都是一个树结构,当然还有前端非常熟悉 VDOM。这时,树的构造、遍历、插入、移除等都是最基础的操作。

其中,以遍历树为例,就涉及到递归和非递归写法,深度优先和广度优先写法。在不同场景下选择合适的方法你要考虑的问题,尤其考虑怎样写出时间复杂度低的算法,能不能结合实际需求来优化,关于这个话题,在 React VDOM diff 中就有大量结合 DOM 特点的优化的例子,原始的结构需要 O(n^3),而 React 中只需要 O(n)。

还有一类是图,图在实际前端场景中可能并不是太多。这里要提到图形学领域,目前做可视化工程的场景越来越多,针对这类同学会专门考察图结构的算法。

top Created with Sketch.