首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

30 道 Vue 面试题,内含详细讲解(上)

的缓存特性,避免每次获取值时,都要重新计算; 当我们需要在数据变化时执行异步或开销较大的操作时,应该使用 watch,使用 watch 选项允许我们执行异步操作 ( 访问一个 API ),限制我们执行该操作的频率...由于 JavaScript 的限制,Vue 不能检测到以下数组的变动: 当你利用索引直接设置一个数组项时,例如:vm.items[indexOfItem] = newValue 当你修改数组的长度时,例如...可以在钩子函数 created、beforeMount、mounted 中进行调用,因为在这三个钩子函数中,data 已经创建,可以将服务端端返回的数据进行赋值。...但是本人推荐在 created 钩子函数中调用异步请求,因为在 created 钩子函数中调用异步请求有以下优点: 能更快获取到服务端数据,减少页面 loading 时间; ssr 不支持 beforeMount...在钩子函数 mounted 被调用前,Vue 已经将编译好的模板挂载到页面上,所以在 mounted 中可以访问操作 DOM。

1.1K30

JavaScript数组方法总结

在排序时,sort()方法会调用每个数组项的 toString()转型方法,然后比较得到的字符串,以确定如何排序。...arrCopy3设置了两个参数,终止下标为负数,当出现负数时,将负数加上数组长度的值(6)来替换该位置的数,因此就是从1开始到4(不包括)的子数组。...在比较第一个参数与数组中的每一项时,会使用全等操作符。 三.数组的遍历 四。...对新数组变化不会影响原数组的改变 (5)map() :对数组的每一项运行给定函数,返回每次函数调用结果所组成的数组 之后修改生成的数组不会影响原数组 五....第一次执行回调函数的时候,pre为1,cur为2,第二次,pre为3(1加2的结果),cur为3(数组的第三项),依次类推,直到将数组的每一项都访问一遍,最后返回结果。

