Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pro JavaScript程序员面试问题(附答案)_Javascript - Fatal编程技术网

Pro JavaScript程序员面试问题(附答案)

Pro JavaScript程序员面试问题(附答案),javascript,Javascript,确定申请人是否真的是一名专业JavaScript(浏览器端)开发人员的好问题是什么 这些问题可以区分某人是否不是特别的JavaScript程序员,而是真正从事专业的JavaScript开发、面向对象、可重用和可维护 请提供答案,这样中级和临时JavaScript程序员可以采访更有经验的人,我想不出这些高级问题的答案请避免提出开放性问题 请为每个SO答案保留一个面试问题/答案,以获得更好的阅读体验和更轻松的面试准备。询问IE中如何可能导致内存泄漏。询问“您使用什么单元测试框架?为什么?” 您可以决

确定申请人是否真的是一名专业JavaScript(浏览器端)开发人员的好问题是什么

这些问题可以区分某人是否不是特别的JavaScript程序员,而是真正从事专业的JavaScript开发、面向对象、可重用和可维护

请提供答案,这样中级和临时JavaScript程序员可以采访更有经验的人,我想不出这些高级问题的答案请避免提出开放性问题

请为每个SO答案保留一个面试问题/答案,以获得更好的阅读体验和更轻松的面试准备。

询问IE中如何可能导致内存泄漏。

询问“您使用什么单元测试框架?为什么?”

您可以决定是否真的需要使用测试框架,但对话可能会告诉您此人有多专业。

询问“这个”。这是一个很好的问题,可以作为JavaScript开发人员的真正测试。

(我假设你指的是浏览器端JavaScript)

问他为什么,尽管他对JavaScript有着丰富的知识,但使用jQuery、Mootools、Prototype等现有框架仍然是一个好主意

答复:
好的程序员代码,伟大的程序员重用。为了将DOM功能从特定于浏览器的实现中抽象出来,已经在这些库中投入了数千工时。没有理由只为了重新设计修复程序而自己检查所有不同的浏览器DOM问题。

询问他们在用户关闭JavaScript或JavaScript不可用时如何确保其页面继续可用

没有一个真正的答案,但你正在寻找一个答案,谈论一些解决问题的策略

渐进增强包括 以下核心原则:

  • 所有浏览器都应该可以访问基本内容
  • 所有浏览器都应该可以访问基本功能
  • 稀疏的语义标记包含所有内容
  • 增强的布局由外部链接的CSS提供
  • 增强的行为由[[Untrusive]提供 JavaScript |不引人注目]],外部 链接JavaScript
  • 最终用户浏览器首选项得到尊重

因为JavaScript是一种非常小的语言,但却具有难以置信的复杂性,所以您应该能够提出相对基本的问题,并根据他们的答案找出它们是否真的那么好。例如,我衡量面试其余部分的第一个标准问题是:

在JavaScript中,
var x=1
x=1
之间有什么区别?回答尽可能多或尽可能少的细节,因为你觉得舒服

新手JS程序员可能有一个关于本地人和全局人的基本答案。中级JS人员肯定应该有这个答案,并且可能应该提到功能级别的范围。任何自称为“高级”JS程序员的人都应该准备好谈论局部变量、隐含全局变量、
窗口
对象、函数范围、声明和范围链。此外,我很想了解
[[DontDelete]]
,提升优先级(参数vs
var
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编程

  • 变量范围
  • 什么是关联数组?我们如何使用它
OOPS JS

  • 经典继承和原型继承之间的区别
  • 私有变量、公共变量和静态变量之间的区别是什么?我们如何在JS中实现这一点
  • 如何在运行时向对象添加/删除属性
  • 如何实现继承
  • 如何
    扩展内置对象
  • 为什么扩展数组是个坏主意
DOM和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