• 前端面试题(js)


    js

    基础面试题

    css 面试题

    js 面试题

    JavaScript 有几种类型的值?,你能画一下他们的内存图吗

    • 原始数据类型(Undefined,Null,Boolean,Number、String)-- 栈
    • 引用数据类型(对象、数组和函数)-- 堆
    • 两种类型的区别是:存储位置不同:
    • 原始数据类型是直接存储在栈(stack)中的简单数据段,占据空间小、大小固定,属于被频繁使用数据;
    • 引用数据类型存储在堆(heap)中的对象,占据空间大、大小不固定,如果存储在栈中,将会影响程序运行的性能;
    • 引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。
    • 当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中获得实体。

     

     

    assign

     

    array.from

     

     

     

    介绍JS有哪些内置对象

    • 数据封装类对象: String Number Boolean Array Object
    • 其他对象: Function Math Date Error Arguments RegExp

    string number boolean undefined null

    •  

     

    dom 事件模型 

    • 冒泡 捕获

    dom 事件流  

    • 事件捕获的流程

    dom 事件级别 

    • dom 0  onclick
    • dom2 addEventListener     Ie attatchEvent
    • dom 3   keyup   鼠标

    • 捕获的流程 window —>document 

    如何获取body 对象,如何获取html对象

    html 节点document.documentElement

     

    null、undefined及未声明变量之间的区别。如何区分?

    • 未声明变量默认值为undefined
    • typeof null === 'object' // true
    • typeof undefined === 'undefined' // true

    ==和===的区别

    • ==比较之前会先进行类型转换,即不会对类型进行比较。例如:
        12 == '12'  // true
    •   true == 1   // true
    •   false == '0' // true
    • 复制代码
    • ===会比较数值和类型。例如:
        12 === '12' // false
    •   12 === 12 // true
    •   true === 1 // false
    •   false === '0' // false
    • 复制代码

    如何注册事件

     

    怎么自定义事件

     

    call,applybind的作用是什么?两者区别是什么?

    .call和.apply都用于调用函数,第一个参数将用作函数内 this 的值。然而,.call接受逗号分隔的参数作为后面的参数,而.apply接受一个参数数组作为后面的参数。一个简单的记忆方法是,从call中的 C 联想到逗号分隔(comma-separated),从apply中的 A 联想到数组(array)。

    function add(a, b) {

    return a + b;

    }

     

    console.log(add.call(null, 1, 2)); // 3

    console.log(add.apply(null, [1, 2])); // 3

    复制代码

    .call和.apply是立即执行的, .bind 返回函数的副本

     

    创建对象几种方法

    1 字面量对象new object 传参 2  构造函数 new  3 Object.create

    什么原型

    什么是构造函数

    什么是示例

    什么是原型链

     

    function onLoad() {

      var arr = document.getElementsByTagName("p");

      for (var i = 0; i < arr.length; i++) {

        arr[i].onclick = function () {

          alert(i);

        }

      }

    }

     

    函数节流

    函数防抖

     

    什么是函数节流?介绍一下应用场景和原理?

    • 函数节流(throttle)是指阻止一个函数在很短时间间隔内连续调用。 只有当上一次函数执行后达到规定的时间间隔,才能进行下一次调用。 但要保证一个累计最小调用间隔(否则拖拽类的节流都将无连续效果)
    • 函数节流用于 onresize, onscroll 等短时间内会多次触发的事件
    • 函数节流的原理:使用定时器做时间节流。 当触发一个事件时,先用 setTimout 让这个事件延迟一小段时间再执行。 如果在这个时间间隔内又触发了事件,就 clearTimeout 原来的定时器, 再 setTimeout 一个新的定时器重复以上流程。

     

    instanceOf 的原理

     

     

    new 运算符

    声明一个对象

     

     

    箭头函数需要注意的地方

    *当要求动态上下文的时候,就不能够使用箭头函数,也就是this的固定化。

    1、在使用=>定义函数的时候,this的指向是定义时所在的对象,而不是使用时所在的对象;
    2、不能够用作构造函数,这就是说,不能够使用new命令,否则就会抛出一个错误;
    3、不能够使用arguments对象;
    4、不能使用yield命令;

     

     

    letconst

     

     

    手写一个promise

     

     

    var promise = new Promise((resolve, reject) => {

      if (操作成功) {

        resolve(value)

      } else {

        reject(error)

      }

    })

    promise.then(function (value) {

      // success

    }, function (value) {

      // failure

    })

     

    promise 有几个状态?

     promise有2个状态,成功和失败,怎么让一个函数无论成功还是失败都能被调用?

     

    Promise.prototype.finally()

     

    错误监控

     

    service-worker

  • 相关阅读:
    Codeforces 1255B Fridge Lockers
    Codeforces 1255A Changing Volume
    Codeforces 1255A Changing Volume
    leetcode 112. 路径总和
    leetcode 129. 求根到叶子节点数字之和
    leetcode 404. 左叶子之和
    leetcode 104. 二叉树的最大深度
    leetcode 235. 二叉搜索树的最近公共祖先
    450. Delete Node in a BST
    树的c++实现--建立一棵树
  • 原文地址:https://www.cnblogs.com/molang/p/15469599.html
Copyright © 2020-2023  润新知