招聘 JavaScript 程序员时应该问什么问题


from: 一名开发

摘自:

http://stackoverflow.com/questions/1684917/what-questions-should-a-javascript-programmer-be-able-to-answer/1684945

==

通用:

  • 使用过类库吗? 最喜欢哪个? 为什么?
  • 自己有写过类库吗? 比如 DOM 的扩展。
  • 有使用过服务端 JavaScript 框架吗?
  • ECMAScript 和 JavaScript 的区别是什么?
  • 有用过 JavaScript 代码校验工具吗?
  • 有读过或推荐的 JavaScirpt 书籍吗?
  • 会为你的 JavaScript 代码写单元测试吗?

初/中级:

  • 为什么基本上所有对象都有 toString 方法?
  • 知道 Mozilla Firefox 用的是哪个解析器吗? 其他浏览器呢?
  • JavaScript 支持 lambda 函数吗?
  • 你用过或写过的最有用的 JavaScript 函数是什么?
  • JavaScript 有块级作用域吗?
  • 能解释下 Ajax/XMLHttpRequest 是如何工作的吗?
  • JavaScript 支持类继承吗?
  • 能写一个用了 with 表达式的代码片段吗?
  • 知道什么是 Greasemonkey 吗? 有用过吗?
  • 你认为 innerHTML 是魔鬼吗?
  • 什么是 JSON?

高级:

  • Can you give me an example of a generator?
  • JSONP 是如何工作的?
  • 请举个单例模式的例子。
  • 未定义和未声明之间有什么区别?
  • 有用 Raphaël 或 Canvas 元素做过动画吗?
  • 熟悉 Web Worker 吗?
  • 做过 profiling 吗? 都有用过哪些工具?
  • 有读过新的 ECMAScript 规范吗? 都有哪些新特性?

关于人:

  • 谁最初写了 ECMAScript? 知道他在哪工作,以及他的 title 是什么吗?
  • 写 jQuery 的那男孩叫什么?
  • 谁写了 JSLint?

兼容性:

  • 哪些浏览器支持标准的 addEventListener ?
  • 哪些浏览器对于 getElementById 的实现有问题? 比如它会返回 name 属性一致的元素。

==

补充:

  • 如何在没有定义 toString 方法的对象上调用 toString() ?
  • 在调用函数时使用 new 会发生什么?
  • 什么是作用域链?
  • 如何在函数里创建静态变量?
  • 如果给你一个类名的字符串,你如何实例化他?
  • 什么是 currying? 如何在 JavaScript 里用他?
  • 什么是匿名函数? 什么是 lambda 函数?
  • 什么是 ‘live’ 容器?  (应该是指 getElementsByTagName 等方法返回的元素)
  • var 为什么重要?
  • 如何调试 JavaScript?