2022最新前面面试总结

4 篇文章 0 订阅
1 篇文章 0 订阅

2022前端面试-技术型

1.get和post的区别             

GET用于获取信息,是无副作用的,是幂

等的,且可缓存,POST用于修改服务器上的

数据,有副作用,非幂等,不可缓存

2.如何让自己网页内显示其他网页内容

使用iframe标签

3.vue的优势

轻量级框架、双向数据绑定、组件化、数据和结构

的分离、虛拟DOM、运行速度快。

4.webpack打包原理

根据文件间的依赖关系对其进行静态分

析,然后将这些模块按指定规则生成静态资源,当 webpack

处理程序时,它会递归地构建一个依赖关系图(dependency

graph),其中包含应用程序需要的每个模块,然后将所有这些

模块打包成一个或多个bundle。

5.flex布局有哪些属性

1、flex-direction,属于设置主轴

的方向,即子元素的排列方向;

2、justify-content,属于设置主轴上的子元素排列方式;flex-wrap,属性可以将容器设置为是否是换行的;

3、align-content, 属性能够设置自由盒内部各个项目在垂直方向排列方式;

4、align-items,属性能够设置自由盒内部各个项目在垂直方向排列方式;

5、flex-wrap; 是否换行

6、flex-flow,厜性相当于同时设置了flex-direction 和fex-wrap。

6.flex如何排序

使用order进行排序,默认值为0,数值越小越靠前

7.vue生命周期

beforeCreate,created,  创建阶段

eforeMount,mounted,  挂载阶段

beforeUpdate,updated,  更新阶段

beforeDestory,destoryed  销毁阶段

8.vuex五个核心属性

1.state:用于保存需要全局共享的数据.在组件中访问state里面的数据用this.Sstore.state.数据名或者用辅助函数

2.mutation:用于修改state 里面的数据

3.action:action 可以提交 mutation, 在action 中可以执行 store.commit, 而且action 中可以有任何的异步操作。

4.getter:从基本数据(state)派生的数据,相当于state的

计算属性,具有返回值的方法

  1. module:模块化vuex,可以让每一个模块拥有自己的state、mutation、action、getters,使得结构非常清晰,方便管理

9.原型链

每个对象都有一个_proto_ 属性,并且指向它的prototype 原型对象

每个构造函数都有一个prototype 原型对象。prototype 原型对象里的constructor指

向构造函数本身

10.什么是虚拟DOM

虛拟 DOM(Virtual DOM)是由普通的 JavaScript对象来描述 DOM对象

状态的变化首先作用于虛拟 DOM,最终映射到真实的DOM中

 vue.jis2.x内部使用的虛拟 DOM是改造的Snabbdom

11.虚拟DOM实现原理

用JavaScript 对象模拟真实 DOM树,对真实DOM 进行抽象;

diff 算法 一比较两棵虚拟 DOM树的差昇;

pach 算法 一将两个虚拟 DOM 对象的差异应用到真正的 DOM 树。

12.created和mounted的区别

created: 在模板渲染成html前调用,即通常初始化某些属性值,然后再渲染成识图。

mounted:在模板渲染成html后调用,通常初始化页面完成后,再对html的dom节点进行一些需要的操作。

13.事件冒泡、时间捕捉、事件委托

事件冒泡:事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发,当一个元素接收到事件的时候会把他接收到的事件传给自己的父级,一直到window。

事件捕获: 事件从最不精确的对象(document 对象)开始触发,然后到最精确(也可以在窗口级别捕获事件,不过必须由开发人员特别指定)。

事件委托:把原本需要绑定在子元素的响应事件委托给父元素,让父元素担当事件监听的植物

14.MVVM

M:数据层

V:试图层

VM:逻辑层

15.如何解决跨域

使用proxy反向代理或者jsonp

16.css选择器优先级

内嵌样式:值为1000

Id选择器:值为100

Class选择器:值为10

标签选择器:值为1

通配符:值为0

17.promise和async await的区别

1、Async/Await代码看起来简洁一些,使得异步代码看起来像同步代码

2、async await与Promise-样,是非阻塞的。

3、async await是基于Promise实现的,可以说是改良版的Promise,它不能用于普通的回调函数。

18.ajax的原理

通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用iavascript来操作DOM而更新页面

19vuex存储和本地存储(localstorage、sessionstorage)的区别

localStorage 存储的数据没有时间限制

sessionStorage 当用户关闭浏览器窗口后,数据会被删除。

Vuex 当刷新页面时vuex存储的值会丢失

20、vue按需引入

import { Button, Select } from 'element-ui';

21、双向数据绑定原理

采用“数据劫持”结合“发布者-订阅者”模式的方式,通过“Object.defineProperty()”方法来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。

