【博学谷学习记录】超强总结,用心分享 _ 前端开发 干货分享-面试题总结(3)


什么是箭头函数,有什么特征

使用 "箭头" ( => ) 来定义函数. 箭头函数相当于匿名函数, 并且简化了函数定义
箭头函数的特征:
	○ 箭头函数没有this, this指向定义箭头函数所处的外部环境
	○ 箭头函数的this永远不会变,call、apply、bind也无法改变
	○ 箭头函数只能声明成**匿名函数**,但可以通过表达式的方式让箭头函数具名
	○ 箭头函数没有原型prototype
	○ 箭头函数不能当做一个构造函数 因为 this 的指向问题
	○ 箭头函数没有 arguments 在箭头函数内部访问这个变量访问的是外部环境的arguments, 可以使用 ...代替

如果同时发出两个请求a和b,且a请求的响应较慢,b请求的响应较快,那么最终结果取决于这两个请求是如何处理的?

在单个线程JavaScript中,实际上只能并行执行一个请求。当我们使用异步代码时,JavaScript引擎会先发出a请求,但不会停止等待a请求的响应,而是立即发出b请求并开始等待它的响应。一旦b请求成功完成并返回结果,JavaScript引擎将调用它的回调函数以处理此结果。但是,如果此时a请求仍未返回响应,它的回调函数将仍然等待直到该响应到达为止。

结果是,b请求非常快,因此可以尽快获得结果,而a请求需要更长时间才能完成。因此b请求的结果将首先被处理和渲染到页面上,然后是a请求响应的结果。这可能导致一些页面元素或功能需要等待很长时间才能正常工作,直到具有较慢响应时间的a请求已经完成。

为了避免这种情况,可以考虑一些解决方案,例如使用更高效的服务器、优化所请求资源的大小,或在可能的情况下将多个请求合并为一个。此外,还可以在用户界面上提供一定的反馈信息,告知用户正在处理请求并可能需要等待较长时间。


valueOf

当a=?以下等式成立

if(a==1 && a==2 && a==3){
    console.log('success')
}

解:如果等式一边是对象,一边是数值,则调用对象中的valueOf方法取得原始值再比较

let a={
    value:1,
    valueOf:()=>{
        console.log(a.value)
        return a.value++
    }
}

axios特点: 基于promise封装的HTTP客户端

  • 浏览器端发起XMLHttpRequests请求
  • node端发起http请求
  • 支持Promise API
  • 自动转换json数据
  • 监听请求和返回
  • 对请求和返回进行转化
  • 取消请求
  • 客户端支持抵御XSRF攻击

浏览器的垃圾回收机制

js具有自动垃圾回收机制,会定期对那些不再使用的变量、对象所占用的内存进行释放,原理就是找到不再使用的变量,然后释放掉其占用的内存。

js中有 局部变量 和 全局变量。全局变量的生命周期会持续到页面卸载;而局部变量声明在函数内,生命周期从函数执行开始,直到函数执行结束,之后局部变量不再使用,所占用的内存就会别释放。如果局部变量使用外部变量,产生闭包,就不会回收。

垃圾回收的方式

引用计数法,标记清除法

如何减少垃圾回收

1、对数组对象进行优化:比如要清空一个数组|对象,可以赋值[] | {} (null)
2、循环中的函数表达式,如果可以复用,尽量放在函数外

内存泄漏

内存泄漏:程序没有释放不再使用的内存
意外的全局变量: 由于使用未声明的变量,而意外的创建了一个全局变量,而使这个变量一直留在内存中无法被回收。
被遗忘的计时器或回调函数: 设置了 setInterval 定时器,而忘记取消它,如果循环函数有对外部变量的引用的话,那么这个变量会被一直留在内存中,而无法被回收。
脱离 DOM 的引用: 获取一个 DOM 元素的引用,而后面这个元素被删除,由于一直保留了对这个元素的引用,所以它也无法被回收。
闭包: 不合理的使用闭包,从而导致某些变量一直被留在内存当中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,很高兴为您解答这个问题。 在深度学习中,数据增强是一种常用的技术,它可以通过对原始数据进行变换、裁剪、旋转、翻转等操作,来扩充训练集,从而提高模型的泛化能力和鲁棒性。在图像领域,常用的数据增强方法包括随机裁剪、随机旋转、随机翻转、色域变换等。下面,我将为您介绍如何使用 Python 对图像进行随机数据增强。 1. 随机裁剪 随机裁剪是一种简单而有效的数据增强方法,它可以通过对原始图像进行随机裁剪,来扩充训练集。在 Python 中,我们可以使用 PIL 库中的 Image 模块来实现随机裁剪。 ```python from PIL import Image import random def random_crop(img, crop_size): w, h = img.size left = random.randint(0, w - crop_size) top = random.randint(0, h - crop_size) right = left + crop_size bottom = top + crop_size return img.crop((left, top, right, bottom)) ``` 2. 随机旋转 随机旋转是一种常用的数据增强方法,它可以通过对原始图像进行随机旋转,来扩充训练集。在 Python 中,我们可以使用 PIL 库中的 Image 模块来实现随机旋转。 ```python from PIL import Image import random def random_rotate(img, angle_range): angle = random.uniform(-angle_range, angle_range) return img.rotate(angle) ``` 3. 随机翻转 随机翻转是一种简单而有效的数据增强方法,它可以通过对原始图像进行随机翻转,来扩充训练集。在 Python 中,我们可以使用 PIL 库中的 Image 模块来实现随机翻转。 ```python from PIL import Image import random def random_flip(img, flip_prob): if random.random() < flip_prob: return img.transpose(Image.FLIP_LEFT_RIGHT) return img ``` 4. 色域变换 色域变换是一种常用的数据增强方法,它可以通过对原始图像进行色彩变换,来扩充训练集。在 Python 中,我们可以使用 PIL 库中的 Image 模块来实现色域变换。 ```python from PIL import Image import random def random_color(img, color_range): r, g, b = img.split() r = r.point(lambda i: i + random.randint(-color_range, color_range)) g = g.point(lambda i: i + random.randint(-color_range, color_range)) b = b.point(lambda i: i + random.randint(-color_range, color_range)) return Image.merge('RGB', (r, g, b)) ``` 以上就是使用 Python 进行随机数据增强的一些常用方法,希望对您有所帮助。如果您有任何问题,请随时联系我。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值