IMWeb前端秋招训练营--前端作业10

经典面试题

1.哪些地方会出现css阻塞,哪些地方会出现js阻塞?

答:css阻塞:当CSS后面跟着嵌入的JS的时候,该CSS就会出现阻塞后面资源下载的情况;

js阻塞:所有浏览器在下载JS的时候,会阻止一切其他活动,比如其他资源的下载,内容的呈现等等。直到JS下载、解析、执行完毕后才开始继续并行下载其他资源并呈现内容。为了提高用户体验,新一代浏览器都支持并行下载JS,但是JS下载仍然会阻塞其它资源的下载(例如.图片,css文件等)。

Javascript无阻塞加载具体方式

将脚本放在底部。<link>还是放在head中,用以保证在js加载前,能加载出正常显示的页面。<script>标签放在</body>前。

成组脚本:由于每个<script>标签下载时阻塞页面解析过程,所以限制页面的<script>总数也可以改善性能。适用于内联脚本和外部脚本。

非阻塞脚本:等页面完成加载后,再加载js代码。也就是,在window.onload事件发出后开始下载代码。
(1)defer属性:支持IE4和fierfox3.5更高版本浏览器
(2)动态脚本元素:文档对象模型(DOM)允许你使用js动态创建HTML的几乎全部文档内容。代码如下:

<script>
    var script=document.createElement("script");
    script.type="text/javascript";
    script.src="file.js";
    document.getElementsByTagName("head")[0].appendChild(script);
</script>

这里相当于给head下面插入了一个script的标签。当script.src所对应的文件下载以后,再而后执行。
此技术的重点在于:无论在何处启动下载,文件额下载和运行都不会阻塞其他页面处理过程。即使在head里(除了用于下载文件的http链接)。

参考:http://www.cnblogs.com/hgonlywj/p/4857151.html

2.CSS选择符有哪些?哪些属性可以继承?优先级算法如何计算?内联和important哪个优先级高?

答:CSS选择符有哪些:!important >#id >.class >tag,!important 最高优先级 IE6不支持;

class 可继承、font-size font-family color, 列表 UL LI DL DD DT 可继承;
不可继承 :border padding margin width height ;

优先级就近原则,样式定义最近者为准; 载入样式以最后载入的定位为准;

link方式:写在html文档head里面;@import方式:写在css文档里面引入样式表;

区别:1.页面被加载的时候,link-会同时被加载,而@import引用的CSS会等到页面被加载完再加载;
2.link样式可以被js改变,@import引入的样式不可以;
3.link方式的样式的权重高于@import的权重;

CSS权重就是页面显示的时候会挑权重高的先显示,权重相同的话按结构顺序;怎么确定权重,权重记忆近似口诀:从0开始,一个行内样式+1000,一个id+100,一个属性选择器或类或者伪类+10,一个标签,或者伪元素+1。

3.在JavaScript我们会遇到闭包,请你们根据自己的理解分析一下什么是闭包?闭包有什么好处?使用闭包要注意什么?

答:什么是闭包:闭包是可访问上一层函数作用域里变量的函数,即便上一层函数已经关闭;

好处:模拟面向对象的代码风格;更优雅,更简洁的表达出代码;在某些方面提升代码的执行效率;

注意:是否有必要使用闭包,可能会造成内存泄露,代码冗余。

转自知乎:
JS闭包的真正意义:https://www.zhihu.com/question/34510484?sort=created
图解js闭包:https://zhuanlan.zhihu.com/p/27857268

4.如何阻止事件冒泡和默认事件(程序)

答:冒泡事件:我们都知道冒泡就像水底气泡浮到水面这一过程。冒泡事件即是事件从最底层逐个经过上面一级级事件的过程,就是冒泡事件。那么如何有效的阻止冒泡事件的发生?其实在非IE浏览器中提供了一个事件对象 stopPropagation,那么在IE浏览器中有没有一个对象去阻止冒泡事件呢,答案是肯定的,通过cancelBubble事件对象可以阻止。

默认事件:浏览器的默认事件就是浏览器自己的行为,比如我们在点击<a href=”#”>的时候,浏览器跳转到指定页面。还有,当我们滚动鼠标时页面会向下滚动,但我们按空格键和按方向键时页面也会向下滚动,为了更好的用户体验,这时我们就需要阻止这种行为的发生。

    // 阻止事件冒泡  
    function stopBubble(e) {  
      if(e && e.stopPropagation){  
          e.stopPropagation();  
      } else {  
        window.event.cancelBubble = true;  
      }  
    };  
    // 阻止浏览器的默认事件  
    function stopDefault(e){  
      if(e && e.preventDefault) {  
        e.preventDefault();  
      } else {  
        window.event.returnValue = false;  
      }  
      return false;  
    };  

两道思考题~

1.谈谈垃圾回收机制方式及内存管理.

不是很清楚,百度找了CSDN的博文:http://blog.csdn.net/oliver_web/article/details/53957021

2.开发过程中遇到的内存泄露情况,如何解决的?

呐呐呐,作为一个非专业前端,还是引用博文吧!http://blog.csdn.net/OLiver_web/article/details/53958571

上述答案部分来自互联网。欢迎指正、探讨。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值