web面试题总汇

一、CSS模块

1、BFC(什么情况下造成BFC,能解决什么问题)
2、flex 布局(主轴、交叉轴,flex-grow flex-shrink, flex-basis)
3、postition 布局
4、box-sizing (取值,盒模型宽度计算)
5、如何实现三栏布局(左右两边固定100px, 中间占满剩余所有宽度,position、flex、float,grid(可有可无 ))
6、如何实现不知父子元素宽高的子元素根据父元素垂直水平居中
7、rem、em、px、vw、vh

二、JS模块

1、基本数据类型有哪些、和引用数据类型有什么本质区别(堆和栈、指针)
2、this 指向问题,(apply、call、bind,箭头函数),最好能手写apply、call、bind
3、JS 中的event loop,搞明白微任务和宏任务,找一些先后执行顺序的题联系一下
4、节流和防抖的区别、最好能手写节流和防抖
5、Promise 的状态,它解决了什么问题,实现方法
6、typeof 、instanceof 、Object.prototype.toString 的使用
7、闭包是什么,解决了什么问题,闭包存在什么问题
8、js 垃圾回收机制(引用计数和标志清除之类的)
9、ajax,axios,fetch区别
10、scss less区别
11、Object.create和function new对象的区别
12、node的事件机制
13、http到服务端的过程

三、Vue

1、nextTick 有什么作用、内部具体是如何实现的(最好把降级的都说一下,并带上eventloop来解释)
2、在Vue中有什么情况下修改数据,视图不更新,解决办法是什么($set)
3、Vue 中 watch 和 cumputed 有什么区别,各自的适用场景
4、v-if 和 v-show 有什么区别,各自适用在什么场景
5、Vue中如何实现双向数据绑定(Object.defineProroty 和 Vue 3 的 proxy 有什么区别)
6、能大概描述一下new Vue之后到DOM渲染,过程中发生了什么事情
7、解释一下为什么直接通过下标去修改数据中的元素,视图不会更新,但是其他数组方法可以(最好是从defineProperty不能劫持数组,Vue本身对数组的方法做了重写去回答,可以引出 Proxy 的优势)
8、大概描述一下Vue 3和Vue 2的区别,Vue 的设计里有什么新的概念吗
9、Vue 中的v-for中的key有什么作用,为什么不建议使用 index 作为key,在 patch 的过程中,起了什么作用
10、Vue 虚拟dom 的diff 算法有了解吗,具体是怎么样diff的
11、Vue 3 的内容可以去了解一下,能具体说上什么改进之类的就行
12、如何用vuex写一个购物车

四、HTTP
1、从输入URL到页面显示,过程中发生了什么(尽量详细)
2、介绍一下HTTP缓存(强缓存、协商缓存、缓存地址,去背一下好了)
3、HTTP 和 HTTPS 的区别
4、HTTP1 和 HTTP2 的区别
5、200、206、301、302、307、400、404、403、500、502
6、jSONP 和 CROS (JSONP 具体是如何实现的,有什么限制)
7、GET、POST 、OPTIOIN (GET和POST的区别,要深挖(比如POST会发两个数据包,先发头部,后发data))
8、web安全,XSS、CSRF

五、webpack

1、plugins 和 loader 的区别(最好能了解一下怎么实现)
2、webpack 打包怎么优化
3、webpack Tree shaking 优化
4、webpack优化过什么
5、babel AST 之类的(这个比较难,我也基本上说不知道,有时间可以去了解一下)

六 、项目情况(这些问题最好提前脑袋里想好,从那个方向回答)

1、介绍一下你过去项目中有什么技术亮点,你本人做了什么东西
2、你对前端技术更新速度快的情况下,是如何学习
3、为什么离职(问的最多)