前端面试题1

109 阅读2分钟

1.说⼀下js的数据类型,如何判断数据类型

1. 数据类型:NumberStringOjectBooleanUndefinedNullSymbolBigInt;
	Object: Array, Date, Function
2. 断数据类型: * typeof / Object.prototype.toString.call(*)

2.如何判断⼀个对象是否属于某个类

1. instanceof 

3.说⼀下防抖函数的应⽤场景,并简单说下实现⽅式

场景:高频触发的事件, 如页面的滚动,浏览器尺寸变换,输入框的内容改变
实现方式: 防抖函数主要利用了闭包、高阶函数、定时器等特性
function debounce (cb, delay) {
      let timer = null;
      return (...arg) => {
          if (timer) {
              clearTimeout(timer)
          } 
          timer = setTimeout(() => {
              cb(...arg)
          }, delay || 300)
      }
  }

4.new Promise构造函数的⼊参是什么?你在什么场景下会使⽤promise

1. ⼊参是resolve和reject两用来改变当前Pormise对象状态的回调函数
	- resolve 会将状态由 Pending -> Fullfilled,并且将自己接收到的参数作为传递给 then 方法,最为then方法的参数的默认参数;
    - reject 会将状态由 Pending -> Rejected,并且将自己接收到的参数作为传递给 catch 方法,最为catch方法的参数的默认参数
2. 实现链式调用;异步函数的场景···

5.vue的设计核⼼思想是什么

- 数据驱动:早期需要开发者直接通过直接操作DOM来改变视图,vue 通过  MVVM 模型的双向数据绑定的 Javascript 库,专注于View 层,当数据改变时可以通过Vue内部封装好的指令/方法,操作视图,不需要开发者操作
- 组件化:拓张html元素,封装成可重复使用的代码

6.说下vue的双向数据绑定的实现原理

在vue首次渲染时,重写data属性中所有属性将其变为响应式对象, 当vue组件中使用到相关的属性收集依赖,当属性值修改时触发相关依赖的notify方法,通知观察者Watcher 更新视图

7.APP内嵌H5⻚⾯如何和APP本⾝进⾏通信

8.微信⼩程序和传统h5⻚⾯相⽐哪个性能更好⼀些,为什么

9.H5的开发和PC端的开发有什么本质的不同

10.如何针对H5⻚⾯进⾏远程调试?

11.如何进⾏⼿机的⻚⾯或者应⽤的抓包

12.已知公司附近有两个加油站,和⼀条主⼲道,要求在24⼩时内尽可能准确的统计全市有多少台⻋, 说出你的思路