zoukankan      html  css  js  c++  java
  • 前端面试题(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

  • 相关阅读:
    【实战Java高并发程序设计 3】带有时间戳的对象引用:AtomicStampedReference
    【实战Java高并发程序设计 2】无锁的对象引用:AtomicReference
    access 数据库创建表SQL语法
    如何提高储存卡的读写速度
    SQL 删除重复记录,并保留其中一条
    arcgis for android100.x 禁止地图旋转
    Android中刷新Invalidate和postInvalidate的区别
    Android Studio Gradle配置工具开发
    oracle数据库被注入恶意攻击程序导致tab$被删除恢复方案
    使用Oracle BBED修改Oracle11g数据库实例名称
  • 原文地址:https://www.cnblogs.com/molang/p/15469599.html
Copyright © 2011-2022 走看看