上周,我发布了 C# 程序员的 7 个面试问题。我想我忘记了人们无法在我的大脑中看到。所以,让我这次非常明确。 “淘汰失败者”的问题就是为了做到这一点。淘汰那些完全没有业务甚至申请这份工作的人。
你会惊讶于有多少人面试一份工作,他们的简历上有各种很酷的流行语,但当你问起他们时,他们对这个主题一无所知。我不确定这是代表他们的招聘人员是否试图通过加强简历来帮助他们,让他们进入大门,或者他们是否真的自己这样做。但是,作为面试者,我必须有办法确保我正在面试的申请人首先值得面试。希望我能在不到半小时内通过电话完成此操作。
所以,话虽如此,如果你最喜欢的问题不在这个列表中,那可能是因为我会把它留到以后的面试中。
另外,对于那些可能认为技术面试并不能真正告诉你程序员是否优秀的人,我要说的是……
你是对的。当我还是一名年轻的程序员并接受技术问题面试时,我也有同样的感受。但现在我在桌子的另一边,我经常发现,能够通过技术面试的人比不能通过的人更有可能成为优秀的程序员。
最后,我不会因为某个申请人答错了几个问题,或者没有完全按照我的预期回答他们而将其排除在外。但如果不能回答其中的大部分问题,那将是一个巨大的危险信号!
所以,这里有 7 个你应该首先问的 JavaScript 面试问题。否则,您可能是在浪费时间。
在 JavaScript 中创建对象的两种方法是什么?
如果您一直在使用 JavaScript,这是一个非常简单的问题。射击,您甚至应该能够猜出其中一个答案。但是,根据我的经验,仍然有很多人说他们是不知道如何回答这个问题的 JavaScript 程序员。
- 使用“new”关键字来调用函数。
-
使用打开/关闭花括号。
var o = {};
你可能想跟进,“使用 new 关键字,对象是在什么时候创建的?”但是,就淘汰的问题而言,我认为可以等到我真正面试时才能发现申请人的知识有多深。
你将如何创建一个数组?
这是与“如何创建对象”类似的级别问题。然而,有些人可以回答第一个,但不能回答这个。
虽然可以创建一个数组:
var o = {};
创建数组的过程很长。人们希望答案包括使用方括号。
var o = {};
再说一次,我们还有其他问题可以问,但由于我们只想知道申请人是否值得进一步调查,所以我会在这里留下询问数组。
什么是变量提升?
这是一个稍微难回答的问题,我不希望任何人能够回答这个问题。但同样,我们正试图快速确定申请人的技能水平。他们对他们声称知道的语言的理解程度如何?
变量提升是一个术语,指的是无论变量在范围内的何处声明,JavaScript 引擎都会将该声明移动到范围的顶部。例如,如果您在函数中间声明一个变量,并在一行中为其全部赋值:
var o = {};
实际运行的代码如下所示:
var o = {};
全局变量的危险是什么?如何防范?
全局变量的危险在于其他人可以创建一个具有相同名称的变量并覆盖您正在使用的变量。这在任何语言中都是一个坏主意。
您可以通过多种方式防止这种情况。最常见的是创建一个全局变量,所有其他变量都位于其中:
var o = {};
然后任何时候你需要创建一个全局变量,你把它附加到那个对象。
var o = {};
另一种防止这种情况的方法是将所有代码包装在一个自执行函数中,以便声明的任何变量都在该函数的范围内声明。
var o = {};
实际上,您最终可能会同时使用这两种方法。
如何遍历 JavaScript 对象中的成员?
var o = {};
什么是闭包?
闭包允许在另一个函数范围内的函数仍然能够看到在外部范围内声明的变量,即使在该范围的所有其他内容都消失后也是如此。如果他们说明了在 for/next 循环中使用闭包的危险,而不声明变量来保存迭代变量的当前值,则可加分。
描述你的经验单元测试 JavaScript
在这里,我们只是想看看他们是否甚至用 JavaScript 进行了单元测试。这是一个开放式问题,没有特定的正确答案,但它应该在这个过程中告诉你一些事情。