奔三路 - 你30岁前的学习路!

奔三路学习网

当前位置: 主页 > vue面试通 >

前端面试指南,我为什么问你原理?

时间:2017-11-04 08:44来源:知乎专栏 作者:admin
最近莉莉在做简历筛选,每天看上百份简历,但是筛出来觉得合适的寥寥无几,约来面试又发现大部分也不太合适。于是莉莉就问我,怎么才能找到靠谱的面试者? 我想了几天,决定把

最近莉莉在做简历筛选,每天看上百份简历,但是筛出来觉得合适的寥寥无几,约来面试又发现大部分也不太合适。于是莉莉就问我,怎么才能找到靠谱的面试者?

我想了几天,决定把我的面试方法写一份文档,让她发给候选人,如果候选人觉得能够通过面试,我们再约线下见面。

莉莉问我,你把套路都告诉面试者了,不怕他们针对你么。

我说,要是这份文档里面的内容他能挨个都针对,那我就招了啊...

草草写了两天,完成了一份初稿。也希望大家能够提出一些意见。

名词解释

程度副词

对于不同程度的词,我的理解如下:

精通

  • 了解背后的原理和规范
  • 动手重写过实现代码
  • 可以以此为基础做二次开发

    掌握:

  • 曾在项目中大量使用过此技术
  • 可以自如的使用这项技术进行开发
  • 参与技术社区讨论或者写过相关文章

    熟悉:

  • 曾在项目中使用过
  • 通读过相关文档
  • 可以快速对相关问题定位到文档内容中

    了解:

  • 未在开发中使用过但写过Demo
  • 阅读过相关文档
  • 可以用五分钟时间向他人介绍这项技术的特点和应用场景

    不了解:

  • 只是听过名字
  • 只是看过文档
  • 没有写过关于这项技术的代码

需要同时具备当前等级所有特性;

高等级描述包含低等级描述特性。

非常多简历中写到的了解,其实是不了解,熟悉和掌握可能往往只是了解的水平。

手写代码:

可以借助emmet或者编辑器的提醒,非复制粘贴整段代码的方式书写代码。

记忆性考察:

需要背下来的内容,不可以借助搜索引擎。比如大多数关键字的拼写,对于超长关键词可以借助编辑器完成输入。
一些常用的知识点也会要求记忆性考察,比如盒模型和选择器规则,因为日常使用频度较高,理应记住。

索引性考察:

可以一次性在搜索引擎通过技术关键字找到解决方案。比如:

我们希望做一个特殊效果的轮播图,文字和背景图不同步滚动,背景图每次只是水平偏移一小截,文字则是整页的滚动

面对这个描述能够识别出搜索关键词为“视差滚动”

理解性考察:

要求能够通过代码的方式展现知识点以及和其他知识点的对比。
能够在某应用场景内设计出该技术的使用方案。
能够讲清其背后的数学原理或者逻辑关系。

面试意图

正面

  • 是否具有工作岗位所需要的最低能力
    • 是否有过类似项目开发经历
    • 是否掌握工作岗位所需技能
    • 现场编码解决问题
    • 正确使用搜索引擎
    • 能够对之前项目中使用过的技术做出详细解释
  • 是否对技术有热情

    • 有在线可访问的代码
    • 有技术博客
    • 在技术社区积极回答问题
    • 关注新技术,并且做过官方demo以外的案例
    • 日常使用技术解决生活中的问题
  • 成长空间

    • 计算机专业背景
    • 良好的算法基础
    • 良好的表达能力
    • 做过技术文章翻译
    • 有至少一项5年以上的爱好

      反面

  • 对冷门知识点做记忆性考察
  • 对过时知识点做解释型
  • 以回答出问题的个数作为录用指标

面试应该像测视力一样,一开始从最容易的问题入手,逐步深入,直到无法正确回答。
如果面试中面试者没有回答对任何问题或者回答对了所有的问题,都不是一次成功的面试。

