Interview:算法岗位面试—10.11下午—上海某公司算法岗位(偏机器学习,互联网数字行业)技术面试考点之XGBoost的特点、python的可变不可变的数据类型、赋值浅拷贝深拷贝区别

简介: Interview:算法岗位面试—10.11下午—上海某公司算法岗位(偏机器学习,互联网数字行业)技术面试考点之XGBoost的特点、python的可变不可变的数据类型、赋值浅拷贝深拷贝区别

XGBoost的特点


1、XGBoost的损失函数


往期文章:ML之XGBoost:XGBoost算法模型(相关配图)的简介(XGBoost并行处理)、关键思路、代码实现(目标函数/评价函数)、安装、使用方法、案例应用之详细攻略


Python语言基础知识点考察


1、可变不可变的数据类型


python中主要有6种标准数据类型,分为可变和不可变两类。

不可变类型:该数据类型对象所指定内存中的值不可以被改变。

(1)、在改变某个对象的值时,由于其内存中的值不可以被改变,所以,会把原来的值复制一份再进行改变,这样就会计算机会开辟一段新的内存空间来存储新的值。


可变类型:该数据类型的对象所指定的地址上面的值可以被改变。

(1)、变量被改变后,其所指向的内存地址上面的值,直接被改变,没有发生复制行为,也没有发生开辟新的内存地址行为,不会重新开辟空间。


不可变类型—非嵌套数据 可变类型—可嵌套数据

Number数字

String字符串

Tuple元组

List列表

Dictionary字典

Set集合

结合拷贝

例子:a = 521

copy.copy 和 copy.deepcopy 没有区别,都会开辟新空间存储数据。

结合拷贝

例子:a = [[521], {'521':521}]

copy.copy没有办法保证数据的独立性,拷贝第一层的引用。

copy.deepcopy完全拷贝所有的层级,都会有自己的空间。

2、赋值、浅拷贝、深拷贝区别


       首先,需要明确一点,浅拷贝和深拷贝之间的区别只适用于容器对象(包含其他对象的对象,如列表或类实例)。对于非容器对象没有区别,都是对象拷贝,相当于重新赋值,生成一个新的对象。


敲重点,面试时,下边三句回答即可!


简单的来说,在有指针的情况下,浅拷贝只是增加了一个指针指向已经存在的内存。

深拷贝就是增加一个指针并且申请一个新的内存,使这个增加的指针指向这个新的内存。

应用copy.copy浅拷贝、copy.deepcopy深拷贝功能的时候,会根据当前拷贝的数据类型,可变类型和不可变类型有不同的处理方式。

(1)、对于不可变对象(数字、字符串、元祖),浅拷贝和深拷贝是没有区别的。

(2)、对于可变对象(列表、字典、集合),浅拷贝第一次层引用,而深拷贝是完全拷贝。

1、赋值—对象赋值实际上是简单的对象引用


比较简单,赋值就是对物体进行贴标签操作,作用于同一物体。


赋值:值不变,地址不变;

copy浅拷贝和deepcopy深拷贝:值相等,地址不相等;

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)、浅拷贝是指把存放变量的地址值传给被赋值,最后两个变量引用了同一份地址。


浅拷贝会创建一个新的容器对象(compound object)。

对于对象中的元素,浅拷贝就只会使用原始元素的引用(内存地址)。

常见的浅拷贝操作有:

使用切片操作[:]

使用工厂函数(如list/dir/set)

copy模块的copy()方法

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、深拷贝的应用: 主要是希望在改变新的数组(对象)的时候,不改变原数组(对象),即原来的东西还要使用。


1)深拷贝和浅拷贝一样,都会创建一个新的容器对象(compound object)

2)和浅拷贝的不同点在于,深拷贝对于对象中的元素,深拷贝都会重新生成一个新的对象

常见的深拷贝操作有:

copy.deepcopy

2、深拷贝的代码实现


import copy

b=copy.deepcopy(a)


相关文章
|
3月前
|
测试技术 索引 Python
Python接口自动化测试框架(练习篇)-- 数据类型及控制流程(一)
本文提供了Python接口自动化测试中的编程练习,包括计算器、猜数字、猜拳和九九乘法表等经典问题,涵盖了数据类型、运算、循环、条件控制等基础知识的综合应用。
42 1
|
3月前
|
数据处理 Python
【编程入门必读】Python数据类型大揭秘:掌握这些,让你的代码瞬间高大上!
【8月更文挑战第22天】Python提供多样数据结构支持编程需求。基本数据类型如数值(整型、浮点型、复数)、布尔型、字符串;复合数据类型含列表(有序、可变)、元组(有序、不可变)、字典(键值对)、集合(无序、唯一元素)。还有特殊类型如`NoneType`和`range`。Python内置数据类型转换如`int()`, `float()`, `str()`等方便使用。掌握这些类型有助于编写高效Python代码。
29 0
|
23天前
|
Python
【10月更文挑战第7天】「Mac上学Python 13」基础篇7 - 数据类型转换与NoneType详解
本篇将详细介绍Python中的常见数据类型转换方法以及 `NoneType` 的概念。包括如何在整数、浮点数、字符串等不同数据类型之间进行转换,并展示如何使用 `None` 进行初始赋值和处理特殊情况。通过本篇的学习,用户将深入理解如何处理不同类型的数据,并能够在代码中灵活使用 `None` 处理未赋值状态。
54 2
【10月更文挑战第7天】「Mac上学Python 13」基础篇7 - 数据类型转换与NoneType详解
|
26天前
|
编译器 数据安全/隐私保护 Python
Python--基本数据类型
【10月更文挑战第4天】
|
28天前
|
存储 Python
python数据类型、debug工具(一)
python数据类型、debug工具(一)
|
1月前
|
Python
[oeasy]python036_数据类型有什么用_type_类型_int_str_查看帮助
本文回顾了Python中`ord()`和`chr()`函数的使用方法,强调了这两个函数互为逆运算:`ord()`通过字符找到对应的序号,`chr()`则通过序号找到对应的字符。文章详细解释了函数参数类型的重要性,即`ord()`需要字符串类型参数,而`chr()`需要整数类型参数。若参数类型错误,则会引发`TypeError`。此外,还介绍了如何使用`type()`函数查询参数类型,并通过示例展示了如何正确使用`ord()`和`chr()`进行转换。最后,强调了在函数调用时正确传递参数类型的重要性。
20 3
|
2月前
|
存储 Java C++
30天拿下Python之数据类型
30天拿下Python之数据类型
32 4
|
22天前
|
存储 程序员 Python
Python编程入门:探索变量和数据类型
【10月更文挑战第8天】本文是针对初学者的Python编程入门指南,重点介绍Python中变量的定义和使用以及不同的数据类型。我们将通过实例来理解基本概念,并展示如何在Python程序中应用这些知识。文章旨在帮助初学者建立扎实的基础,使他们能够更自信地编写Python代码。
|
24天前
|
存储 安全 Serverless
Python学习四:流程控制语句(if-else、while、for),高级数据类型(字符串、列表、元组、字典)的操作
这篇文章主要介绍了Python中的流程控制语句(包括if-else、while、for循环)和高级数据类型(字符串、列表、元组、字典)的操作。
28 0
|
28天前
|
存储 程序员 Python
python数据类型、debug工具(二)
python数据类型、debug工具(二)