前端面试总结

js基础

for和forEach的区别:

1.for循环按顺序遍历,forEach使用迭代器遍历
2.for循环是随机访问元素,foreach是顺序链表访问元素
3.对于arraylist,是顺序表,使用for循环可以顺序访问,速度较快;使用foreach会比for循环稍慢一些。
对于linkedlist,是单链表,使用for循环每次都要从第一个元素读取next域来读取,速度非常慢;使用foreach可以直接读取当前结点,数据较快;

JS基本类型与引入类型

https://www.cnblogs.com/liu-di/p/11209993.html

let,const和var的区别
https://blog.youkuaiyun.com/weixin_43681425/article/details/89484926

  1. let 声明的变量具有块作用域的特征。
  2. 在同一个块级作用域,不能重复声明变量。
  3. let 声明的变量不存在变量提升
let使用规则

1.let声明的变量不存在变量提升的问题,必须遵循 "先声明,后使用"否则会报错。但用var声明不会出现报错。

2.let声明的变量,存在块级作用域。let声明的变量只在所声明的代码块内有效,块级作用域{},包括iffor

3.let不允许在同一作用域内重复声明同一个变量,var在同一个作用域内声明同一个变量后面会覆盖前面的,但是let会报错。

4.存在暂时性死区,在代码块内使用let声明变量之前,该变量是不可使用的。只要在作用域内使用let命令,那么所声明的变量就被"绑定"在作用域内,不管在外部有没有声明。

在ES6中,如果在代码块内使用letconst都存在暂时性死区,都必须遵守 "先声明,后使用"的规则。

ES6规定,暂时性死区不存在变量提升的问题,主要是为了解决"先使用,后声明"带来的问题。只要进入暂时性死区,变量就已经存在,但是必须要等到声明完了之后才可以获取和使用。

const使用规则

1.const用来声明一个常量,一旦声明其值不可更改。所以const在声明的时候必须要初始化,不能先声明再初始化否则会报错。

2.const声明的变量只在块级作用域内有效。

3.const声明的变量存在暂时性死区。

4.const在同一个作用域内不可重复声明变量

5.但是用const声明的对象的属性是可以更改的,因为const实质上保证的并不是变量的值不得改动,而是变量指向的内存地址的值不得改动。对于简单类型数据,值就保存在变量指向的内存地址中,相当于常量。而对于复合型的数据,变量指向的是内存地址保存的是一个指针。const只能保证指针是不可以被更改,但指针指向的数据结构是可以被改变的。

基本数据类型

number,string,boolean ,undefined,null

什么是Symbol,它的使用场景是什么?

数组与伪数组区别

https://www.cnblogs.com/liudemeng/p/11510275.html

数组原型上面的方法有哪些,哪些是可以改变数组的,哪些是不可以的?

改变原数组的方法:
ES5:
a.splice()/ a.sort() / a.pop()/ a.shift()/ a.push()/ a.unshift()/ a.reverse()
ES6:
a.copyWithin() / a.fill
不改变原数组的方法:
ES5:
slice、join、toLocateString、toStrigin、cancat、indexOf、lastIndexOf、
ES7:
includes
js中遍历数组并不会改变原始数组的方法总共有12个:
ES5:
forEach、every 、some、 filter、map、reduce、reduceRight、
ES6:
find、findIndex、keys、values、entries

如何转换一个类数组对象,大致原理是怎么样的?

https://blog.youkuaiyun.com/weixin_41796631/article/details/81586153

了解JS的作用域么,函数作用域是在什么时候形成的

https://www.cnblogs.com/dyh-air/articles/7940853.html

什么是闭包,它有什么作用,它的原理

https://blog.youkuaiyun.com/zwt_guiji/article/details/81328561

JS的原型链

https://www.cnblogs.com/shizheng0909/p/12052524.html

如何实现一个 new

https://blog.youkuaiyun.com/qq_39985511/article/details/87692673

什么是箭头函数,它和普通函数的区别

https://www.cnblogs.com/biubiuxixiya/p/8610594.html

this的指向【通过题目考察,表述结果,解释理由】

如何迭代一个对象,for…in这种方式,如何取出对象自己的属性

https://blog.youkuaiyun.com/boysky0015/article/details/73770210

Object.assign它是一个浅拷贝还是深拷贝

https://blog.youkuaiyun.com/qq_42089654/article/details/88017609

描述一下Event Loop,这个循环会一直下去么,宏任务和微任务的区别【通过笔试题的方式,表述结果,解释理由】

https://blog.youkuaiyun.com/guo8ke/article/details/103893082

浏览器的事件机制有哪几个阶段?addEventListener的第三个参数起到什么作用?

https://www.cnblogs.com/fs0196/p/12685254.html

