前端常见面试题-2

金九银十,开始充电,准备冲刺,祝各位都找到心仪的好工作!!!冲冲冲
在这里简单总结一下最近看的面试题。共勉
回顾一下vue内容。

1~keep-alive 是什么?说一下

keep-alive用来缓存组件,避免多次加载相应的组件,减少性能消耗,简单一点来说就是从页面1链接到其他页面后回退到页面1不用在重新执行页面1的代码,只会从缓存中加载之前已经缓存的页面1,这样可以减少加载时间及性能消耗,提高用户体验性。
但实际项目中,需要配合vue-router共同使用
include - 字符串或正则表达,只有匹配的组件会被缓存
exclude - 字符串或正则表达式,任何匹配的组件都不会被缓存

2~data为什么是一个函数?

当data是一个函数的时候,每一个实例的data属性都是相互独立的,不会相互影响。这是因为js本身的特性带来的,跟vue本身的设计无关。
js本身的面向对象编程也是基于原型链和构造函数,应该会注意原型链上添加一般都是一个函数方法而不会去添加一个对象了。

~3vue3.0和2.0的区别?

  1. 默认进行懒观察(lazy observation)。
    在 2.x 版本里,不管数据多大,都会在一开始就为其创建观察者。当数据很大时,这可能会在页面载入时造成明显的性能压力。3.x 版本,只会对「被用于渲染初始可见部分的数据」创建观察者,而且 3.x 的观察者更高效。
  2. 更精准的变更通知。
    比例来说:2.x 版本中,使用 Vue.set 来给对象新增一个属性时,这个对象的所有 watcher 都会重新运行;3.x 版本中,只有依赖那个属性的 watcher 才会重新运行。
  3. 3.0 新加入了 TypeScript 以及 PWA 的支持
  4. 部分命令发生了变化:
    下载安装 npm install -g vue@cli
    删除了vue list
    创建项目 vue create
    启动项目 npm run serve
  5. 默认项目目录结构也发生了变化:
    移除了配置文件目录,config 和 build 文件夹
    移除了 static 文件夹,新增 public 文件夹,并且 index.html 移动到 public 中
    在 src 文件夹中新增了 views 文件夹,用于分类 视图组件 和 公共组件

4~$nextTick在什么情况下使用?

我常用的场景是在进行获取数据后,需要对新视图进行下一步操作或者其他操作时,发现获取不到dom。因为赋值操作只完成了数据模型的改变并没有完成视图更新。在这个时候需要用到this.$nextTick函数。
虽然 Vue.js 通常鼓励开发人员沿着“数据驱动”的方式思考,避免直接接触 DOM,但是有时我们确实要这么做。比如你在Vue生命周期的created()/mounted()钩子

5~数据更新,但是视图不更新的情况怎么解决?

由于 Vue 会在初始化实例时对属性执行 getter/setter 转化过程,所以属性必须在 data 对象上存在才能让 Vue 转换它,这样才能让它是响应的。在一个组件实例中,只有在data里初始化的数据才是响应的,Vue不能检测到对象属性的添加或删除,没有在data里声明的属性不是响应的。
解决办法:
使用 Vue.set(object, key, value) 方法将响应属性添加到嵌套的对象上
Vue.set(vm.someObject, 'b', 2) 或者 this.$set(this.someObject,'b',2) (这也是全局 Vue.set 方法的别名)

6~路由守卫说一下?

router.beforeEach((to,from,next)=>{}) (这个一笔带过,感兴趣的小伙伴百度吧,我就不赘述了)

7~vue路由改变传参怎么监听变化?

