招聘 JavaScript 程序员时应该问什么问题
==
通用:
使用过类库吗? 最喜欢哪个? 为什么?自己有写过类库吗? 比如 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?