Google Earth Engine(GEE)——通过矢量数据属性建立各类图表(各类图代码)

OpenStack基础知识及其部署(持续更新)!

  返回  

常见面试题(1)

2021/8/21 0:22:48 浏览:

个人总结

  • 一、谈谈你对闭包的理解
  • 二、谈谈你对内存泄漏的理解
  • 三、解决跨域的方法


一、谈谈你对闭包的理解

简单来说,闭包的本质就是在一个函数内部创建另一个函数

闭包的三大优点:
1.闭包可以保护函数内部的变量名,避免命名冲突
2.闭包可以使用函数内部的变量,使得使用的变量不会被垃圾回收机制回收
3.内部函数可以访问函数外部的变量

缺点:
1.因为被引用的函数不会被垃圾回收机制回收,就会增大内存消耗,造成内存泄漏。
解决方法:在函数退出之前,把引用过的且不再使用的变量都删除,或者把他们设置为null

2.闭包涉及跨域问题,他会导致性能损失。
解决方法:把涉及跨作用域的变量储存在局部变量中,然后直接去访问局部变量,这样就可以减轻对执行速度的影响

二、谈谈你对内存泄漏的理解

内存泄漏指不再用到的资源没有及时得到释放

导致内存泄漏的情况:
1.意外的全局变量。调用完函数后,变量却没有被回收,导致内存泄漏。
解决方法:使用严格模式,因为在严格模式会阻止创建意外的全局变量

2.闭包。闭包内引用的变量没有得到释放,导致内存泄漏。
解决方法:在函数退出之前,把引用过的且不再使用的变量都删除,或者把他们设置为null

3.未清除dom元素的引用。dom元素移除,但对dom元素的引用未被清除,导致内存泄漏

4.定时器。通过计时器注册某个回调函数,而回调函数中存在某个dom元素或者被引用的变量时,即使页面被销毁,定时器也无法被正常回收,就导致内存泄漏,因此需要手动去释放这些计时器

三、解决跨域的方法

(后三种方法了解即可)
1.jsonp
网页可以通过添加一个script元素,向服务器请求json数据,服务器收到请求后通过一个指定的回调函数的参数传回来
2.cors
它是通过自定义请求头和浏览器进行沟通的。如果只是普通跨域,只需在服务端设置(允许访问控制来源)assess-control-allow-origin,而带cookie的跨域则在前后端都在进行设置,前端设置xhr.withCredentials=true,后端设置(允许访问控制凭据)assess-control-allow-credentials
3.nginx代理跨域
使用nginx模拟一个虚拟的服务器,因为服务器与服务器之间不存在跨域的问题。发送请求:客户端>nginx>服务端,返回数据:服务端>nginx>客户端
4.window.name+ifame
5.location.hash+ifame
6.document.domain

联系我们

如果您对我们的服务有兴趣,请及时和我们联系!

服务热线:18288888888
座机:18288888888
传真:
邮箱:888888@qq.com
地址:郑州市文化路红专路93号