1.第一种
 watch: { '$route'(to, from) { // 在此处监听 }
2.第二种
beforeRouteUpdate (to, from, next) {//这里监听}

8~vue跳转页面的传参?

query传参,相当于get请求,页面跳转时参数会在地址栏中显示  接收参数:this.$route.query.id
params传参,相当于post请求,页面跳转时参数不会在地址栏中显示  接收:this.$route.params.id

(https://blog.csdn.net/louyuqi520/article/details/109816753)

9~作用域插槽和其他插槽的区别?

1.插槽slot
在渲染父组件的时候,会将插槽中的先渲染。
创建组件虚拟节点时,会将组件的儿子的虚拟节点保存起来。当初始化组件时,通过插槽属性将儿子进行分类{a:[vnode],b[vnode]}
渲染组件时会拿对应的slot属性的节点进行替换操作。(插槽的作用域为父组件,插槽中的HTML模板显示不显示、以及怎样显示由父组件来决定)
有name的父组件通过html模板上的slot属性关联具名插槽。没有slot属性的html模板默认关联匿名插槽。
2.作用域插槽slot-scope
作用域插槽在解析的时候,不会作为组件的孩子节点,会解析成函数,当子组件渲染时,会调用此函数进行渲染。
或者可以说成作用域插槽是子组件可以在slot标签上绑定属性值,在父组件可以拿到子组件的数据,通过子组件绑定数据传递给父组件。(插槽的作用域为子组件)
//有name的属于具名插槽,没有name属于匿名插槽
普通插槽渲染的位置是在它的父组件里面,而不是在子组件里面
作用域插槽渲染是在子组件里面

10~说下vue的响应式原理?

实现mvvm的双向绑定,是采用数据劫持结合发布者-订阅者模式的方式,通过Object.definePropertype()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。

11~vue中mixins的理解及应用

组件在引用之后相当于在父组件内开辟了一块单独的空间,来根据父组件props过来的值进行相应的操作,单本质上两者还是泾渭分明,相对独立。(一笔带过了,深入了解的百度吧)

再回顾一下js的内容

12~你常用数组有哪些?

push(),pop(),shift(),unshift(),splice(),sort(),reverse()可被vue检测到
filter(), concat(), slice()。这些不会改变原始数组,但总是返回一个新数组。

13~es6知道多少?

模板字符串、解构赋值、箭头函数、let 与 const、class类,Promise,Generator,export、import,Default导出,Proxy代理
更多戳[https://www.imooc.com/article/19684](https://www.imooc.com/article/19684]

14~async,await 说一下?

在ES6中封装了Generator函数的语法糖async函数,但是将其定义在了es7中。ES7定义出的async 函数,终于让 JavaScript 对于异步操作有了终极解决方案。Async 函数是 Generator函数的语法糖。使用 关键字 Async 来表示,在函数内部使用 await来表示异步。相较于 Generator,Async函数的改进在于下面几点:Generator 函数的执行必须依靠执行器,而 Async() 函数自带执行器,调用方式跟普通函数的调用一样。Async 和 await相较于 * 和 yield 更加语义化。async 函数返回值是 Promise 对象,比 Generator函数返回的 Iterator 对象方便,可以直接使用 then()方法进行调用。
https://www.cnblogs.com/lunlunshiwo/p/8922500.html

15~去重

https://zhuanlan.zhihu.com/p/100610150

16~怎么判断空对象?

Object.keys()方法会返回一个由一个给定对象的自身可枚举属性组成的数组。
如果我们的对象为空,他会返回一个空数组。

Object.keys(obj).length === 0 ? '空' : '不为空'

17~判断数组的的方法?

const arr=[ 1,2,3,4]
① Array.isArray
Array.isArray(arr)  // true  在IE9以下版本,不支持
② instanceof
arr instanceof Array  // true   instanceof关键字,用instanceof判断,会比Array.isArray判定的范围要广泛
③ polyfill中,就是如此实现:
if (!Array.isArray) {
            Array.isArray = function (arg) {
                return Object.prototype.toString.call(arg) === "[object Array]"
            }
        }
        Object.prototype.toString.call(arr) === '[object Array]'  // true
④ constructor
 arr.constructor === Array // true
 arr.__proto__.constructor === Array //true

18~元素水平垂直居中

1.position:absolute/fixed;top:0;right:0;bottom:0;left:0; margin:auto;(不用知道元素的宽高)
2.position:absolute/fixed;top:50%;left:50%; margin-top:-(height/2);margin-left:-(width/2);
(需知道元素的宽高)
3.flex布局

19~手写jsonp,最有成就感的功能,开发流程,cors除了头不同外还有什么不同,建议:细节问题。

这个没有固定答案。自己临场发挥吧,多看看代码
(http://www.ruanyifeng.com/blog/2016/04/cors.html)

好了,先总结这么多吧。祝各位跳槽成功。冲冲冲!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容

  • 根据自己的面试经验整理出一些常见的问题, 答案是自己写的, 有些不一定正确或存在疏漏, 仅供参考 1. promi...
    之幸甘木阅读 1,152评论 0 0
  • 一、HTML 1.1 你是如何理解HTML语义化的? 语义化指的就是根据内容的结构化,选择合适的标签,便于开发者阅...
    陈光展_Gz阅读 1,011评论 0 8
  • vue.js的两个核心:数据驱动、组件系统 1.什么是MVVM? MVVM是Model-View-ViewMode...
    小薇同学v阅读 740评论 1 6
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,520评论 28 53
  • 信任包括信任自己和信任他人 很多时候,很多事情,失败、遗憾、错过,源于不自信,不信任他人 觉得自己做不成,别人做不...
    吴氵晃阅读 6,180评论 4 8