ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 网页制作 >> HTML教程 >> 一些事一些情在线收听 近期前端中的 一些常见的面试题

一些事一些情在线收听 近期前端中的 一些常见的面试题(1/3)

来源:网络整理     时间:2017-12-15     关键词:一些事一些情在线收听

本篇文章主要介绍了"一些事一些情在线收听 近期前端中的 一些常见的面试题",主要涉及到一些事一些情在线收听方面的内容,对于HTML教程感兴趣的同学可以参考一下:   近段时间看了不少的前端面试题,很多大牛也对此做了整理。这篇文就算是借花献佛啦。总体来说基本上每家问的问题也差不多,可能不同业务的公司问的问题的侧重点也不太一...

  近段时间看了不少的前端面试题,很多大牛也对此做了整理。这篇文就算是借花献佛啦。总体来说基本上每家问的问题也差不多,可能不同业务的公司问的问题的侧重点也不太一样,有的侧重于移动端适配CSS布局浏览器兼容IE hack,而有的侧重于JS逻辑面向对象设计模式考察等。可能将实际工作中会遇到的问题的场景,以及各种技术的坑作为面试题,这样一则可以看出他的经验多少,二则也可以防止他做笔试题的时候手机搜索结果。

【手写事件模型及事件代理/委托】

  这个算是被问到的最多次数的问题了,首先要求描述下js里面的“事件的三个阶段”,如果没有听说过三个阶段,那基本上就没戏了。分别是捕获,目标,冒泡阶段,低版本IE不支持捕获阶段。然后可能问到IE和W3C不同绑定事件解绑事件的方法有什么区别,参数是什么,以及事件对象e有什么区别等等。

  如果上述都没问题,接下来可能会问“事件的代理/委托”的原理以及优缺点,这是靠事件的冒泡机制来实现的,优点是

1、可以大量节省内存占用,减少事件注册,比如在table上代理所有td的click事件就非常棒
2、可以实现当新增子对象时无需再次对其绑定事件,对于动态内容部分尤为合适

  事件代理的应用常用应该仅限于上述需求下,如果把所有事件都用代理就可能会出现事件误判,即本不应用触发事件的都被绑上了事件,事实上如果有人把页面里的所有事件都绑定到document用委托的,这是极不明智的做法。“所谓酒劲虽好,可不要贪杯哟~”

  之后对方可能要求你手写原生js实现事件代理,并要求兼容浏览器,其实就是考核对事件对象e的了解程度,以及在IE下对应的属性名。其实此时如果你说就是用target,currentTarget,以及IE下的srcElement和this,基本上就可以略过了。

  如果上述都OK的话,那么极有可能要求你实现事件模型,即写一个类或是一个模块,有两个函数,一个bind一个trigger,分别实现绑定事件和触发事件,核心需求就是可以对某一个事件名称绑定多个事件响应函数,然后触发这个事件名称时,依次按绑定顺序触发相应的响应函数。

  这个需求如果对于做过C#的人来说就再熟悉不过了,他根本就是C#中的“委托"(delegate)。而委托与事件几乎是一家子。回到前面说的题目,大致实现思路就是创建一个类或者匿名函数,在bind和trigger函数外层作用于创建一个字典对象,用于存储注册的事件及响应函数列表,bind时,如果字典没有则创建一个,key是事件名称,value是数组,里面放着当前注册的响应函数,如果字段中有,那么就直接push到数组即可。trigger时调出来依次触发事件响应函数即可。

  不过还有很多细节,比如说触发响应函数时的上下文应该是什么,触发响应函数的参数列表应该是什么,如果要求把调用trigger的参数列表都传到响应函数中还要考虑到arguments对象转化为纯数组才行等等。还有一些面试官会追问道事件如何派发也就是事件广播(dispatchEvent)等等,这里不再展开。有关事件的考核点大概也就这么多了。

【前端性能优化】

  这个简直老生常谈,不管是园子里还是园子外,关于前端优化的东西太多太多了,不同角度不同方向也有很多,网络性能优化,加快访问速度,浏览器并行加载数量,怎样实现原生JS异步载入,CDN加载的原理,如何将不同静态资源发布到多个域名服务器上,发布后这些静态字段的url路径该怎么批量改写,用什么工具进行项目打包,css打包后的相对路径怎么转换为绝对路径,用什么工具进行项目模块依赖管理,怎么进行cookie优化等等。

  这个说起来就很多了,尽可能的按照自己做过的优化来讲,否则面试官随便挑一项深究都可能会卡壳,与其这样还不如不讲。

【闭包原理及应用】

  这个问题的经典性,几乎所有面试官都会问到这个问题,什么情况下会发生闭包,为什么需要闭包,什么场景下需要,闭包闭了谁,怎么释放被闭包的变量内存,闭包的优点是什么,缺点是什么等。

  关于闭包,有的是上述提问,有的是直接做闭包面试题。关于概念网上一搜一大把,关于闭包面试题。

【手写Function.bind函数】

  首先会要求解释下这个函数的作用,以及在什么场景下需要用到它,最后手写一个Function.bind函数。

只要掌握核心几点就没有问题:

一些事一些情在线收听相关图片

一些事一些情在线收听相关文章