前端面试总结

一、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%

css画三角形

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属性

defer和async属性

5.深拷贝和浅拷贝

深拷贝的几种方法

6.判断一个变量是否为数组

  • instanceof及原理
    [对象] instanceof [构造函数],右边变量的prototype在左边变量的原型链上即可
  • constructor
  • Object.prototype.toString.call(arr)==‘[object Array]’

7.js的同源策略,常见的跨域方法

8种跨域方法

8.闭包,垃圾回收机制,闭包的应用场景

闭包的应用场景

  • setTimout内函数传参
  • 防抖
  • 变量私有化

9.防抖节流

10.哪些操作会改变原数组

11. _ proto _和prototype的区别

12.JS继承有哪些方式

js的6种继承方式

13.点击DOM之后发生了什么

“DOM2级事件”规定的事件流包括三个阶段:

14.事件委托和事件冒泡

DOM中的事件

// 一个数目很多的列表,我们要实现的功能是点击每个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

calss原理

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()
	}
}

js继承的方法

五、网络知识

1.输入网址到浏览器渲染的整个过程

2.TCP三次握手四次挥手,何时建立长连接

Tcp的短连接和长连接

3.https加密过程

  1. 客户端发送含SSL指定版本、加密组件列表(所使用的加密算法及密钥长度等)的报文。
  2. 服务器发送包含SSL版本以及加密组件作为应答。
  3. 之后服务器发送Certificate报文。报文中包含公开密钥证书。
  4. 最后服务器发送Server Hello Done 报文通知客户端,最初阶段的SSL握手协商部分结束。
  5. 客户端以Client Key Exchange报文作为回应。报文中包含随机密码串,用公开密钥进行加密。
  6. 接着客户端继续发送Change Cipher Spec报文。该报文会提示服务器,在此报文之后的通信会采用Pre-master secret密钥加密。
  7. 步骤 7 : 客户端发送Finished报文。该报文包含连接至今全部报文的整体校验值。这次握手协商是否能够成功,要以服务器是否能够正确解密该报文作为判定标准。

步骤 8 : 服务器同样发送Change Cipher Spec报文。

步骤 9 : 服务器同样发送Finshed报文。

步骤 10: 服务器和客户端的Finished报文交换完毕之后,SSL连接就算建立完成。当然,通信会受到SSL的保护。从此处开始进行应用层协议的通信,即发送HTTP请求。

步骤 11 : 应用层协议通信,即发送HTTP响应。

步骤 12 : 最后由客户端断开连接。断开连接时,发送close_notify报文。

https流程简介
https加密过程

4.http缓存

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

状态管理

  1. state
  2. getter
  3. mutation
  4. action
  5. module

4.组件懒加载,组件间通信,兄弟组件间通信

5.路由及原理

共三种

  1. hash=>location.hash,哈希值不会向服务器发送
  2. history=>history.pushState()和history.replaceState()
  3. abstract : 支持所有 JavaScript 运行环境,如 Node.js 服务器端。如果发现没有浏览器的 API,路由会自动强制进入这个模式.

6.axios及拦截器

7.数据双向绑定原理

8.v-model双向绑定原理

v-model原理

9.computed原理,与watch区别

computed原理

10.Vue的生命周期

11.服务端渲染(SSR)

12.虚拟DOM,优缺点

虚拟 DOM 的实现原理主要包括以下 3 部分:

  • 用 JavaScript 对象模拟真实 DOM 树,对真实 DOM 进行抽象;
  • diff 算法 — 比较两棵虚拟 DOM 树的差异;
  • pach 算法 — 将两个虚拟 DOM 对象的差异应用到真正的 DOM 树。

13.pach算法

pach算法原理

14.v-for中key的作用

15.Vue3新特性

Vue3新特性

16.Vue的优化

vue优化

17.vue中富文本图片点击放大功能怎么实现

事件委托

18.路由权限控制及路由守卫

19.nextTick原理

20.differ算法原理

differ算法原理

21.vue的修饰符

21.Vue面试题汇总

七、webpack

1.npm run serve/dev原理

  • 当我们在命令行中输入 npm run xxxx的时候,其实就是执行 package.json文件里的 scripts里的某个命令
  • npm run serve命令之后,就是开启了一个服务来运行我们的项目,这是 WebpackDevServer开启的服务
    npm run serve 原理

2.loader 和 plugin 的区别

loader 和 plugin 的区别

3.Babel转译原理

Bable转译原理

4.webpack打包优化

webpack打包优化

5.webpack分包

webpack分包

八、算法

1.冒泡,快排等

常见算法

2. js获取多叉树的广度和深度

js获取多叉树的广度和深度

3.函数的链式调用

函数的链式调用

4.js使用递归函数对字符串逆序

js使用递归函数对字符串逆序

九、微信小程序

1.小程序登录流程

2.生命周期

3.组件通行

4.打包优化

5.分片上传

九、性能优化及其他

1.常见的安全性问题

常见的安全性问题

2.都有哪些性能优化

3.输入网址后都发生了什么,JS和css的渲染关系

十、主观题

1.自我介绍

2.介绍一下你做过的项目

3.说一下你遇到过的难点及解决

4.最近你在学的知识有哪些

5.为什么会想跳槽

6.下一份工作你最看中的是什么

7.你有什么优点和缺点

十、面试题汇总

面试题汇总一
面试题汇总二

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值