前端开发面试问题总结

January 8, 2016
author: 小豆子

对于前端开发人员的招聘,面试是非常关键的环节,而现实的情况是,很多招聘者是开发出身,不会面试,不知道问什么,问了一些常规问题,又不知道考察些什么。

这里分享一下我在面试过程中常问的一些问题(很多问题不仅限于前端开发),注意很多问题都是开放的,作为一个面试官,不要试图准备几个选择题或填空题应付了事,面试不同与笔试,面试就是要以交流为主,互动讨论总是要比直接的答案更能体现此人的能力。

我个人认为,任何时候,考察一个应聘者,综合素质要优先于他的技术能力,做开发不是做航天飞船,一般智商不低的人通过学习都可以胜任大部分工作,关键的是人品、工作态度、分析能力、学习能力,这些都是与生俱来或潜移默化形成的,是很难通过学习获得的,它们要比现有的技术经验和技术能力更重要。

  • 今天天气还不错,你是怎么过来的?
  • 大概用了多久,离得远么?
  • (如果远的话)是自己的房子还是租的房子?经常这样远距离上班可以适应么?

缓解一下应聘者的紧张感,让他尽快进入状态,并能了解出行方式、大概的远近。有时候工作地点远近还真是大问题,即使应聘者可以接受,但是上班时间超过1个半小时的员工幸福感和工作效率会较低,流失率会比较高。

  • (用3分钟时间)简单做个自我介绍吧?

自我介绍是关键的环节,连自我介绍都说不好,说明对待面试和职业的态度很差。可以加上时间限制,或者让应聘者自由发挥,看看他把握重点的能力和控制时间的能力。自我介绍一般来说应该包含年龄,籍贯,毕业院校、专业和时间,工作过的公司和时间,主要的项目,担当的职务,用到的技术,擅长的技术等。

  • 详细介绍一个对你影响比较大的项目?
  • 对于你刚才说的xxx项目,我很感兴趣,你能详细说一说么?
  • 这个项目主要是 解决什么问题/完成什么事情?
  • 你在这个项目里 的职责是什么/做了哪些事情?
  • 这个项目用到了那些 技术/框架?
  • 这个项目中大家是怎样协作的?
  • 这个项目主要的挑战是什么?
  • 这个项目遇到了哪些技术难点和问题?
  • 你是怎样解决的?
  • 你觉得自己的解决方案还有改进的地方么?
  • 这个项目中你学到了哪些?

针对某个(或某两个,不要多)项目进行深入的提问,首先考察项目的真实性(有的应聘者编造简历,或者真假混合,比如把其他人做的事情说是自己做的,通过一系列提问,并在提问中抓住感兴趣的点追问,可以很容易识别简历造假),还可以考察组织表达能力、技术能力、沟通协调能力、总结能力、攻关能力、学习能力等多方面能力。

  • 为什么要离开上一家公司?
  • 哪方面因素制约了你的发展?
  • 你有没有尝试去解决?
  • 如果你是老板,你会怎样做?

一般人都会回答发展、薪资、出差、离家远、加班等原因。对于这些原因一定要追问,比如你认为哪方面因素制约了你的发展?你有没有尝试去解决?每个公司都有好的和不好的方面,能从大局考虑,看到问题并提出解决方案的应聘者加分,而一味抱怨、不去解决的,永远是出现困难第一个离开公司的人。

  • 我看你简历上写了不少的技术点,你最熟悉的是哪些?
  • 能说说你对xx技术的理解么?
  • 你最近在关注哪些技术?
  • 平时喜欢玩点什么技术?
  • 为什么要 关注/学习 这些技术?

好的技术人员,听到问起技术会两眼放光,尤其是自己擅长的技术,很希望能表达出来。很多东西在简历里体现不出来,需要不断的挖掘。如果没有兴趣也没有自信的话,要么就是特别内向低调,要么就是技术水平不行。

  • 你喜欢什么样的开发环境?
  • 你喜欢用什么操作系统、IDE、浏览器、调试工具、版本管理工具…?

对于工具和环境的选择可以看出应聘者的技术倾向和品位。

  • doctype有什么作用?
  • HTML5有哪些新增的特性是你很感兴趣的?
  • 浏览器标准模式和怪异模式之间的区别是什么?是如何触发的?
  • HTTP协议是无状态协议,怎么理解?
  • GET和POST请求有什么区别?
  • IE6有哪些兼容性问题?
  • 解释下 CSS sprites?
  • 使用 CSS 预处理器(如Less、Sass)的优缺点有哪些?
  • CSS选择器的优先级如何?
  • display都有哪些值,他们有什么区别?
  • 响应式设计和自适应设计有什么不同?
  • 有没有兼容retina屏幕的经历?
  • 什么是闭包?
  • 什么是事件代理?
  • 解释一下原型继承?
  • 什么是立即调用函数表达式?
  • 如何使用原生js实现ajax请求?
  • 如何实现跨域?
  • 解释一下AMD或CMD?

问一些HTML、CSS、JS的基础知识,这些问题非常多,就不一一例举了。注意根据应聘者的技能情况提问,并根据他的回答进一步深入的挖掘。在应聘者不熟悉或断片的时候,可以给与善意的引导和提示。

  • 如果让你做一个移动展示页面,可以上下滑动翻页并有动画效果的,你如何入手?
  • 如果有一个网站访问很慢,你如何解决?
  • 如果让你写一个 弹出窗/幻灯图片展示/tab页… 插件,你如何实现?
  • 为什么利用多个域名来提供网站资源会更有效?
  • 从输入 URL 到页面加载完成的过程中都发生了什么事情?
  • 什么是渐进增强和优雅降级?

问一些综合性问题,注意考察应聘者知识的广度和深度。还是那句话,根据应聘者的技能情况提问,并根据他的回答进一步深入的挖掘。

  • 如果今年你打算熟练掌握一项新技术,那会是什么?
  • 你编写过的最酷的或最有成就感的代码是什么?
  • 你会业余做一些项目么?做过什么?
  • 你喜欢创业么?你觉得现在哪些方向比较火,你有什么看法?

在技术问题过后,问一些发散性的轻松有趣的问题。

  • 你觉得你和其他前端开发相比,有哪些 优势/劣势?
  • 你未来3-5年有什么规划?
  • 你对我们公司有什么了解?为什么有兴趣来我们公司?

了解应聘者优劣势和职业规划,看看是不是和公司的文化符合。

  • 你有什么 想了解的/想问我的 问题么?

收尾问题,精明的应聘者应该在这个环节了解一下公司的产品、技术团队现状、使用的技术等等,并在其中找到和自己的切合点,表示出可以胜任和对职位的期待等,就不展开了。


一个优秀的面试官,应该对上面以及其他各方面的考察要点了然于胸,最后做到随心所欲,无招胜有招。

他和应聘者像是朋友,两个人就像日常聊天一样,行云流水,从看似不经意的、自然而然的问答中,提取出自己需要的信息,这也是对应聘者的尊重。

最后希望每个公司顺利找到合适的前端开发,每个前端开发都能拿offer拿到手软 :)

(本文转载自 feeldesignstudio

欢迎到 Issue 里给我评论或提意见,多谢!