前端面试题:vue响应式原理 Vdom diff vue的响应式原理,也算是面试中再常见不过的题目了,之前遇见这道题目只会说:利用的是Object.defineProperty进行的数据劫持,监听数据的变化,通知watcher进行的数据更新。总的来说这是没错的,但是只要面试官进一步的问,那一定是满脸的问号。昨天一天也是没有面试机会,所以就研究了一天这个东西,算是搞明白了(自我感觉),今天就把他来写成文章,希望大佬看到哪里不对给出指导,本文可能会有点长。上正文。现在最流行的框架非vue,react莫属,他们流行起来的原因,离不开响应式,因为它在做一些.
前端面试题:跨域的实现 已经不止一次的被问到这个问题了,今天来总结了一下前端跨域的实现方式,虽然有的方式自己在项目中没有用过,但是还是需要了解一下的。首先需要了解一下什么是跨域,跨域就是说在一个域下去请求另一个域下的资源,那什么是另一个域呢?就是说在两个域之间,不管是协议,域名甚至端口,只要有一个不一样,就属于不同的域,不同的域之间去请求数据,这就是跨域。其实我们通常所说的跨域是狭义的,是由浏览器同源策略限制的一类请求场景。什么是同源策略呢,同源策略/SOP(Same origin policy)是一种约定,由Nets
前端性能优化 减少请求数量【合并】 如果不进行文件合并,有如下3个隐患 1、文件与文件之间有插入的上行请求,增加了N-1个网络延迟 2、受丢包问题影响更严重 3、经过代理服务器时可能会被断开 但是,文件合并本身也有自己的问题 1、首屏渲染问题 2、缓存失效问题 所以,对于文件合并,有如下改进建议 1、公共库合并 2、不同页面单独合并【图片处理】 1、雪碧图 CSS雪碧图是以前非常流行的技术,把网站上的一些图片整合到一张单独的图片中,可以减少网
前端面试题:继承的实现 这个是让我崩溃的那个面试题,不是说这个题有多难,而是说自己粗心吧,只是简单的看了实现继承的方式有原型继承,构造函数继承,组合继承,class继承,但是怎么实现的都不知道。昨天面试完总结了一下,索性就把它写成文章,分享加自我回顾。1、原型链继承首先说的继承就是原型链的继承,因为在问我继承前先问了原型和原型链,原型链的集成有什么特点呢,就是子类的prototype指向父类的一个实例。这样的话子类没有的属性方法会在他的原型中去找到,就是说子类的实例的__proto__会指向父类的实例,这个时候就可以拿到父
前端面试题:几种排序方法(JS版) 相对于后端的朋友来说,前端的一些面试题会出一些算法题,但是更多的来说是一些简单的算法题,比如说数组的排序,反转二叉树,爬楼梯的动态规划等简单问题,今天整理了一下排序的方法。1、冒泡排序这个应该说是最常用的排序方式了,实现的方法及就是两层循环,逐个的对比,以从小到大排序为例,如果遇见后边比前边元素小的情况下,交换在数组中的位置。function Bubbling(arr){ for(var i = 0 ; i < arr.length ; i++){ for(var
前端面试题:谈谈This指向 除了那个闭包的输出问题,另一个让人头疼的,非This的指向问题莫属了,this有时候真的是把人搞得蒙蒙的,但是究竟如何this的指向呢,今天上午也是探索了一番。首先要说的是,this的指向在函数定义的时候是确定不了的,只有当函数执行的时候,才知道this到底指向谁,实际上this最终的指向是那个调用它的对象。举个例子:function fn(){ console.log(this);}当面试官给了这么一个函数去问this的指向的时候,虽然平时一些面试问题说不知道很减分,但是这个问
前端面试题:闭包 前段时间一直在投一些中小型公司吧,感觉好久都收不到反馈,也不知道是被淘汰了还是没出结果呢,最近开始投一些大一点的公司准备尝试一下,就在昨天接到面试电话的时候,接受到了滴滴的毒打。跟一些面试不一样的是不只是一些基础的基本概念吧,比如说什么是原型和原型链,说一下继承,讲一下this指向之类的。更多的是为什么要这样用,手写算法,预测输出结果之类的面试题。印象最深刻的应该就是那道关于闭包的题目了吧,是预测一个程序的输出结果,当时看的我是晕头转向,大厂的面试也是招架不住,真的是把我给面到自闭,感觉自己啥也不是,估
前端面试题:JS的事件委托-事件的捕获与冒泡 说一下事件委托,或者对事件代理的理解。算是很常见的面试题了,应该说我遇见很多次了。刚开始遇见的时候发现自己不太懂,应该说之前自己用过,但是不知道他叫这个名字,后来也是总结面试题,去搜索了解了一下下,现在可以说是真正的搞懂了吧,今天把它分享出来,方便以后查看。那什么叫事件委托呢?它还有一个名字叫事件代理,JavaScript高级程序设计(红宝书)上讲:事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。要搞懂这个概念还得从事件冒泡开始,那什么是事件冒泡呢?事件捕获(even
前端面试题:set和map 有时候会被问到set和map的区别,下面我总结了一下set和map的特点和区别。以及他们在一些算法题中的妙用。MapMap是一组键值对的结构,具有极快的查找速度。借用廖雪峰老师的例子,假设要根据同学的名字查找对应的成绩,如果用Array实现,需要两个Array:const names = ['Michael', 'Bob', 'Tracy'];const scores = [95, 75, 85];给定一个名字,要查找对应的成绩,就先要在names中找到对应的位置,再从scores取
前端面试题:手写call,apply和bind 前段时间一朋友面试,被要求手写call,apply和bind,发现自己也不会写,所以就私底下去看了一下这方面的东西,后来发现这个还是挺容易实现的,现在也是分享出来,一方面方便自己查看复习,另一方面希望可以给需要的朋友一点帮助。正式开始之前也是先去了解一下call,apply,bind。其实呢这三兄弟都是为了改变函数的上下文而存在的,或者可以简单点说就是用来改变this指向的。但是呢这三兄弟的用法还是有区别的。1、apply和call会让当前函数立即执行,而bind会返回一个函数,后续需要的时候再调用
前端面试题:JS中的原型和原型链 JS的原型和原型链算是前端面试题的热门题目了,也是参加了几场面试,感觉好多次都被问到对原型和原型链的理解,所以今天也是索性把他给整理出来,一方面方便自己以后复习查看,另一方面也是给大家分享一下我对原型和原型链的理解。ES6之前中并没有引入类(class)的概念,JavaScript并非通过类而是直接通过构造函数来创建实例。什么是原型每一个javascript对象(除null外)创建的时候,就会与之关联另一个对象,这个对象就是我们所说的原型,每一个对象都会从原型中“继承”属性。这么说可能会有点
这一周我这样度过(35) 一周一度的博客更新时间,说实话感觉现在的我有些松懈了。现在偶尔会看见大一的小学弟小学妹们的博客,有时候不禁会发出一丝丝的感慨,真想回到大一的时候,那时候真的是天天都在担心着自己会不会被淘汰掉,但是也仅仅限于此了,那时候真的只是一门心思的把要学的东西给学会,其他就什么都不用去担心了。过了大二的疯狂做项目的时间,我们17级的大二真的是与众不同的大二,刚生大二的暑假就开始着手项目,一直到大二结束,几...