你遇到的前端面试题都有什么?


1. cookie session 的用途和区别 。以及有效期
1、cookie数据存放在客户的浏览器上 。session数据放在服务器上 。
2、cookie不是很安全 。别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session 。
3、session会在一定时间内保存在服务器上 。当访问增多 。会比较占用你服务器的性能
考虑到减轻服务器性能方面 。应当使用COOKIE 。
4、单个cookie保存的数据不能超过4K 。很多浏览器都限制一个站点最多保存20个cookie 。
2. vue的数据绑定原理 。mvvm与mvc的区别
MVVM:
m:model数据模型层v:view视图层vm:ViewModelvue中采用的是mvvm模式 。这是从mvc衍生过来的MVVM让视图与viewmodel直接的关系特别的紧密 。就是为了解决mvc反馈不及时的问题
图片说明一下:

你遇到的前端面试题都有什么?

文章插图
说到MVVM就要说一下双向绑定和数据劫持的原理 。
MVC:
m:model数据模型层v:view视图层c:controller控制器
原理:c层需要控制model层的数据在view层进行显示
MVC两种方式 。图片说明:
你遇到的前端面试题都有什么?

文章插图
总结:
mvvm与mvc最大的区别:MVVM实现了view与model的自动同步 。也就是model属性改变的时候 。我们不需要再自己手动操作dom元素去改变view的显示 。而是改变属性后该属性对应的view层会自动改变 。
不懂得可以复制链接查看:
https://www.pianshen.com/article/3716256399/
3. storage 的区别 sessionStorage localStorage
localStorage的生命周期是永久性的 。假若使用localStorage存储数据 。即使关闭浏览器 。也不会让数据消失 。除非主动的去删除数据 。使用的方法如上所示 。localStorage有length属性
sessionStorage 的生命周期是在浏览器关闭前 。也就是说 。在整个浏览器未关闭前 。其数据一直都是存在的 。sessionStorage也有length属性 。其基本的判断和使用方法和localStorage的使用是一致的
4.v-model双向数据原理
有一个文本框 通过v-bind绑定了value属性 值为myname 是我们在vue实例中定义的属性传统我们获取文本框值方法 可能通过getElementById找到文本框 然后获取其value属性但是vue中直接通过v-bind绑定了value属性 所以不需要像之前那样获取值所以在后面的按钮中获取name值 直接获取vue实例对象data里面的myname属性即可
【数据为尊 ----数据映射到浏览器 如果数据v-model后修改(肯定input)然后到数据在有数据映射到浏览器页面 ----映射关系统称】
5.keepAlive用过吗?什么作用?
缓存路由组件
使用的是vue的一个组件 。参考vue的官方文档
使用这个东西可以保证我们在切换组件的时候 。原来显示的组件不被销毁
-----【保障组件的数据不会被切换路由而销毁数据】
<keep-alive include=\"Home\">Home是对应的组件对象的名字 。不是路由的名字
<router-view></router-view>
</keep-alive>
6.多维数组拍平
数组拍平也称数组扁平化 。就是将数组里面的数组打开 。最后合并为一个数组
一红六种方法吧……
了解的请看:https://www.cnblogs.com/guan-shan/p/10165737.html
7.跨域的原因 解决方案
跨域是指一个域下的文档或脚本试图去请求另一个域下的资源 。这里跨域是广义的 。
这样就可以说同源策略----协议---端口---域名
原生的src和href可以解决跨域
代理可以解决
请求头也可以携带浏览器提示的也可以解决
一般都是后端解决跨域问题
【别的需要了解看下方链接】
https://blog.csdn.net/qq_41604383/article/details/100770100
8.uniApp兼容问题
§ 如果你使用cli创建项目(即项目根目录是package.json) 。不管用什么ide 。即便是用HBuilderX 。切记cli项目的编译器是在项目下的 。HBuilderX不管怎么升级都不会影响编译器版本 。你需要手动npm update来升级编译器 。以及如果你想要安装less、scss等预编译器 。也需要自己npm安装在项目下 。而不是在HBuilderX的插件管理里安装 。
§ 如果你使用离线打包 。请注意HBuilderX升级后 。真机运行基座和云打包对应引擎跟随HBuilderX升级 。而你的sdk需要手动升级 。sdk的版本升级一般滞后HBuilderX正式版升级一两天 。
§ 如果你使用自定义基座 。之前制作的自定义基座是不会跟随HBuilderX升级的 。升级HBuilderX后你应该重新制作新版自定义基座 。
§ 如果你使用wgt升级 。新版HBuilderX编译的wgt 。运行到之前的runtime上 。一定要先测试好 。看有没有兼容性问题 。如果有问题 。就不要wgt升级 。整包升级 。

推荐阅读