面试题会总

252 阅读2分钟

1、数组去重的方法

ES6语法var arr = [1,2,3,1,1,6,4,8] var newArr = [...new Set(arr)] console.log(newArr);

2、两个数组的合并

ES6语法展开运算符var arr = [...arr1,...arr2]

##3、vuex state:{}:唯一公共数据源,不允许直接修改里面的值,通过this.store.state来获取值
mutations:{}:只能通过mutation来变更State里的值,通过this.store.commit('对应的函数名') actions:{}:如果通过异步操作来变更数据,必须通过Action而不是Mutation,通过 this.$store.dispatch('对应的函数名') getters:{}:相当于vue中的计算属性

4、var let const的显著区别

答:const定义的变量不可以修改,而且必须是初始化 var定义的变量可以修改。如果不初始化会输出undefined,不会报错 let是块级作用域,函数内部使用let定义后,对函数外部无影响

5、js的基本数据类型

答:undefined boolean string number

复杂数据类型: 答:object

6、前端项目优化,从工程化,渲染,加载时分析

打包文件中的app.js文件放入cdn,加快页面首次加载速度 提取公共方法,减少js代码量 vue-router路由全部改成懒加载路由,该页面被点开时才加载该页面.vue组件,提高首页加载速度。

7、git常用命令 版本回退命令

git reset

8、水平居中

1.margin: 0 auto;水平 2.text-align: center;水平 3.行高,垂直 4.表格,center,middle;水平垂直 5.display:table-cell;模拟表格,all 6.绝对定位,50%减自身宽高 7.绝对定位,上下左右全0,margin:auto 8.绝对定位加相对定位。不需要知道宽高 9.IE6,IE7:给父元素设一个font-size:高度/1.14,vertical-align:middle

9,纯css实现三角形

// 通过设置border .box { width:0px; height:0px;

        border-top:50px solid rgba(0,0,0,0);
        border-right:50px solid  rgba(0,0,0,0);
        border-bottom:50px solid green;
        border-left:50px solid  rgba(0,0,0,0);
        }

10、 高度不定,宽100%,内一div高不确定,如何实现垂直居中?

verticle-align: middle; 绝对定位50%加translateY(-50%) 绝对定位,上下左右全0,margin:auto

11、 Promise优缺点

优点: 解决回调地狱, 对异步任务写法更标准化与简洁化 无法取消Promise,一旦新建它就会立即执行,无法中途取消

12、闭包

函数嵌套函数,内部函数使用外部函数的局部变量 延伸了作用域的范围,让局部变量常驻内存

13、for in 和 for of区别

for in遍历数组会遍历到数组原型上的属性和方法, 更适合遍历对象 使用for of可以成功遍历数组的值, 而不是索引, 不会遍历原型

14、localStorage 与 sessionStorage

共同点: 都保存在浏览器端, 且同源 localStorage 与 sessionStorage 统称webStorage,保存在浏览器,不参与服务器通信,大小为5M 生命周期不同: localStorage永久保存, sessionStorage当前会话, 都可手动清除 作用域不同: 不同浏览器不共享local和session, 不同会话不共享session Cookie: 设置的过期时间前一直有效, 大小4K.有个数限制, 各浏览器不同, 一般为20个.携带在HTTP头中, 过多会有性能问题.可自己封装, 也可用原生

15浏览器事件机制中事件触发三个阶段

事件捕获阶段: 从dom树节点往下找到目标节点, 不会触发函数 事件目标处理函数: 到达目标节点 事件冒泡: 最后从目标节点往顶层元素传递, 通常函数在此阶段执行. addEventListener第三个参数默认false(冒泡阶段执行),true(捕获阶段执行). 阻止冒泡见以上方法

15什么是跨域?为什么浏览器要使用同源策略?你有几种方式可以解决跨域问题?了解预检请求嘛?

跨域是指一个域下的文档或脚本试图去请求另一个域下的资源 防止XSS、CSFR等攻击, 协议+域名+端口不同 jsonp; 跨域资源共享(CORS)(Access control); 服务器正向代理等

