面试题汇总

Posted yangyuqing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试题汇总相关的知识,希望对你有一定的参考价值。

1. 用一行转换a,b的值

a=1
b=2
a,b=b,a
print(a,b)

内存里存两个东西,一个是1和2的内存地址,一个是名称空间,名称空间存的是变量与值的对应关系

对应关系存的是a这个变量指向的是哪个内存地址,通过内存地址找到内容

a,b=b,a改变了对应关系

 

2. 判断类型

u1 = (1)
tu2 = (1,)
print(tu1,type(tu1))
print(tu2,type(tu2))


tu1 = ([1])
tu2 = ([1],)
print(tu1,type(tu1))
print(tu2,type(tu2))

元组  如果元组里面只有一个元素且不加逗号,那此元素是什么类型就是什么类型

3. 去重

li=[1,2,33,33,2,1,4,5,6,6]
set1=set(li)
print(set1)
li=list(set1)
print(li)

 

4. 深浅拷贝

 1. 赋值运算

技术分享图片
l1 = [1,2,3,[barry,alex]]
l2 = l1

l1[0] = 111
print(l1)  # [111, 2, 3, [‘barry‘, ‘alex‘]]
print(l2)  # [111, 2, 3, [‘barry‘, ‘alex‘]]

l1[3][0] = wusir
print(l1)  # [111, 2, 3, [‘wusir‘, ‘alex‘]]
print(l2)  # [111, 2, 3, [‘wusir‘, ‘alex‘]]
赋值

赋值运算来说,l1和l2指向同一个内存地址,所以他们是完全一样

2. 浅拷贝

技术分享图片
l1 = [1,2,3,[barry,alex]]
l2 = l1.copy()

print(l1,id(l1))  # [1, 2, 3, [‘barry‘, ‘alex‘]] 2380296895816
print(l2,id(l2))  # [1, 2, 3, [‘barry‘, ‘alex‘]] 2380296895048

l1[1] = 222
print(l1,id(l1))  # [1, 222, 3, [‘barry‘, ‘alex‘]] 2593038941128
print(l2,id(l2))  # [1, 2, 3, [‘barry‘, ‘alex‘]] 2593038941896
         
l1[3][0] = wusir
print(l1,id(l1[3]))  # [1, 2, 3, [‘wusir‘, ‘alex‘]] 1732315659016
print(l2,id(l2[3]))  # [1, 2, 3, [‘wusir‘, ‘alex‘]] 1732315659016
浅拷贝

浅拷贝来说,第一层创建的是新的内存地址,而从第二层开始,指向的都是同一个内存地址,所以,对于第二层以及更深的层数来说,保持一致性
列表里面套列表,第一层指向共同的内存,第二层指向不同内存

3. 深拷贝

技术分享图片
import copy
l1 = [1,2,3,[barry,alex]]
l2 = copy.deepcopy(l1)

print(l1,id(l1))  # [1, 2, 3, [‘barry‘, ‘alex‘]] 2915377167816
print(l2,id(l2))  # [1, 2, 3, [‘barry‘, ‘alex‘]] 2915377167048

l1[1] = 222
print(l1,id(l1))  # [1, 222, 3, [‘barry‘, ‘alex‘]] 2915377167816
print(l2,id(l2))  # [1, 2, 3, [‘barry‘, ‘alex‘]] 2915377167048

l1[3][0] = wusir
print(l1,id(l1[3]))  # [1, 222, 3, [‘wusir‘, ‘alex‘]] 2915377167240
print(l2,id(l2[3]))  # [1, 2, 3, [‘barry‘, ‘alex‘]] 2915377167304
深拷贝

深拷贝:列表里套列表,两个分别指向不同的内存地址
对于深copy来说,两个是完全独立的,改变任意一个的任何元素(无论多少层),另一个绝对不改变。

 

以上是关于面试题汇总的主要内容,如果未能解决你的问题,请参考以下文章

前端面试题之手写promise

Python基础---面试题汇总

Java加pring面试题汇总

经典Java面试题汇总及答案解析

Python面试题及答案汇总

.Net 面试题 汇总