链式调用

  let index = 0
  let stack = []
  function next(){
    let fn = stack[index]
    index++
    if(typeof fn === 'function') {
      fn()
    }
  }
  
  var obj = {}
  
  obj.sleep = function(delay) {
    stack.push(function() {
      setTimeout(() => {
        next()
      },delay)
    })
    return this
  }
  
  obj.eat = function() {
    stack.push(function() {
      next()
    })
    return this
  }
  
 task('zhangsan').sleep(1000).eat().sleep(1000).eat()
 next()

如何实现一个请求超时

http://www.imooc.com/wenda/detail/464902

垃圾回收机制

https://segmentfault.com/a/1190000012738358

补充面试题

https://juejin.im/post/5ef8377f6fb9a07e693a6061

css基础

什么是盒模型,如何进行不同盒模型的切换

https://juejin.im/post/5ecf43f36fb9a047d37105f1

样式的优先级排序,如何去获取一个样式的相邻元素

https://www.cnblogs.com/ombre/p/7418667.html
http://www.maomao365.com/?p=11589

position的属性值有哪些,它们的区别是什么

https://www.cnblogs.com/1463069300limingzhi/p/10853660.html

列举一下移动端适配方案

https://blog.youkuaiyun.com/qq_41047322/article/details/81108502
http://caibaojian.com/rem-and-px.html

flex的布局了解么,什么是主轴,如何控制主轴和副轴

https://www.cnblogs.com/luguankun/p/10386233.html
http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html

Flex的优点和缺点,如何用flex布局两边固定,中间自适应;同时其他方式能实现么

https://blog.youkuaiyun.com/a18792627168/article/details/79686746

如何实现水平垂直居中

https://www.cnblogs.com/yugege/p/5246652.html

如何清除浮动,清除浮动的原理

https://www.cnblogs.com/lauzhishuai/p/10953608.html

css的动画如何实现

https://www.cnblogs.com/jiazhifeng/p/11294336.html

重绘与回流

https://blog.youkuaiyun.com/Cathence/article/details/80742282?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase

1px的问题可以如何去解决

https://blog.youkuaiyun.com/caochenyu0/article/details/53813074

网络层

在浏览器输入一个URL的整体过程是怎么样的

https://blog.youkuaiyun.com/damn_yang/article/details/90727758

浏览器渲染页过程描述

https://blog.youkuaiyun.com/weixin_34296641/article/details/89291790

前端性能优化之白屏时间

https://www.jianshu.com/p/cb9bbd3066ba

浏览器存储之Cookie、LocalStorage 和 SessionStorage的区别详解

https://blog.youkuaiyun.com/victoryzn/article/details/82950175

js中操作cookie

https://blog.youkuaiyun.com/dfydn/article/details/79370556?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEARCH-15.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-15.nonecase

http缓存机制

https://blog.youkuaiyun.com/weixin_30371875/article/details/95693881?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

常见的HTTP状态码有哪些

https://blog.youkuaiyun.com/laishaohe/article/details/79052085

http 请求包含哪几个部分(请求行、请求头、请求体)

https://www.cnblogs.com/qiang07/p/9304771.html

跨域的实现方法有哪几种?

https://segmentfault.com/q/1010000006164791

描述一下JSONP的原理

https://blog.youkuaiyun.com/inite/article/details/80333130

描述一下CORS的过程

https://blog.youkuaiyun.com/siriusol/article/details/104161142

小程序

微信小程序同层渲染原理剖析

https://blog.youkuaiyun.com/feeltouch/article/details/106495108

微信小程序bindtap与catchtap的区别

https://www.cnblogs.com/eline2018/p/10394974.html

小程序的通信是怎么样的

https://www.cnblogs.com/chanwahfung/p/12253799.html

小程序的setData的数据如何很大,如何解决

https://blog.youkuaiyun.com/liyi1009365545/article/details/89680717

前端监控系统

https://blog.youkuaiyun.com/chongmei5647/article/details/100803622?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-1

https://github.com/niuyueyang/error

vue数据埋点

https://www.cnblogs.com/chengeping/p/11459073.html

webpack面试

https://juejin.im/post/5e6f4b4e6fb9a07cd443d4a5

vue面试

https://juejin.im/post/5c6621565188256220140756
https://juejin.im/post/5e649e3e5188252c06113021

算法

二叉树
队列
快排
深拷贝
差集、并集、交集算法
数组去重
数组flat
实现new
实现bind,Promise,Promise.all,Promise.race
判断最大值,最小值

前端微服务

参考:https://blog.youkuaiyun.com/qq_33332184/article/details/105474228
https://github.com/niuyueyang/iframeVue

其他

koa与express区别

https://blog.youkuaiyun.com/willemwei023/article/details/105905982

koa与express常用中间件

https://www.jianshu.com/p/0790efc02c22

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值