三道前端编程面试题

面试题要有区分度。不能太容易,让对方有屈辱感(“看不起人么?让我做这个?”);也不能太难,把所有候选人都干掉,对自己的时间也是一种浪费。其实挺难选的。

很多大公司,因为买方市场,大把候选人排队等着挑,所以干脆把面试题弄得难一些,目的是筛选,只要好的,合适不合适另说。而一些小公司,比如我厂,得到优秀简历的机会本就不多,如果因为面试题设计不好,没法很好的考察候选人的水平,或者让候选人感到不舒服拒接 offer,都是损失。

这里分享我近期总结的三道编程题,对应初中高三档候选人,我觉得很有区分度,大家也可以试试。

初级

写一段程序,将数字转换成中文大写。比如 1024 => “壹仟零贰拾肆”。

这道题其实是很经典的面试题,我第一次跳槽面试就做的这道题。《算法的乐趣》一书中也有对它的解析。这道题并不难,但是对编程的基础概念覆盖的比较全面,判断、循环、数组,等等。理论上说大部分同学,包括应届生,只要受过编程训练,熟悉一种语言,都应该能够写出来。

如果能够先写测试用例,然后再写伪代码,再写实现,就更好了。

中级

我有一个项目,文案都是中文,我现在想对它进行 i18n 改造,请写一个脚本,遍历源码目录,提取所有文案,输出成一个 PO 文件。

这道题比前面复杂不少。首先不是任何语言都能完成了,还要求候选人熟悉 Node.js 相关的 API——我觉得中级前端一点 Node.js 不会实在说不过去。涉及到文件读取,势必包含异步操作,可以考察候选人是用回调(接下来就可以让他改造成 Promise),还是 Promise,还是 async/await。以及,Node.js 12 直接提供 Promise 风格的接口,可以简介考察候选人是否关注行业动态。

而且,文件夹有嵌套,需要用到递归;查找中文,需要用到正则。PO 文件知道不知道都无所谓,输出 CSV 也无妨(BOM 不在考察之列)。

这段 JS 我写过,大概50行,考察点很密集,工作量不太大,我觉得蛮好的。

高级

我有一个项目,文案都是中文,我现在相对它进行 i18n 改造,计划用 vue-i18n 框架。请写一个脚本,把代码中所有中文都替换成 $t('中文') 这样的调用。(附加题:)并且调整框架,加载 PO 文件。

这道题,基本含有上一题的每个考点,还需要候选人具备一定的语法分析经验。因为 Vue 里面使用文案主要有三种方式:

  1. 模板中字符串 span 你好
  2. 属性字符串 placeholder="用户名"
  3. JS 中的字符串 title="标题"

这三类文案需要不同的替换方式,所以候选人需要分析上下文,找出特征,用最合适的方案替换。

附加题方面,主要考察候选人对前端工具链的熟悉程度,毕竟到了高级,知识的广度也是很重要的。


总结

实际上,上面三道题,第一道我用过很多次,第二道只用过一次,第三道还没用过……

所以,欢迎看到这篇文章的同学,给我一些反馈。

作者: meathill

爱编程,爱旅游,爱吐槽。 今年的目标是完成并运营至少一个 Side Project。 《Electron + Vue 实战开发》龟速创作中……

欢迎吐槽,请勿装死

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据