我被问得最多的十个JavaScript前端面试问题

jopen 9年前
 

过去几个月我一直在面试前端有关的职位,在面试环节经常被问到一些技术问题。我觉得可以跟大家分享一下。两次面试是通过在线答题进行的,两次是面对面,还有两是通过skype。我申请的职位都是非常非常初级的,不是 中级/资深的职位。

我知道有很多人不同意这种类型的面试。其实不管你喜不喜欢,你都得接受。尤其当你是自学的,而且要申请第一份工作时。

我估计很多有人其它方法来证明他自己,像Github/ 项目地址可能是非常理想的证明方法,但也别全都指望这些。

好消息是有一些很难的问题,在有限的时间里我没答上来(比如说Event Loop和杨辉三角),一些其它面试侯选人也承认他们也没答上来,这会让讨论变得轻松很多。

坏消息是有些面试之后就没有任何反馈了。有三家公司再也没联系过。这点击打击自信,而且没有受到尊重。然后你可能会有心理斗争,“面试的不够好?”,“他们不喜欢我这种类型?”。所以如果你是面试官,请给你的面试者一个明确的答案,即使是自动回复也比什么都没有的强。

1. 设计一个函数返回第n行的杨辉三角。(整个面试只有这一个问题)

注* 杨辉三角也叫Pascal’s Triangle

1

1     1

1     2     1

1     3     3      1

...

2. 设计一个函数,返回一串字符串中重复次最多的单词。

3. 使用递归打印长度为n的费波那契数列。

注* 费波那契数列由0和1开始,之后就由之前的两数相加 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233

4. 解释一下 bind, apply和call的用法和区别。

5. 解释一下什么是event delegation(事件代理)和它为什么有用。

6. 什么是event loop (事件循环)?

7. hoisting(声明提升)在JavaScript里是怎么工作的?

8. 描述一下你在设计应用或网站时的流程。

9. 你最希望JavaScript或浏览器中添加哪些功能,为什么?

10. 函数式编程和命令式编程之间的区别?你喜欢哪一个?

注* 5个经典的前端面试问题