16、如何判断js运行在浏览器中还是node中?

判断有无全局对象global和window

17、http和https

http: 最广泛网络协议,BS模型,浏览器高效。 https: 安全版,通过SSL加密,加密传输,身份认证,密钥 https相对于http加入了ssl层, 加密传输, 身份认证;

18、登录后,前端做了哪些工作,如何得知已登录

前端存放服务端下发的cookie, 简单说就是写一个字段在cookie中表明已登录, 并设置失效日期 或使用后端返回的token, 每次ajax请求将token携带在请求头中, 这也是防范csrf的手段之一

19、 http状态码

1**: 服务器收到请求, 需请求者进一步操作 2**: 请求成功 3**: 重定向, 资源被转移到其他URL了 4**: 客户端错误, 请求语法错误或没有找到相应资源 5**: 服务端错误, server error 301: 资源(网页等)被永久转移到其他URL, 返回值中包含新的URL, 浏览器会自动定向到新URL 302: 临时转移. 客户端应访问原有URL 304: Not Modified. 指定日期后未修改, 不返回资源 403: 服务器拒绝执行请求 404: 请求的资源(网页等)不存在 500: 内部服务器错误

20、vue父子组件传递参数

父 -->子: 通过props 子 -->父: 通过 ?refs 或 $emit

21、vue3.0的更新和defineProperty优化

放弃 Object.defineProperty ,使用更快的原生 Proxy (访问对象拦截器, 也成代理器) 提速, 降低内存使用, Tree-shaking更友好 支持IE11等 使用Typescript

22、你是如何将一个 HTML 元素添加到 DOM 树中的?

可以用 jQuery 方法 appendTo() 将一个 HTML 元素添加到 DOM 树中

23、$(this) 和 this 关键字在 jQuery 中有何不同?

$(this) 返回一个 jQuery 对象 而 this 代表当前元素,

24、vue里ref ($refs)用法

ref 有三种用法:   1、ref 加在普通的元素上,用this.ref.name 获取到的是dom元素   2、ref 加在子组件上,用this.ref.name 获取到的是组件实例,可以使用组件的所有方法。   3、如何利用 v-for 和 ref 获取一组数组或者dom 节点

25、call和.apply的区别是什么?

call是调用一个对象的一个方法 apply是应用某一对象的一个方法

26、se6转es5怎么转

es6转es5,插件,npm install babel-preset-es2015 babel cli

27、vue响应原理是什么

Object.defineProperty

28、less特性

less是一门 CSS 预处理语言的一种,它使用类似CSS的语法,它扩充了 CSS 语言,为CSS赋予了动态语言的特性。

29、请说出你可以传递给jQuery方法的四种不同值。

选择器(字符串),HTML(字符串),回调函数,HTML元素,对象,数组,元素数组,jQuery对象等。

30、请指出和.fn的区别,或者说出$.fn的用途。

.extend(obj);是为了扩展jquery本身,为类添加新的方法。.fn.extend(obj);给JQUERY对象添加方法。 2..fn中的fn是什么意思,其实是prototype,即.fn=$.prototype;

31、es6中的map

map的提出是为了解决js中object中键只能是字符串的限制map的键可以是各种类型的值都可以当作键 const m = new Map();

32、new的四步骤

new构造函数在内存中创建一个空的对象; this指向这个空对象; 执行构造函数里面的代码,给构造函数添加属性和方法; 返回这个对象

33、移动端适配

安装 lib-flexible 与 postcss-pxtorem 在main.js文件引入 lib-flexible 进行postcss配置,如单独postcss.config.js问价在则在文件内设置如没有可在package.json文件内配置

34、http工作原理

HTTP协议:简单对象访问协议,对应于应用层 ,HTTP协议是基于TCP/IP连接的

35、es6有哪些新特性

1、let和const 2、箭头函数 3、模板字符串 4、promise对象

36、c3有哪些新特性

1、颜色 2文字阴影 3、边框 4、过渡 5、背景