一、HTML
二、CSS
1.让元素居中
1.行内样式:text-align:center
2.图片:vertical-align: middle;
3.dispaly:absolut,top:50%,left:50%,transform:translate(-50%,-50%);
4.display:flex;margin:auto
2.媒体查询
3.重排(回流),重绘,及如何减少
4.flex布局
5.画个圆,画个三角形
- transparent(透明的)
.kailong{
width:0;
height:0;
border-right:50px solid transparent;
border-left:50px solid transparent;
border-top:50px solid red;
}
- border-raduis:50%
6.width包括什么
box-sizing有两种模式
-border-box(content,padding,border)
*content-box(content)
子元素的width:100%,继承父元素的content
7.伪类和伪元素的区别
- :hover伪类,::before伪元素
- 伪类是一个已存在但你不能直接看到的元素,伪元素是创建出了一个新元素,。
8.CSS哪些样式可以继承
1、所有元素可继承:
visibility、cursor
2、内联元素可继承:
white-space、line-height、color、font(font-family、font-size、font-style、font-variant、font-weight)、text-decoration、text-transform、direction
3、块状元素可继承:
text-indent、text-align
4、列表元素可继承:
list-style、list-style-type、list-style-position、list-style-image
9.12px字体缩小
.text{ font-size: 12px; transform: scale(0.8); }
三、JS
1.宏任务和微任务
2.作用域链
3.原型链
4.script标签中的defer和async属性
5.深拷贝和浅拷贝
6.判断一个变量是否为数组
- instanceof及原理
[对象] instanceof [构造函数],右边变量的prototype在左边变量的原型链上即可 - constructor
- Object.prototype.toString.call(arr)==‘[object Array]’
7.js的同源策略,常见的跨域方法
8.闭包,垃圾回收机制,闭包的应用场景
- setTimout内函数传参
- 防抖
- 变量私有化
9.防抖节流
10.哪些操作会改变原数组
11. _ proto _和prototype的区别
12.JS继承有哪些方式
13.点击DOM之后发生了什么
“DOM2级事件”规定的事件流包括三个阶段:
- 事件捕获阶段
- 处于目标阶段
- 事件冒泡阶段
dom事件处理方式
14.事件委托和事件冒泡
// 一个数目很多的列表,我们要实现的功能是点击每个li都弹出它自己的内容
// 通过id方式获取根组件
var root=document.getElementById("root");
// 在根组件上绑定函数,根据冒泡机制,当点击子组件时,会以冒泡的形式向上层层触发
// 在子组件中不做处理,统一委派到根组件处理
root.onclick = function (event){
var event = event || window.event;
// 获取产生事件的对象(子组件本身)
target = event.target || event.srcElement;
// 控制台查看
console.log(target);
alert(target.innerText);
};
15.JS的设计模式
- 单例模式,对象字面量
- 工厂模式,构造函数
16.手写call函数
四、ES6
1. var,let,const,暂时性死区
2.ES6新特性有哪些
3.Promise有几种状态,Promise.all
4.ES6中新增的数组遍历方法
5.Promise的原理,Promise.then的链式调用及分别调用有什么区别,async和await
6.class原理
- 本质是语法糖
- 里面的constructor()构造方法,相当于构造函数
- 类的所有方法都定义在类的prototype属性上面,也就是原型对象上
- 类上的方法前面要加static
7.ES5和ES6继承的几种方式
ES5
- call,apply,bind-----借用构造函数继承,构造函数内指向另一个构造函数
- 原型链----子类构造函数的prototype指向父类的实例对象new Parent()
- 混合方式
ES6
- extends方法(constructor内用super方法)
fclass Animal {
constructor (name) {
this.name = name
}
showName () {
alert(this.name)
}
}
class Cat extends Animal {
constructor (name) {
super(name)
}
sayMy () {
super.showName()
}
}
五、网络知识
1.输入网址到浏览器渲染的整个过程
2.TCP三次握手四次挥手,何时建立长连接
3.https加密过程
- 客户端发送含SSL指定版本、加密组件列表(所使用的加密算法及密钥长度等)的报文。
- 服务器发送包含SSL版本以及加密组件作为应答。
- 之后服务器发送Certificate报文。报文中包含公开密钥证书。
- 最后服务器发送Server Hello Done 报文通知客户端,最初阶段的SSL握手协商部分结束。
- 客户端以Client Key Exchange报文作为回应。报文中包含随机密码串,用公开密钥进行加密。
- 接着客户端继续发送Change Cipher Spec报文。该报文会提示服务器,在此报文之后的通信会采用Pre-master secret密钥加密。
- 步骤 7 : 客户端发送Finished报文。该报文包含连接至今全部报文的整体校验值。这次握手协商是否能够成功,要以服务器是否能够正确解密该报文作为判定标准。
步骤 8 : 服务器同样发送Change Cipher Spec报文。
步骤 9 : 服务器同样发送Finshed报文。
步骤 10: 服务器和客户端的Finished报文交换完毕之后,SSL连接就算建立完成。当然,通信会受到SSL的保护。从此处开始进行应用层协议的通信,即发送HTTP请求。
步骤 11 : 应用层协议通信,即发送HTTP响应。
步骤 12 : 最后由客户端断开连接。断开连接时,发送close_notify报文。
4.http缓存
5.http常见状态码
6.axios的原理
promise和ajax
7.前端常见的网络攻击解解决
- XSS跨脚本攻击(反射型,存储型)——转义,前端正则输入限制,合理使用get,post
- SQL注入
- CSRF跨脚本伪造——token令牌验证(请求地址添加 token ,使黑客无法伪造用户请求,token即防伪码,不在cookie中。随机产生,一般放在session中)验证码二次验证
常见网络攻击及解决
8.跨域解决方案
- CORS(跨域资源共享)
- iframe
- jsonp
9.cook的安全性问题
六、Vue
1.MVVM开发模式的理解
2.v-if和v-show
3.VueX
状态管理
- state
- getter
- mutation
- action
- module
4.组件懒加载,组件间通信,兄弟组件间通信
5.路由及原理
共三种
- hash=>location.hash,哈希值不会向服务器发送
- history=>history.pushState()和history.replaceState()
- abstract : 支持所有 JavaScript 运行环境,如 Node.js 服务器端。如果发现没有浏览器的 API,路由会自动强制进入这个模式.
6.axios及拦截器
7.数据双向绑定原理
8.v-model双向绑定原理
9.computed原理,与watch区别
10.Vue的生命周期
11.服务端渲染(SSR)
12.虚拟DOM,优缺点
虚拟 DOM 的实现原理主要包括以下 3 部分:
- 用 JavaScript 对象模拟真实 DOM 树,对真实 DOM 进行抽象;
- diff 算法 — 比较两棵虚拟 DOM 树的差异;
- pach 算法 — 将两个虚拟 DOM 对象的差异应用到真正的 DOM 树。
13.pach算法
14.v-for中key的作用
15.Vue3新特性
16.Vue的优化
17.vue中富文本图片点击放大功能怎么实现
事件委托
18.路由权限控制及路由守卫
19.nextTick原理
20.differ算法原理
21.vue的修饰符
21.Vue面试题汇总
七、webpack
1.npm run serve/dev原理
- 当我们在命令行中输入 npm run xxxx的时候,其实就是执行 package.json文件里的 scripts里的某个命令
- npm run serve命令之后,就是开启了一个服务来运行我们的项目,这是 WebpackDevServer开启的服务
npm run serve 原理