确定申请人是否真的是专业JavaScript(浏览器方面)开发人员有哪些好问题?
可以区分某些人是否是特定的JavaScript程序员,但实际上是在进行专业的JavaScript开发,面向对象,可重用和可维护的问题。
请提供答案,以便中级和临时JavaScript程序员可以采访更有经验的人,为我提供很少的高级问题的答案。 请避免公开提问。
请保持一个面试问题/答案每 SO答案 ,以获得更好的阅读体验和更轻松的面试准备。
答案 0 :(得分:118)
因为JavaScript是一种如此小的语言,但具有令人难以置信的复杂性,你应该能够提出相对基本的问题,并根据他们的答案找出它们是否真的那么好。例如,我衡量其余采访的标准第一个问题是:
在JavaScript中,
var x = 1
和x = 1
之间有什么区别?尽可能多地回答您的问题。
新手JS程序员可能有关于locals与globals的基本答案。中级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特定的内容,例如测试,工作流程,版本控制等,以确定他们是否是一名优秀的程序员。
答案 1 :(得分:91)
基本JS程序设计
Scope of variable
Associative Array
?我们如何使用它?OOPS JS
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 detection
DOM Event Propagation
Event Delegation
Event bubbling V/s Event Capturing
<强>其它强>
Graceful Degradation V/s Progressive Enhancement
答案 2 :(得分:24)
询问“这个”。这是一个很好的问题,可以成为JavaScript开发人员的真正考验。
答案 3 :(得分:17)
(我假设您的意思是浏览器端JavaScript)
问他为什么,尽管他对JavaScript有无限的了解,但使用jQuery,Mootools,Prototype等现有框架仍然是一个好主意。
答案: 良好的编码器代码,伟大的编码器重用。已经有数千个工时涌入这些库中,以便从浏览器特定的实现中抽象出DOM功能。没有理由自己完成所有不同的浏览器DOM头痛只是为了重新发明修复。
答案 4 :(得分:11)
询问他们当用户关闭JavaScript或JavaScript不可用时,他们如何确保页面继续可用。
没有一个真正的答案,但你正在寻找一个答案,谈论Progressive Enhancement的一些策略。
渐进增强包括 以下核心原则:
- 所有浏览器都应该可以访问基本内容
- 所有浏览器都应该可以访问基本功能
- 稀疏,语义标记包含所有内容
- 增强的布局由外部链接的CSS
提供- 增强行为由[[Unobtrusive JavaScript | unobtrusive]],外部 链接JavaScript
- 尊重最终用户浏览器偏好
答案 5 :(得分:6)
询问accidental closures如何导致IE中的内存泄漏。
答案 6 :(得分:6)
问“你使用什么单元测试框架?为什么?”
您可以决定实际使用测试框架是否真的有必要,但会话可能会告诉您很多关于此人的专业知识。
答案 7 :(得分:0)