有什么好的问题可以确定申请人是否真的是专业的JavaScript(浏览器方面)开发人员?
这些问题可以区分某人是否不是特定的JavaScript程序员,但实际上是在进行专业的JavaScript开发,面向对象,可重用和可维护的JavaScript。
请提供答案,以便中级和特别的JavaScript程序员可以采访经验更丰富的人,并为我提供的一些高级问题的答案很少。请避免公开问题。
请为每个SO答案保留一个面试问题/答案,以获得更好的阅读体验并简化面试准备。
有什么好的问题可以确定申请人是否真的是专业的JavaScript(浏览器方面)开发人员?
这些问题可以区分某人是否不是特定的JavaScript程序员,但实际上是在进行专业的JavaScript开发,面向对象,可重用和可维护的JavaScript。
请提供答案,以便中级和特别的JavaScript程序员可以采访经验更丰富的人,并为我提供的一些高级问题的答案很少。请避免公开问题。
请为每个SO答案保留一个面试问题/答案,以获得更好的阅读体验并简化面试准备。
Answers:
因为JavaScript是一种很小的语言,但是却具有难以置信的复杂性,因此您应该能够提出相对基本的问题,并根据其答案找出它们是否真的那么好。例如,我用来衡量面试其余部分的标准第一个问题是:
在JavaScript中,
var x = 1和之间有什么区别x = 1?尽可能舒适地回答尽可能多的细节。
JS新手程序员可能对本地变量与全局变量有基本的答案。中级JS专家肯定应该有这个答案,并且应该提到函数级范围。任何自称为“高级” JS程序员的人都应该准备谈论本地变量,隐含全局变量,window对象,函数作用域,声明提升和作用域链。此外,我很想听听有关[[DontDelete]],提升优先级(参数vs var与vs function)和的信息undefined。
另一个好问题是要求他们编写一个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
他们应该像这样在您的数组上调用它(上下文apply可以是任何东西,我通常null在这种情况下使用):
var data = [1,2,3];
sum.apply(null, data); // 6
如果他们有这些答案,他们可能知道他们的JavaScript。然后,您应该向他们询问有关非JS特定内容的信息,例如测试,工作流,版本控制等,以了解他们是否是优秀的程序员。
基本的JS编程
Scope of variableAssociative Array啊 我们如何使用它?OOJS
Difference between Classic Inheritance and Prototypical Inheritance difference between private variable, public variable and static variable啊 我们如何在JS中实现这一目标?add/remove properties to object在运行时?inheritance?extend built-in objects办?extending array is bad idea呢DOM和JS
Difference between browser detection and feature detectionDOM Event PropagationEvent DelegationEvent bubbling V/s Event Capturing杂项
Graceful Degradation V/s Progressive Enhancement询问“这个”。这是一个很好的问题,可以真正对JavaScript开发人员进行测试。
(我假设您的意思是浏览器端JavaScript)
问问他,尽管他对JavaScript有无穷的知识,但是为什么使用jQuery,Mootools,Prototype等现有框架仍然是一个好主意。
答:良好的编码人员代码,良好的编码人员可重复使用。这些库中已投入了数千工时,以从浏览器特定的实现中抽象出DOM功能。没有理由为了重新发明修补程序而自己经历所有不同的浏览器DOM难题。
询问他们如何在用户关闭JavaScript或JavaScript不可用时如何确保其页面继续可用。
没有一个真正的答案,但是您正在寻找有关渐进增强策略的答案。
渐进增强包括以下核心原则:
- 所有浏览器都应可以访问基本内容
- 所有浏览器都应可以访问基本功能
- 稀疏,语义标记包含所有内容
- 外部链接的CSS提供了增强的布局
- 外部链接的JavaScript [[Unobtrusive JavaScript | unobtrusive]]提供了增强的行为
- 尊重最终用户浏览器的首选项
问“您使用什么单元测试框架?为什么?”
您可以决定是否真的需要使用测试框架,但是对话可能会告诉您很多有关人员的知识。
中级程序员应掌握其工具的技术知识。
如果他通过了上述技术电话屏幕式的问题,请让他勾勒出一些愚蠢的东西,例如ajax网址缩写。然后烤他的投资组合。没有令人惊叹的投资组合=这个领域的中级开发人员,而不是您想要负责闪亮新项目的人。