面试常见问题

127 阅读4分钟

一、vue和react的区别

1.vue是响应式的数据双向绑定的系统,react是单向数据流,没有双向绑定
2.vue语法简单,适用于小型项目创建,而react更适用于web端和APP开发,侧重于大型项目
3.vue拥有更快的渲染速度和更小的体积,react拥有更大的生态圈
4.vue的框架是MVVM,由MVC发展而来;react前端组件化,由后端组件化发展而来
5.模板渲染方式:vue的渲染语法是拓展的HTML的方法;react是jsx
6.vue组件引用分全局注册和局部注册,react是通过import相应组件再在模板中引用

二、vue的优点

1.轻量级框架,只关注视图层,体积小
2.易于学习,国人开发,不存在语言障碍
3.双向数据绑定:保留了angular的特点,在数据操作方面更方便
4.组件化:保留了react的优点,实现了HTML的封装和重用
5.虚拟dom
6.视图,数据,结构分离:数据更改更简单,不需要进行逻辑代码的修改,只需要操作数据就能完成相关数据

三、什么是redux

redux是react的数据状态管理模式
如何搭建
action:这个方法用来触发reducer的处理逻辑,一个type表示这个字符串,另一个data表示要传递的参数
reducers:用来定义store里面的数据和逻辑处理。处理逻辑一般使用Switch case来选择对应的action传递过来的type类型进行处理
store:导出reducer封装好的数据

四、localStorage和sessionStorage区别

1.localStorage的生命周期是永久的,sessionStorage生命周期为当前窗口或标签页,一旦被永久关闭,所有用sessionStorage存储的数据将被清空
2.相同浏览器的不同页面间可以共享相同的 localStorage(页面属于相同域名和端口),但是不同页面或标签页间无法共享sessionStorage的信息

五、vue中为什么data是函数而不是对象

因为对象是引用类型,当复用组件时,由于数据对象指向同一个data对象,当在一个组件修改data时,其他重用的组件的data也会同时修改,而使用返回对象的函数,每次返回的都是新对象,引用地址不同,就不会出现这样的问题

六、闭包

简单来说就是打通一条函数外部内访问到函数内部作用域的通道,正常情况下函数外部是访问不到这个内部作用域的
优点:可以隔离作用域,不造成全局污染
缺点:用于闭包长期驻留内层,则长期这样会导致内层泄漏
解决内存泄漏方法:将暴露全外部的闭包变量社为null
适合场景:for和定时器结合使用,封装组件,for和dom结合使用,可以在优化性,节流防抖时使用,导航栏获取下标

七、Get和post的区别

1.Get在浏览器回退是无害的,而post会再次提交请求
2.Get请求只能进行url编码,post支持多种编码方式
3.Get比post更不安全,参数直接暴露在地址栏上,所以不能传递敏感信息
4.Get请求参数会被完整保留在浏览器历史里,post的不会

八、Promise代表一个异步操作,三个状态

Pending初始状态,是成功或失败状态
Fulflled操作成功
Rejected操作失败	

九、解决跨域(为什么会产生跨域:端口、域名、协议不同)

1.使用jsonp:只能解决get请求,post请求无法解决。它比较繁琐,前端需要通过地址栏传值给后端,后端将值和数据一并返回过来,前端通过回调函数解决
2.通过代理解决跨域,比如,vue下vue.config.js中DeServer配置跨域,跨域配置多个;react需要安装插件http-proxy-middleware解决,再新建一个setupProxy文件解决跨域,跨域配置多个
在开发过程中解决跨域,但是在打包完跨域问题依然存在,并没有实质性解决问题
1.使用nginx转发(运维配置nginx)
2.后端解决跨域

十、提高浏览器性能的方法

1.浏览器缓存 (需要服务器配置缓存,直接在浏览器缓存中获取静态资源 css、js、图片)
2.cdn加速(cdn全称content delivery network,即内容分发网络,使用户就近获需内容,降低网络堵塞,提高用户访问响应速度和命中率 )
3.vue路由配置懒加载
4.http压缩运输
5.css压缩 精灵图 字体图标
6.服务器网络宽带