22、Vue组件间通信方式

1.常用的父子组件通讯方式:props,emit

2.$parent,$children

3.$ref

4.provide/inject

5.$attrs、$listener

如果我们按常规的props传值,就要一层一层传,层级多了就很恶心,使用$attrs就很轻松的做到了。当组件传了和$attrs内属性同名的值时,值会被覆盖(使用传入的值)

$listeners: 接收除了带有.native事件修饰符的所有事件监听器
作用和上述类同。
有一点不同的是:当出现同名的事件时,不会被覆盖,而是都会执行,执行顺序就是事件冒泡的执行顺序,先触发child 再触发parent

使用$listeners 属性可以很方便的在层级很深的组件内,立马就修改最外层的父组件内的属性值。

注意:在vue3.0 中$listeners被移除了,将所有属性都集合到attrs里面了

23.Vuex 状态管理器

  1. 如果应用的性能不太好,怎么去排查和改进

1、请减少HTTP请求基本原理:

2、请正确理解 Repaint(重绘) 和 Reflow(回流/重排)

3、请减少对DOM的操作

4、使用JSON格式来进行数据交换

5、使用CDN加速(内容分发网络)

6、精简CSS和JS文件

7、压缩图片和使用图片Sprite技术

8、注意控制Cookie大小和污染

24.有没有遇到过不同浏览器兼容方面的问题,随便谈一个,以及如何解决

css3新属性,加浏览器前缀兼容早期浏览器

-moz- /* 火狐浏览器 /
-webkit- / Safari, 谷歌浏览器等使用Webkit引擎的浏览器 /
-o- / Opera浏览器(早期) /
-ms- / IE */

25.z-index在哪些场景下有效,在哪些场景下会失效

z-index属性在下列情况下会失效:

父元素position为relative时,子元素的z-index失效。解决:父元素position改为absolute或static;

元素没有设置position属性为非static属性。解决:设置该元素的position属性为relative,absolute或是fixed中的一种;

元素在设置z-index的同时还设置了float浮动。解决:float去除,改为display:inline-block;

26.width:120% 和 transform:scale(1.2) 有什么区

scale是CSS3中新增的缩放的方法,使用这个的话能很方便的对元素进行缩放,而不用去计算详细的像素值,width和height当然也可以,不过在脚本中计算的话会比较方便,如果仅用css写的话,相比而言还是scale方便。不过和width、height不冲突,使用哪个都可以,只要能实现你要的效果。

27.vuex是什么?怎么使用?哪种功能场最使用

是什么:vue框架中的数据共享;状态管理:有五种,分别是 State、 Getter、Mutation 、Action、 Module
使用:新建一个目录store,安装导入store模块
场景:单页应用中,组件之间的状态。音乐播放、登录状态、加入购物车

28.浅拷贝和深拷贝

浅拷贝只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存。但深拷贝会另外创造一个一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象。

29.Vue中key 是用来做什么的?为什么不推荐使用Index 作为key

30.介绍下三种事件对象的属性列表

1.鼠标事件对象 MouseEvent

e.clientX 返回鼠标相对于浏览器窗口可视区的X坐标

e.clientY 返回鼠标相对于浏览器窗口可视区的Y坐标

e.pagex 返回鼠标相对于文档页面的×坐标IE9+支持

e.pageY 返回鼠标相对于文档页面的Y坐标 IE9+支持

e.screenX 返回鼠标相对于电脑屏幕的×坐标

e.screenY 返回鼠标相对于电脑屏幕的Y坐标

2.键盘事件和对象

keydown:在键盘上按下某个键时触发。如果按住某个键,会不断触发该事件,但是 Opera 浏览器不支持这种连续操作。该事件处理函数返回 false 时,会取消默认的动作(如输入的键盘字符,在 IE 和 Safari 浏览器下还会禁止keypress 事件响应)。

keypress:按下某个键盘键并释放时触发。如果按住某个键,会不断触发该事件。该事件处理函数返回 false 时,会取消默认的动作(如输入的键盘字符)。

keyup:释放某个键盘键时触发。该事件仅在松开键盘时触发一次,不是一个持续的响应状态。

3.触摸事件对象:

TouchEvent 是一类描述手指在触摸平面(触摸屏、触摸板等)的状态变化的事件。这类事件用于描述一个或多个触点,使开发者可以检测触点的移动,触点的增加和减少,等等...

touchstart

手指触摸到一个DOM元素时触发 类似于pc端的mouseover

touchmove

手指在一个DOM元素上滑动时触发 类似于pc端的mousemove

touchend

手指从一个DOM元素上移开时触发 类似于pc端的mouseout

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值