1.7K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    亿级流量架构之资源隔离思路与方法

    线程池隔离与信号量隔离对比 这儿同上面的线程隔离,不多赘述,简单叙述一下hystrix的两种隔离方式的区别: 隔离方式 是否支持超时 是否支持熔断 隔离原理 是否是异步调用 资源消耗 线程池隔离 支持,...可直接返回 支持,当线程池到达maxSize后,再请求会触发fallback接口进行熔断 每个服务单独用线程池 可以是异步,也可以是同步。...看调用的方法 大,大量线程的上下文切换,容易造成机器负载高 信号量隔离 不支持,如果阻塞,只能通过调用协议(如:socket超时才能返回) 支持,当信号量达到maxConcurrentRequests后...回调 最重要的是,信号量的调用是同步的,也就是说,每次调用都得阻塞调用方的线程,直到结果返回。...有两种方法解决: 1)禁止IP 2)禁止UA 从nginx日志观察,访问者的代理IP经常变,但是访问UA却是固定的,因而可以禁止UA。

    88410

    读Zepto源码之Deferred模块

    从源码中可以看到 resolve 、reject 和 notify 方法,调用的是对应的 With 后缀方法,如果当前上下文为 deferred 对象,则传入 promise 对象作为上下文。...promise 对象,调用新 promise 对象中的 promise 方法,新 promise 对象切换状态时, 并将当前 deferred 对象对应的状态切换方法传入,在新 promise 切换状态时执行...len: 异步对象的个数。 remain: 剩余个数。这里还有个判断,是为了确定只有一个参数时,这个参数是不是异步对象,如果不是,则 remain 初始化为 0 。其他情况,初始化为当前的个数。...deferred: deferred 对象,如果只有一个异步对象(只有一个参数,并且不为异步对象时, remain 为 0 ),则直接使用当前的 deferred 对象,否则创建一个新的 deferred...方法时都调用。

    85800

    JavaScript的对象介绍和常用内置对象介绍

    2) 访问数组元素 数组变量名[索引] 1.如果索引小于数组的长度,返回对应项的值 var arr = ["terry","larry","boss"]; arr[0] ; //访问数组中第一个元素...6) 排序 reverse() 反转数组项的顺序 sort() 1.默认排序:该方法会调用每个数组项的toString() 转型方法,然后排序 2.自定义排序: a.该方法可以接受一个比较函数作为参数...,从该参数指定的位置开始,到当前数组末尾的所有项 当接受两个参数,起始到结束之间的项,但是不包含结束位置的项 例如: var arr = ["aa","bb","cc","dd"]; 1.接受一个参数时...1,从后往前匹配,返回第一个匹配元素的位置 3.Math对象 1)常用方法 1.比较方法 Math.min() 求一组数中的最小值 Math.max() 求一组数中的最大值 Math.min...Math.random() 返回大于0小于1的一个随机数 2)其他方法:(了解即可,即用即查) abs(num) 返回num绝对值 exp(num) 返回Math.E的num次幂 log(num

    1.5K10

    高并发系统设计的15个锦囊

    池化技术 在高并发的场景下,数据库连接数可能成为瓶颈,因为连接数是有限的。 我们的请求调用数据库时,都会先获取数据库的连接,然后依靠这个连接来查询数据,搞完收工,最后关闭连接,释放资源。...异步 回忆一下什么是同步,什么是异步呢?以方法调用为例,它代表调用方要阻塞等待被调用方法中的逻辑执行完成。...这种方式下,当被调用方法响应时间较长时,会造成调用方长久的阻塞,在高并发下会造成整体系统性能下降甚至发生雪崩。...异步调用恰恰相反,调用方不需要等待方法逻辑执行完成就可以返回执行其他的逻辑,在被调用方法执行完毕后再通过回调、事件通知等方式将结果反馈给调用方。 因此,设计一个高并发的系统,需要在恰当的场景使用异步。...压测完要分析整个调用链路,性能可能出现问题是网络层(如带宽)、Nginx层、服务层、还是数据路缓存等中间件等等。

    84030

    亿级流量网站架构核心技术【笔记】(一)

    ,通过进程隔离使得某一个子系统出现问题时不会影响到其他子系统 ?...Cache的更新,然后异步扣减库存到DB,保证最终一致性即可,此时可以将DB降级为Cache * 爬虫降级:大促活动时,可以将爬虫流量导向静态页或者返回空数据,从而保护后端稀缺资源 * 风控降级:抢购/...(熔断器),然后通过异步线程去探测服务是否恢复了 3.故障降级:要调用的远程服务挂掉了,则可以直接降级,降级后的处理方案:默认值(比如库存挂了返回默认) 、兜底数据(比如广告挂了返回提前准备好的静态页面...访问日志 7.隔离集群压测是指将对外提供服务的部分服务器从线上集群摘除,然后将线上流量引流到该集群进行压测,这种方式很安全 8.单机压测是指对集群中的一台机器进行压测,从而评估出单机极限处理能力,发现单机的瓶颈点...(单机房/多机房)相同应用系统,当其中一组出现问题时,可以切换到另一个分组 C.应急预案 1.系统分级:可以按照交易核心系统和交易支撑系统进行划分 2.针对核心系统进行全链路分析,从用户入口到后端存储

    2K20

    这个场景题很常见,一定要会!

    池化技术 在高并发的场景下,数据库连接数可能成为瓶颈,因为连接数是有限的。 我们的请求调用数据库时,都会先获取数据库的连接,然后依靠这个连接来查询数据,搞完收工,最后关闭连接,释放资源。...,下图所示: 如果服务C出现问题,比如是因为慢SQL导致调用缓慢,那将导致B也会延迟,从而A也会延迟。堵住的A请求会消耗占用系统的线程、IO、CPU等资源。...以方法调用为例,它代表调用方要阻塞等待被调用方法中的逻辑执行完成。这种方式下,当被调用方法响应时间较长时,会造成调用方长久的阻塞,在高并发下会造成整体系统性能下降甚至发生雪崩。...异步调用恰恰相反,调用方不需要等待方法逻辑执行完成就可以返回执行其他的逻辑,在被调用方法执行完毕后再通过回调、事件通知等方式将结果反馈给调用方。 因此,设计一个高并发的系统,需要在恰当的场景使用异步。...压测完要分析整个调用链路,性能可能出现问题是网络层(如带宽)、Nginx层、服务层、还是数据缓存等中间件等等。

    53620

    腾讯自研Java协程Kona Fiber的进阶之路

    图1.1展示了线程模型的常见做法,图中左侧的queue是一个任务队列,线程从任务队列里取任务执行,遇到IO操作时线程让出cpu。...万个线程),继而限制单机的并发数; 对于类似图1.1的IO密集型业务(每个任务都要去访问外部数据库/网络),线程执行IO操作时,会让出CPU,CPU会切换到一个可以执行的线程。...这显然提高了对编程者的要求。 使用异步编程框架,由于一个线程上同时包含多个执行上下文,因此线程的调用栈通常难以理解,如果出现问题,很难诊断定位。因此异步编程的维护通常比经典的线程模型更困难。...使用协程,用户可以按照线程模型进行编程,同时获得接近异步编程的性能,且可以根据并发数创建任意数量的协程(单机可以创建几十万协程,Loom支持单机几千万的协程数量) ▍OpenJDK社区已有Loom,为什么还要自研...3、提供更好的切换效率 Loom采用stack copy的方案实现协程切换,当协程A切换到协程B时,需要将协程A的执行栈从线程拷贝到Java Heap,将协程B的栈从Java Heap中拷贝到当前线程的执行栈上

    2.3K10

    前端性能优化之 JavaScript

    ,存储一个 JavaScript 数组对象 对象成员 具有字符串索引,存储一个 JavaScript 对象 ---- 总结 直接量与局部变量访问速度非常快,数组项和对象成员需要更长时间 局部变量比域外变量访问速度快...,访问速度越慢 将对象成员、数组项、域外变量存入局部变量能提高 js 代码的性能 三、dom 编程 对 DOM 操作代价昂贵,在富网页应用中通常是一个性能瓶颈。...基于函数的迭代 尽管基于函数的迭代显得更加便利,它还是比基于循环的迭代要慢一些。每个数组项要关联额外的函数调用是造成速度慢的原因。...你可以向请求报文中添加任意的头信息和参数(包括 GET 和 POST),并读取从服务器返回的头信息,以及响应文本自身 请求数据 五种常用技术用于向服务器请求数据 XMLHttpRequest (XHR)...使用性能分析器找出脚本运行时速度慢的部分,检查每个函数所花费的时间,以及函数被调用的次数,通过调用栈自身提供的一些线索来找出哪些地方应当努力优化

    1.8K30

    js中reduce的用法

    }, init); arr 表示原数组; prev 表示上一次调用回调时的返回值,或者提供的初始值 init; cur 表示当前正在处理的数组元素; index 表示当前正在处理的数组元素的索引,若提供...},0); 由于传入了初始值0,所以开始时prev的值为0,cur的值为数组第一项3,相加之后返回值为3作为下一轮回调的prev值,然后再继续与下一个数组项相加,以此类推,直至完成所有数组项的和并返回...,cur); }); 由于未传入初始值,所以开始时prev的值为数组第一项3,cur的值为数组第二项9,取两值最大值后继续进入下一轮回调。...如果找不到,就将该项继续添加到初始化数组中 ④ …… ⑤ 将需要去重处理的数组中的第n项在初始化数组中查找,如果找不到,就将该项继续添加到初始化数组中 ⑥ 将这个初始化数组返回 4....其它reduceRight()方法 该方法用法与reduce()其实是相同的,只是遍历的顺序相反,它是从数组的最后一项开始,向前遍历到第一项。 5.

    5.7K40

    Spring Boot的并发编程

    Spring Boot并发基础知识 在考虑Spring Boot应用程序中的并发性时,值得考虑的关键因素有: 最大线程数 - 这是为处理对应用程序的请求而分配的最大线程数 共享外部资源 - 调用外部共享资源...如果你使用Tomcat作为嵌入式服务器(默认),则可以使用属性server.tomcat.max-threads 来控制要允许的线程数。0为默认设置 - 表示使用Tomcat时默认值为200。...了解这一点很重要,因为你可能需要增加此数字以有效地使用提供服务的资源。特别是处理外部资源时也会出现问题...... 共享外部资源的问题 调用数据库和其他REST端点可能需要很长时间。...异步和响应式微服务的想法本身就很有趣。建议使用Spring Boot2的WebFlux。 在Spring Boot中进行异步调用 如何在Spring Boot中启用异步方法调用?...不要假设第三方库是线程安全的。大多数都不是,并且必须控制对共享状态的访问。 4. 如果你要依赖它 - 学习正确的并发性编程。 总结 Spring中的并发和多线程是重要的主题。

    4.4K60

    应用系统性能优化的几个思路

    ,任一环节出问题都将影响这支交易的性能; 3、从应用来看,高并发的情况下前端容易出现并发数过高导致的异常,后端DB数据处理容易因前端过多交易导致的DB连接数超限; 4、关联系统,尤其是总线系统如采用同步方式容易导致总线系统瘫痪...,出现问题后可以快速采取措施进行隔离或扩容。...3、减少总线节点服务的依赖:由多节点组成的逻辑交互改为端对端的访问方式,一方面减少影响交易的因素,另一方面减少自身性能问题影响其它应用系统。...4、增加异步访问机制:同步的机制在性能出现问题时,会在短时间花完最大连接数,哪怕这个最大并发数是正常情况下的10倍。这方面可以直接改异步通讯,也可以引入一些队列工具实现。...2)编码上:SQL优化、索引新增、数据定时清理,这个优化方式最快,最容易出效果;减少数据库访问次数、减少数据库一次返回的结果集; 7、前端限流、削峰机制,前端系统因为逻辑简单往往可以支持更多请求,但后端系统则不同

    1.6K90

    熬夜整理的vue面试题,面试加油

    如果用户通过URL进行强制访问,则会直接进入404,相当于从源头上做了控制登录后,获取用户的权限信息,然后筛选有权限访问的路由,在全局路由守卫里进行调用addRoutes添加路由import router...,这里的判断也很简单,因为菜单的name与路由的name是一一对应的,而后端返回的菜单就已经是经过权限过滤的如果根据路由name找不到对应的菜单,就表示用户有没权限访问如果路由很多,可以在应用初始化的时候...我们不仅可以在路由切换时懒加载组件,还可以在页面组件中继续使用异步组件,从而实现更细的分割粒度。...在路由配置里调用 beforeEnter。解析异步路由组件。在被激活的组件里调用 beforeRouteEnter。调用全局的 beforeResolve 守卫 (2.5+)。导航被确认。...watch 原理watch 本质上是为每个监听属性 setter 创建了一个 watcher,当被监听的属性更新时,调用传入的回调函数。

    2K40

    JavaScript之引用类型

    为了实现排序,sort()方法会调用每个数组项的toString()转型方法,然后比较得到的字符串,以确定如何排序。...getUTCDate() 根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。 getUTCDay() 根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。...getUTCMonth() 根据世界时从 Date 对象返回月份 (0 ~ 11)。 getUTCFullYear() 根据世界时从 Date 对象返回四位数的年份。...Math对象包含的方法如下: 方法 描述 abs(x) 返回数的绝对值。 acos(x) 返回数的反余弦值。 asin(x) 返回数的反正弦值。...sin(x) 返回数的正弦。 sqrt(x) 返回数的平方根。 tan(x) 返回角的正切。 toSource() 返回该对象的源代码。 valueOf() 返回 Math 对象的原始值。

    1.4K10

    Python 元组完全指南1

    访问元组项,您可以通过在方括号内引用索引号来访问元组项:示例,打印元组中的第二个项:```Pythonthistuple = ("apple", "banana", "cherry")print(thistuple1...在指定范围时,返回值将是一个包含指定项的新元组。...如果省略起始值,则范围将从第一项开始:示例,此示例返回从开头到“kiwi”之前(但不包括)的项:```Pythonthistuple = ("apple", "banana", "cherry", "orange...", "kiwi", "melon", "mango")print(thistuple:4)如果省略结束值,范围将一直到列表的末尾:示例,此示例返回从“cherry”到末尾的项:```Pythonthistuple..."banana", "cherry", "orange", "kiwi", "melon", "mango")print(thistuple2:)如果要从元组末尾开始搜索,请指定负索引:示例,此示例返回从索引

    19700

    JavaScript数组Array的基本操作

    toString() , toLocaleString(), valueOf() 数组调用 valueOf() 返回的是数组本身 调用 toString() 返回所有数组项组成的字符串,以逗号分隔...,实际上是调用了每一项的 toString() 方法后组成最后的结果 调用 toLocaleString() 与 toString() 一样,也是调用了每一项的 toLocaleString() 方法构成...出 1 a.unshift('r','s');// a: s,r,2,3,4 重排序方法 小插曲,比较字符串时,比较两字符串的第一个字符,相等继续比较两字符串的第二个字符,大于小于直接返回,不会管后面的字符...,参数2有 0 和 1 两种情况 0表示从当前开始位置向后插入参数3传入的数组项 1表示先删除参数1指定位置的数组项,再从当前开始位置向后插入参数3传入的数组项 var a = [0,1,2,4,5];...,接受两个参数,参数1为要查找的项,参数2代表从哪个下标开始 indexOf() 从头开始 lastIndexOf() 从尾部往前找 var a = [1,2,3,4,5,3] console.log

    59530

    MQ发布确认

    发布确认原理   生产者将信道设置成confirm模式,一旦信道进入confirm模式,所有在该信道上面发布的消息都将会被指派一个唯一的ID(从1开始),一旦消息被投递到所有匹配的队列之后,broker...confirm模式最大的好处在于他是异步的,一旦发布一条消息,生产者应用程序就可以在等信道返回确认的同时继续发送下一条消息,当消息最终得到确认之后,生产者应用便可以通过回调方法来处理该确认消息,如果RabbitMQ...,耗时"+(end-begin)+"ms"); } 批量确认发布 上面那种方式非常慢,与单个等待确认消息相比,先发布一批消息然后一起确认可以极大地提高吞吐量,当然这种方式的缺点就是:当发生故障导致发布出现问题时...如何处理异步未确认消息 最好的解决的解决方案就是把未确认的消息放到一个基于内存的能被发布线程访问的队列,比如说用ConcurrentLinkedQueue这个队列在confirm callbacks与发布线程之间进行消息的传递...批量发布消息 批量同步等待确认,简单,合理的吞吐量,一旦出现问题但很难推断出是那条 消息出现了问题。 异步处理 最佳性能和资源使用,在出现错误的情况下可以很好地控制,但是实现起来稍微难些

    1.2K40

    Redis:Redisson看门狗续锁实现分布式锁的原理,及如何避坑

    Redis实现分布式的要求 ---- 1、互斥性; 防止多个进程及线程并发访问共享资源,使得资源串行访问操作。...tryLock方法调用分析: 当锁超时时间为-1时,而且获取锁成功时,会启动看门狗定时任务自动续锁: 每次续锁都要判断锁是否已经被释放,如果锁续期成功,自己再次调度自己,持续续锁操作。...unlock方法调用分析: 为了保证原子性,用lua实现的原子性释放锁操作: 释放锁流程: 发布订阅机制是为了通知调用org.redisson.RedissonLock#lock()方法等待锁的线程...但由于Redis的主从复制(replication)是异步的,这可能会出现在数据同步过程中,master宕机,slave来不及同步数据就被选为master,从而数据丢失。...,就会出现问题。

    3.2K30
    领券