Git Product home page Git Product logo

javascript-quiz's Introduction

JavaScript 测试

说明:

这个测试不是玩一些奇淫技巧来让你颇费思量,而是用来方便招聘人员筛选前端开发人员,其主要目的就是为了pass掉那些只会用jQuery而不懂javaScript底层的应聘者。

基本问题

  1. 两个变量比较时,在什么情况下会发生变量类型的强制转换? 如何去避免这种强制转换呢? 如何将一个变量值转换为布尔值(如null0转换false、1转换为true)呢?

  2. 描述下变量作用域是怎么工作的,如何用匿名函数去创建一个能立即执行的闭包。

  3. 简要介绍下原型继承和传统的类继承的区别。

  4. 描述下什么是“模块化模式”(module pattern),以及基于其之上的“揭示模块化模式”(revealing module pattern)。

  5. 浏览器端的MVC(或者MVVM)工作机制是什么?你用过哪些MVC(MVVM) JS框架?

附加问题

  1. 以下计算结果为啥不同?

    '1' + 2 +  3 ; // 等于 '123'
     3  + 2 + '1'; // 等于 '51'
     3  + 2 +  1 ; // 等于 6
  2. 为什么 0.3 不是 预期的计算结果,如何得到正确的计算结果呢?

    0.1 + 0.2; // 结果为 0.30000000000000004
  3. 描述下什么是变量声明提升(variable hoisting),如何避免变量生命提升可能导致的问题?

  4. 如下的代码有什么区别?

    function foo() {}
    
    // 另外一种写法
    
    var foo = function() {};
  5. 什么时候用call函数,什么时候用apply函数,它们有啥区别?

  6. 如何判断一个变量是对象还是数组. (提示: typeof 返回结果不一定准确!)

  7. 在下面的代码中,foo代表什么? (提示: 需要弄清楚 this 代表什么。)

    (function(foo) {
      // 'foo'指代什么?
    })(this);
  8. 在Javascript(和DOM)中,一些诸如windowdocumentundefined的全局变量并不是一成不变的,用户可能会对它们重新赋值,如何保证我们用的这些内置变量是最原始的值而不是用户修改过的(提示: 参考上一个问题 ),如下面的代码所示:

    var window = '';
    var document = 0;
    var undefined = true;
  9. 请用一句代码来复制一个数组

  10. What is the difference between setInterval and setTimeout? Bonus: What is the lowest cross-browser increment that each can accurately use? setIntervalsetTimeout有啥区别?

  11. 解释下delete是如何工作的,什么类型的变量不可删除?

  12. 解释下事件委托是如何工作的,在UI交互时,什么情况下该用事件委托呢?如下面的例子所示…

    <ul id="special">
      <li>
        <a href="#">Special link 1</a>
      </li>
      <li>
        <a href="#">Special link 2</a>
      </li>
      <li>
        <a href="#">Special link 3</a>
      </li>
    </ul>
  13. 下面代码的作用是什么?

    var foo = bar ? bar : 0;
  14. 你在什么情况下会写下面的代码?这样的代码可能存在什么问题?

    foo && foo.bar();
  15. parseIntparseFloat 有啥区别? 什么时候需要调用数字的toFixed()方法? 下面的代码在什么情况下会有用处?

    var my_number = my_string - 0;
  16. 写一个名为 sum 的函数,它能返回所有参数的总和. 使用如下所示…

    // 结果为15
    sum(1, 2, 3, 4, 5);
    
    // 结果为0
    sum(5, null, -5);
    
    // 结果为10
    sum('1.0', false, 1, true, 1, 'A', 1, 'B', 1, 'C', 1, 'D', 1, 'E', 1, 'F', 1, 'G', 1);
    
    // 结果为 0.3, 而不是 0.30000000000000004
    sum(0.1, 0.2);

javascript-quiz's People

Contributors

ayoung avatar calebhearth avatar clowbrow avatar flyingzl avatar nathansmith avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.