ML岗位面试:上海某公司算法岗位(偏机器学习,互联网数字行业)技术面试考点之XGBoost的特点、python的可变不可变的数据类型、赋值浅拷贝深拷贝区别
导读:其实,考察的知识点,博主都做过,但是,emmm,这些知识点,在我写代码中,几乎不会用到,so,会遗忘。所以,还需要下功夫,去多回忆回忆啦。
目录
XGBoost的特点
1、XGBoost的损失函数
Python语言基础知识点考察
1、可变不可变的数据类型
2、赋值、浅拷贝、深拷贝区别
往期文章:ML之XGBoost:XGBoost算法模型(相关配图)的简介(XGBoost并行处理)、关键思路、代码实现(目标函数/评价函数)、安装、使用方法、案例应用之详细攻略
python中主要有6种标准数据类型,分为可变和不可变两类。
不可变类型:该数据类型对象所指定内存中的值不可以被改变。
(1)、在改变某个对象的值时,由于其内存中的值不可以被改变,所以,会把原来的值复制一份再进行改变,这样就会计算机会开辟一段新的内存空间来存储新的值。
可变类型:该数据类型的对象所指定的地址上面的值可以被改变。
(1)、变量被改变后,其所指向的内存地址上面的值,直接被改变,没有发生复制行为,也没有发生开辟新的内存地址行为,不会重新开辟空间。
不可变类型—非嵌套数据 | 可变类型—可嵌套数据 |
Number数字 Tuple元组 |
List列表 Dictionary字典 Set集合 |
结合拷贝 例子:a = 521 |
结合拷贝 例子:a = [[521], {'521':521}] |
首先,需要明确一点,浅拷贝和深拷贝之间的区别只适用于容器对象(包含其他对象的对象,如列表或类实例)。对于非容器对象没有区别,都是对象拷贝,相当于重新赋值,生成一个新的对象。
敲重点,面试时,下边三句回答即可!
1、赋值—对象赋值实际上是简单的对象引用
比较简单,赋值就是对物体进行贴标签操作,作用于同一物体。
2、浅拷贝—只拷贝父对象
A shallow copy constructs a new compound object and then (to the extent possible) inserts references into it to the objects found in the original.
(1)、浅拷贝是指拷贝的只是原对象元素的引用,换句话说,浅拷贝产生的对象本身是新的,但是它的内容不是新的,只是对原对象的一个引用。
(2)、浅拷贝是指把存放变量的地址值传给被赋值,最后两个变量引用了同一份地址。
|
常见的浅拷贝操作有:
|
1、浅拷贝的代码实现
import copy
b=copy.copy(a)
3、深拷贝—完全拷贝父对象及其子对象
A deep copy constructs a new compound object and then, recursively, inserts copies into it of the objects found in the original.
(1)、深拷贝是指被赋值的变量开辟了另一块地址用来存放要赋值的变量的值(内容)。
1、深拷贝的应用: 主要是希望在改变新的数组(对象)的时候,不改变原数组(对象),即原来的东西还要使用。
|
常见的深拷贝操作有:
|
2、深拷贝的代码实现
import copy
b=copy.deepcopy(a)