Pro JavaScript程序员面试问题(附答案)
确定申请人是否真的是一名专业JavaScript(浏览器端)开发人员的好问题是什么 这些问题可以区分某人是否不是特别的JavaScript程序员,而是真正从事专业的JavaScript开发、面向对象、可重用和可维护 请提供答案,这样中级和临时JavaScript程序员可以采访更有经验的人,我想不出这些高级问题的答案请避免提出开放性问题 请为每个SO答案保留一个面试问题/答案,以获得更好的阅读体验和更轻松的面试准备。询问IE中如何可能导致内存泄漏。询问“您使用什么单元测试框架?为什么?” 您可以决定是否真的需要使用测试框架,但对话可能会告诉您此人有多专业。询问“这个”。这是一个很好的问题,可以作为JavaScript开发人员的真正测试。(我假设你指的是浏览器端JavaScript) 问他为什么,尽管他对JavaScript有着丰富的知识,但使用jQuery、Mootools、Prototype等现有框架仍然是一个好主意 答复:Pro JavaScript程序员面试问题(附答案),javascript,Javascript,确定申请人是否真的是一名专业JavaScript(浏览器端)开发人员的好问题是什么 这些问题可以区分某人是否不是特别的JavaScript程序员,而是真正从事专业的JavaScript开发、面向对象、可重用和可维护 请提供答案,这样中级和临时JavaScript程序员可以采访更有经验的人,我想不出这些高级问题的答案请避免提出开放性问题 请为每个SO答案保留一个面试问题/答案,以获得更好的阅读体验和更轻松的面试准备。询问IE中如何可能导致内存泄漏。询问“您使用什么单元测试框架?为什么?” 您可以决
好的程序员代码,伟大的程序员重用。为了将DOM功能从特定于浏览器的实现中抽象出来,已经在这些库中投入了数千工时。没有理由只为了重新设计修复程序而自己检查所有不同的浏览器DOM问题。询问他们在用户关闭JavaScript或JavaScript不可用时如何确保其页面继续可用 没有一个真正的答案,但你正在寻找一个答案,谈论一些解决问题的策略 渐进增强包括 以下核心原则:
- 所有浏览器都应该可以访问基本内容
- 所有浏览器都应该可以访问基本功能
- 稀疏的语义标记包含所有内容
- 增强的布局由外部链接的CSS提供
- 增强的行为由[[Untrusive]提供 JavaScript |不引人注目]],外部 链接JavaScript
- 最终用户浏览器首选项得到尊重
因为JavaScript是一种非常小的语言,但却具有难以置信的复杂性,所以您应该能够提出相对基本的问题,并根据他们的答案找出它们是否真的那么好。例如,我衡量面试其余部分的第一个标准问题是: 在JavaScript中,
var x=1
和x=1
之间有什么区别?回答尽可能多或尽可能少的细节,因为你觉得舒服
新手JS程序员可能有一个关于本地人和全局人的基本答案。中级JS人员肯定应该有这个答案,并且可能应该提到功能级别的范围。任何自称为“高级”JS程序员的人都应该准备好谈论局部变量、隐含全局变量、窗口
对象、函数范围、声明和范围链。此外,我很想了解[[DontDelete]]
,提升优先级(参数vsvar
vs函数
),以及未定义
另一个好问题是让他们编写一个sum()
函数,该函数接受任意数量的参数,并返回它们的和。然后,让他们使用该函数(无需修改)对数组中的所有值求和。他们应该编写一个如下所示的函数:
function sum() {
var i, l, result = 0;
for (i = 0, l = arguments.length; i < l; i++) {
result += arguments[i];
}
return result;
}
sum(1,2,3); // 6
如果他们有这些答案,他们可能知道自己的JavaScript。然后,您应该继续询问他们关于非JS特定的东西,如测试、工作流、版本控制等,以了解他们是否是一名优秀的程序员。基本JS编程
变量范围
- 什么是关联数组?我们如何使用它
经典继承和原型继承之间的区别
- 私有变量、公共变量和静态变量之间的区别是什么?我们如何在JS中实现这一点
- 如何在运行时向对象添加/删除属性
- 如何实现继承
- 如何
扩展内置对象
- 为什么扩展数组是个坏主意
浏览器检测和功能检测之间的差异
DOM事件传播
事件委派
事件冒泡V/s事件捕获
优雅降级V/s渐进增强
如果他通过了上述技术电话屏幕式的问题,让他当场画出一些愚蠢的东西,比如ajax url缩短器。然后在他的投资组合上盘问他。没有令人惊奇的投资组合=这个领域的中级开发人员,而不是你想要的负责你闪亮的新项目的人。永远不要让中级JS开发人员面试应该更高级的人!那太疯狂了。让一个合格的人来面试。@J-P——那么如果你的高级开发人员辞职,那么你就完蛋了?@J-P我正试图雇用一个比我更好的人。这是一家小型初创公司,所以我没有更好的选择,除非我使用外部帮助。。。但是我必须采访他;)@J-P:如果你雇佣的人至多和你一样优秀,总有一天你会被愚蠢的白痴包围。尼克:问题是这个问题涉及的范围太广,涉及的范围也太广
var data = [1,2,3];
sum.apply(null, data); // 6