面试方式

(针对期望薪资8K~12K的候选人)

了解职业经历,确认工作内容。

通过场景概括出技术能力范围。

面试前确认,模糊的地方在开始的时候确认。

参与了哪些项目,在项目中扮演什么角色,完成了哪些编码工作。

工作的流程是怎么样的,是否有规范(比如gitflow)工作的经验。

按照简历的技能列表挑选比较鲜明的做提问。

对于基础知识,比如HTTP协议,以记忆性考察为主;对于正则\路由\promise等技术如果不是近期项目使用过,但是声称掌握,可放宽为索引性考察。

我常常会进行一个额外的环节,就是让面试人在简历中圈出真实技能,排除注水内容,然后只对圈出内容进行提问。因为在我看来,环境所迫带来的简历注水也不该等同为面试人的品质问题,另一方面,是否能够正确评价自己是程序员的一项重要能力。

正则的索引性考察:

给出10个(合法或者非法的)邮箱地址,让面试者通过正则找出,同时打开一份文档供查阅参考。要求五分钟内写出。

大约5~10个问题,主要引导面试者讲述技术的原理,以及技术的使用形式,以及使用过程中遇到的问题(参看附录)。
比如面试者声称熟悉AJAX,我可能会问他AJAX使用了js的什么对象(原理),什么是异步函数(使用形式),跨域问题有没有遇到过(问题),JSONP为什么能解决跨域问题(原理),jsonp返回的内容和json有什么不同(使用),jsonp使用遇到过哪些局限性(问题)...
按照这个层次递进深入,直到面试者回答吃力或者无法回答。

一般不打断面试者的叙述,哪怕说的是错误的,也会在整段讲完之后再进行纠正,然后开始下一个话题。

做实际编码的测试,主要考察编程能力。

选用基本的js题目做测试,比如

在聚会中常玩数七的游戏,七的倍数和带有七的数字都不能说,比如14,27,28。请找出1~100的不能说的数字。

考察的点有:

  1. 编辑器的使用
    • 输入习惯
    • 快捷键使用
  2. 变量定义
  3. 循环
    • 循环语法
    • 循环的使用理解
  4. 取余运算
  5. 条件判断
  6. 字符串查找

尽量选择面试者有能力完成的问题,通过观察编程习惯,比如是否使用快捷键(快捷键是判断合格程序员的重要标准),是否过度紧张(意味着面对简单的算法问题也很吃力),是否能够先输入括号再输入内容(10K的候选人真的很多都是从左往右写代码)。

举例的题目是难度非常低的,实际考察的时候可以适当提高难度,但不宜使用偏难怪的题目(因为可能更依赖灵感或者是否做过原题)。重点在于解决问题的过程中体现的思维方式,以及代码的完成度(功能覆盖,健壮性)。

一个人的日常编码能力是又随手写下代码的质量决定的,所以我不能接受无意义的命名,或者低效的循环,这意味着面试者没有良好的编码习惯,在以后的工作中可能也会写出低质量的代码。

总结

内容部分知识举例说明了一些常见的技能列表,实际上会根据面试者的简历情况设置问题。

记忆性内容作为底线要求,如果不能达标,意味着基础不牢,在日后的工作中会在很多基本的问题上搞不清。

编码环节主要做搜索性考察,因为这是工作的常态形式。使用搜索引擎的能力决定了程序员的日常水平。

理解性考察对应的是知识点的理解和应用,是否能够把知识点运用到开发中,并且对日常开发中遇到的问题有自己的思考,反应的是面试者的潜力和发展。

(责任编辑:admin)
顶一下
(7)
87.5%
踩一下
(1)
12.5%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
发布者资料
小邱 查看详细资料 发送留言 加为好友 用户等级:注册会员 注册时间:2017-11-26 17:11 最后登录:2018-06-11 16:06
栏目列表
推荐内容

关注奔三路小程序,方便你我他